Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
21 / 44 / 11
Регистрация: 08.02.2018
Сообщений: 443
1

Как вытащить из БД данные без перезагрузки страницы?

17.07.2018, 14:23. Показов 1579. Ответов 51
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пожалуйста помогите мне с моим сайтом.

Объясните мне пожалуйста одно.
У меня есть страница, на нем есть ссылки к примеру Вкусная еда, при нажатии на эту ссылку я хочу открыть php файл с его полными характеристиками из Базы данных, то есть рецепт, цена и т.д.
Но так чтобы страница открывалась без перезагрузки с помощью ajax. Но я не могу вообще понять как вытощить данные из php темболее из бд и передать обратно JS, и как построить такую страницу, к примеру я получаю title и его надо поместить в <title> к примеру я получаю текст его надо поместить в текст на новой страницеПожалуйста объясните мне.

Я получаю доступ к странице .php , но как сделать так чтобы php отправил мне обратно данные из бд и в javascript я смог их поместить в переменные.


пожалуйста помогите мне. если есть возможность через teamwiewer

Вот мой button
HTML5
1
<h4><button onclick="ajax('POST','function/new_stat.php',1)">PHP</button></H4><hr/>
в AJAX переадаю три параметра метод, страница PHP, и третий параметр это id идентификатор для работы с БД.

Вот сам JS
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
function ajax(method,adres,param) {
    var xhttp = new XMLHttpRequest();
    var id = 'id='+encodeURIComponent(param);
    xhttp.open(method,adres,true);
    xhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xhttp.onreadystatechange = function (e) {
        if(xhttp.readyState == 4 && xhttp.status == 200) {
            alert(xhttp.responseText);
        }
    }
    xhttp.send(id);
}
alert работает и выводится строка из Базы данных.
Но мне нужна не одна строка title, а еще и другие строки, как мне все это вместе вытощить и записать в переменные в js
то есть title, text, pruef

вот PHP файл которая принимает этот id
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
class Stat{
    public $id, $text, $title;
    
    public function __construct($id) {
        $this->id = intval($id);
    }
    
    public function viborka() {
        require 'connect.php';
        $connect = new Connect();
        $query = "SELECT * FROM stat_blog WHERE id = ".$this->id;
        $result = $connect->select($query);
        return $result;
    }
    
    public function textM() {
        $vibor = $this->viborka();
        $this->text = $vibor['text'];
        return $this->text;
    }
    
    public function titleM() {
        $vibor = $this->viborka();
        $this->title = $vibor['title'];
        return $this->title;
    }
}
if(isset($_POST['id'])) {
    $id = (int) $_POST['id'];
    $stat = new Stat($id);
    $title = $stat->titleM();
    echo $title;
}
?>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.07.2018, 14:23
Ответы с готовыми решениями:

Как подкачать данные для страницы без ее полной перезагрузки?
Здравствуйте ВСЕ, Кто-нибудь знает техническое решение осуществления подкачки данных для...

Как подкачать данные для страницы без ее полной перезагрузки?
Здравствуйте ВСЕ, Кто-нибудь знает техническое решение осуществления подкачки данных для...

Как обновить данные в сессии при отправке от сервера без перезагрузки страницы
Здравствуйте, подскажите пожалуйста как можно обновить данные в сессии и вывести их на странице без...

AJAX. Как сделать так, чтобы данные обновлялись в таблице без перезагрузки страницы?
Здравствуйте. Есть страница, на которой пользователь может обновить свои Имя и Фамилию. Но при...

51
87 / 48 / 24
Регистрация: 29.11.2016
Сообщений: 243
17.07.2018, 14:46 2
PHP
1
2
$title = '{"title" : "'.$stat->titleM(). '", "text" : "'.$stat->textM().'"}';
    echo $title;
Ну и с pruef сделать функцию и добавить в вывод $title.
1
368 / 234 / 68
Регистрация: 19.07.2016
Сообщений: 833
17.07.2018, 14:52 3
maxoun,

Думаю это не совсем правильная реализация формирования статей . Нужно смотреть в сторону MVC хотя бы.

Добавлено через 2 минуты
Зачем нужен аякс запрос если все равно пользователь практически переходит на другую страницу ? А перерисовывать каждый раз страницу.. Ну не знаю , сомнительное занятие.
1
21 / 44 / 11
Регистрация: 08.02.2018
Сообщений: 443
17.07.2018, 14:55  [ТС] 4
Torovich, подскажите пожалуйста, вот вы сделали json формат, как на стороне клиента я должен его принять, и занести их в переменную?
0
87 / 48 / 24
Регистрация: 29.11.2016
Сообщений: 243
17.07.2018, 14:59 5
Цитата Сообщение от maxoun Посмотреть сообщение
alert(xhttp.responseText);
Сюда
Javascript
1
var data = xhttp.responseText;
1
Просто Лис
Эксперт Python
5731 / 3530 / 1055
Регистрация: 17.05.2012
Сообщений: 10,360
Записей в блоге: 9
17.07.2018, 15:31 6
JSON создаётся не так: json_encode

Javascript
1
JSON.parse()
1
87 / 48 / 24
Регистрация: 29.11.2016
Сообщений: 243
17.07.2018, 15:48 7
Рыжий Лис, а зачем нам json_encode, если у нас ответ уже в json. Если использовать, то сначала создать массив, потом через json_encode на вывод.
1
Просто Лис
Эксперт Python
5731 / 3530 / 1055
Регистрация: 17.05.2012
Сообщений: 10,360
Записей в блоге: 9
17.07.2018, 15:53 8
А если в $stat->titleM() будет содержаться двойная кавычка? Не надо раскидывать грабли на пустом месте.

Да, создаём словарь/массив, заполняем его данными, кодируем в json, отправляем в браузер, декодируем обратно в словарь/объект.
1
87 / 48 / 24
Регистрация: 29.11.2016
Сообщений: 243
17.07.2018, 16:01 9
Рыжий Лис, согласен, тогда так
PHP
1
2
$title = ["title" => $stat->titleM(), "text" => $stat->textM()];
echo json_encode($title);
1
21 / 44 / 11
Регистрация: 08.02.2018
Сообщений: 443
17.07.2018, 16:03  [ТС] 10
Рыжий Лис, а как на стороне клиента применять это?
Если я делаю responseText то туда ставится все подряд.
но мне нужна была что бы к примеру title которая передается через json в js была в переменной title , а текст в переменной text
0
87 / 48 / 24
Регистрация: 29.11.2016
Сообщений: 243
17.07.2018, 16:09 11
Javascript
1
2
var title = data.title;
var text = data.text;
1
21 / 44 / 11
Регистрация: 08.02.2018
Сообщений: 443
17.07.2018, 16:14  [ТС] 12
Torovich, Torovich, сейчс попробую

Добавлено через 1 минуту
Torovich, тогда как лучше будет это сделать
Цитата Сообщение от D_Vik Посмотреть сообщение
Зачем нужен аякс запрос если все равно пользователь практически переходит на другую страницу ? А перерисовывать каждый раз страницу..
Может быть оставить ссылку как есть и только когда открывается новая страница тогда и делать это все?
0
87 / 48 / 24
Регистрация: 29.11.2016
Сообщений: 243
17.07.2018, 16:18 13
Здесь на твоё усмотрение. Главное, чтоб глаз радовало.
0
368 / 234 / 68
Регистрация: 19.07.2016
Сообщений: 833
17.07.2018, 16:22 14
maxoun,

Фиг знает как оно лучше ,но я бы предпочел роутинг по средствам php нежели аякс подгрузку. Если у тебя на странице будет не 2 переменные , а 30 ? И не 1 блок а 5 , по мне так лучше все ето сформировать с помощью php.
0
21 / 44 / 11
Регистрация: 08.02.2018
Сообщений: 443
17.07.2018, 16:25  [ТС] 15
Цитата Сообщение от D_Vik Посмотреть сообщение
по мне так лучше все ето сформировать с помощью php.
но в таком случае оно будет загружаться долго и мучительно не так ли?

Добавлено через 42 секунды
Цитата Сообщение от Torovich Посмотреть сообщение
Здесь на твоё усмотрение. Главное, чтоб глаз радовало.
получается пример который вы мне показали с помощью json, так можно и данные с бд комментарий вытаскивать нет?
0
368 / 234 / 68
Регистрация: 19.07.2016
Сообщений: 833
17.07.2018, 16:27 16
maxoun,

С чего такие выводи вдруг ?
0
87 / 48 / 24
Регистрация: 29.11.2016
Сообщений: 243
17.07.2018, 16:27 17
Цитата Сообщение от maxoun Посмотреть сообщение
данные с бд комментарий
Можно.
0
21 / 44 / 11
Регистрация: 08.02.2018
Сообщений: 443
17.07.2018, 16:33  [ТС] 18
Цитата Сообщение от Torovich Посмотреть сообщение
2
var title = data.title;
var text = data.text;

выводит вот что на f12 сеть

Fatal error: Cannot redeclare class Connect in C:\xampp\htdocs\blog\function\connect.php on line 2

когда пытаюсь делать data.title выводит undenfined
Javascript
1
2
const data = xhttp.responseText;
            alert(data.title);
Добавлено через 3 минуты
Цитата Сообщение от D_Vik Посмотреть сообщение
С чего такие выводи вдруг ?
но как без ajax ты попытаешься такое сделать?
0
87 / 48 / 24
Регистрация: 29.11.2016
Сообщений: 243
17.07.2018, 16:36 19
Цитата Сообщение от maxoun Посмотреть сообщение
Fatal error: Cannot redeclare class Connect in C:\xampp\htdocs\blog\function\connect.php on line 2
Это уже ошибка в соединении с БД.
0
368 / 234 / 68
Регистрация: 19.07.2016
Сообщений: 833
17.07.2018, 16:36 20
maxoun,

Обыкновенно. И загрузка будет не чем не медленее чем с помощью аякса , мне кажется аякс тут лишнее ,я понимаю что это круто и интересно ,но не нужно городить это только потому , что это есть.
1
17.07.2018, 16:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.07.2018, 16:36
Помогаю со студенческими работами здесь

Как получить данные из формы Django средствами jquery и вывести их на экран без перезагрузки страницы?
Есть форма Джанго &lt;div class=&quot;field inline&quot; id='lot'&gt; &lt;label for=&quot;{{...

Как реализовать? На одном компьютере меняешь данные, на другом сразу (без перезагрузки страницы) отображается результат
Не знал как правильнее сформулировать вопрос. Я и в PHP не особо разбираюсь, и понимаю, что такое...

ListView изменять данные без перезагрузки страницы
Здравствуйте! Очередной вопрос появился - можно как то выбирать данные из БД и обновлять их в...

Отправить данные формы без перезагрузки страницы
Здравствуйте! На странице есть форма. Никак не получается отправить данные этой формы без...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru