Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
11 / 11 / 8
Регистрация: 26.03.2014
Сообщений: 400

AJAX для PHP страниц подгружаемых из MySQL

16.02.2016, 15:58. Показов 1968. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Страницы формируются с помощью PHP. В PHP проверяются условия
PHP
1
2
3
if ($tags) {include("tmpl/tags.php");} //страница ссылок
else
{include("tmpl/indexs.php");} //страница с переходом на следующую
и тем самым грузится либо страница на которой будет ссылка на следующую страницу, либо страница ссылок на все возможные страницы.
Таблица MySQL состоит из столбцов: тема и содержание.
Страница ссылок - это страница ссылки которой сформированными из всех тема.
Страница с переходом - это страница в которой выводится тема и ее содержание, а при переходе на следующую выводится другая тема с другим содержанием и 2-мя ссылками на предыдущую и следующую страницы.
Сами страницы обрабатываются в адресной строке так: домен/тема?page=1

Как сделать для сделать AJAX загрузку и переход между страницами которых изначально нет (подгружаются из БД).

Вот что то пробовал, и в итоге в контейнер загружалась вся страница целиком (шапка, меню, контент), а не просто контент.

С ajax-ом туговато пока, еще не делал сложного ни разу.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php //формируем страницу с тегами
$i=1;
while($row = mysql_fetch_assoc($otvet)){ //в $otvet получили все строки из БД
            echo "<article class=\"bloga\">
            <a id=\"a".$i."\" href=\"".$pg."?page=".($i)."\"><h2 class=\"shtrihi\">{$row['title']}</h2></a>
            <script>
                $(document).ready(function(){
                        $('#a".$i."').click(function(){
                                $.ajax({
                                        url: \"".$pg."?page=".($i)."\",
                                        cache: false,
                                        success: function(html){
                                                $(\".blog\").html(html);
                        location.hash = '\"blog\"';
                                        }
                                });
                        });
                    });
            </script>
            </article>";
$i++;}?>
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.02.2016, 15:58
Ответы с готовыми решениями:

Генерация страниц по шаблону php из БД MySQL
Приветствую, уважаемые хакеры. Дабы не занимать Вашего времени прошу ссылку на пост, в котором рассмотрен вопрос создания навигации по...

Php вывод динамических страниц из mysql
Всем здравствуйте!!! Делаю первый сайт на php mysql, соответственно знаю оч. плохо. В данный момент не могу решить следующую...

Фильтр AJAX+PHP+MySQL
Нужен фильтр на ajax, php, mysql для интернет-магазина. Есть ли у кого-нибудь что-то в этом роде?

8
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
16.02.2016, 21:51
Лучший ответ Сообщение было отмечено vino0s как решение

Решение

допустим есть список ссылок на статьи
HTML5
1
2
3
4
5
6
7
<ul>
    <!-- href="1"  1 это идентификатор статьи в базе-->
    <li><a class="link" href="1">Статья 1</a></li>
    <li><a class="link" href="2">Статья 2</a></li>
    <li><a class="link" href="3">Статья 3</a></li>
</ul>
<div id="aticle"></div><!--сюда будем вставлять ответ с сервера-->
и функция, которая будет отправлять ajax запросы на сервер и выводить ответ на страницу
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$(function(){
    $('.link').click(function(e){
        e.preventDefault();//отменяем действие по умолчанию(переход по ссылке)
        var id = $(this).attr('href');// идентификатор статьи
        
        $.ajax({
            url: 'page.php',//обработчик
            tуpe:'post',//тип запроса
            data: 'id='+id,//передаем данные, в $_POST['id'] будет идентификатор статьи
            //в responce будет ответ с сервера
            success:function(responce){
                $('#aticle').html(responce);// добавляем ответ с сервера в контейнер с id="aticle"
            }
        })
    })
   
});
ну и обработчик php
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
if(!empty($_POST))
{
    $mysqli = new mysqli("localhost", "root", "", "table");
 
    if (mysqli_connect_errno())
    {
        printf("Подключение невозможно: %s\n", mysqli_connect_error());
        exit();
    }
 
    if ($stmt = $mysqli->prepare("SELECT `title`,`description` FROM `aticle` WHERE `id`= ?"))   
    {
        $stmt->bind_param("i", $id);
        $id = $_POST['id'];
 
        $stmt->execute();
 
        $stmt->bind_result($title, $description);
        $result = '<div class="aticle">';
      
        while ($stmt->fetch())      
        {
            $result .= '<h>'.$title.'</h>';
            $result .= '<p>'.$description.'</p>';
        }
        $result .= '</div>';
    }
    $stmt->close();
    $mysqli->close();
        
    echo $result;
}
как-то так
1
11 / 11 / 8
Регистрация: 26.03.2014
Сообщений: 400
17.02.2016, 11:39  [ТС]
Красиво) Понятно) Опробую завтра)

Добавлено через 12 часов 21 минуту
PHP
1
$db_my=mysql_connect($conf['mysql_host'],$conf['mysql_user'],$conf['mysql_password']) or die('Ошибка подключения к базе данных');
и
PHP
1
$mysqli = new mysqli("localhost", "root", "", "table");
равнозначны?
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
17.02.2016, 11:47
Цитата Сообщение от vino0s Посмотреть сообщение
равнозначны?
первый вариант это Процедурный стиль
второй это Объектно-ориентированный стиль

http://php.net/manual/ru/mysqli.construct.php
1
11 / 11 / 8
Регистрация: 26.03.2014
Сообщений: 400
17.02.2016, 12:11  [ТС]
К сожалению, ответ не приходит (статья не грузится).
PHP
1
2
3
4
5
6
7
<?php 
$i=1;
while($row = mysql_fetch_assoc($otvet)){
            echo "<article class=\"bloga\">
            <a class=\"link\" href=\"{$row['id']}_".$pg."?page=".($i)."\"><h2 class=\"shtrihi\">{$row['title']}</h2></a>
            </article>";
$i++;}?>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script>
$(function(){
    $('.link').click(function(e){
        e.preventDefault();//отменяем действие по умолчанию(переход по ссылке)
        var id = $(this).attr('href').split('_');// идентификатор статьи, ссылка пока коряво выглядит
 
        $.ajax({
            url: 'tmpl/obrab.php',//обработчик
            tуpe:'post',//тип запроса
            data: 'id='+id[0],//передаем данные, в $_POST['id'] будет идентификатор статьи, но я получаю нужный id проверял в alert
            //в responce будет ответ с сервера
            success:function(responce){
                $('.blog').html(responce);// добавляем ответ с сервера в контейнер с id="aticle", в контейнере с классом blog все ссылки убираются, но контент и титл не выводится (пустой).
            }
        })
    })
   
});
</script>
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
<?php 
if(!empty($_POST))
{
    $mysqli = new mysqli($conf['mysql_host'],$conf['mysql_user'],$conf['mysql_password'],$conf['mysql_database']);
 
    if ($stmt = $mysqli->prepare("SELECT `title`, `date`, `content` FROM `blog` WHERE `id`= ?"))   
    {
        $stmt->bind_param("i", $id);
        $id = $_POST['id'];
 
        $stmt->execute();
 
        $stmt->bind_result($title, $date_p, $content);
        $result = '<article class="bloga">';
      
        while ($stmt->fetch())      
        {
            $result .= '<h2 class="shtrihi">'.$title.'</h2>';
            $result .= '<p>'.$content.'</p>';
            $result .= '<p class="date animated bounce">'.$date_p.'</p>';
        }
        $result .= '</article>';
    }
    $stmt->close();
    $mysqli->close();
        
    echo $result;
}
?>
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
17.02.2016, 12:44
JavaScript
1
console.log(responce);
посмотрите что будет в консоли

Добавлено через 16 минут
Цитата Сообщение от vino0s Посмотреть сообщение
tуpe:'post',//тип запроса
перепишите эту строку. что-то с ней не так. скрип отправляет не post а get. видимо опечатка(либо русская буква или еще что)
я переписал и у меня все работает

Добавлено через 1 минуту
с этим, у меня работает

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$(function(){
    $('.link').click(function(e){
        e.preventDefault();//отменяем действие по умолчанию(переход по ссылке)
        var id = $(this).attr('href');// идентификатор статьи
        
        $.ajax({
            url: 'tmpl/obrab.php',//обработчик
            type:'post',//тип запроса
            data: 'id='+id,//передаем данные, в $_POST['id'] будет идентификатор статьи
            //в responce будет ответ с сервера
            success:function(responce){
                $('#aticle').html(responce);// добавляем ответ с сервера в контейнер с id="aticle"
            }
        })
    })
   
});
1
11 / 11 / 8
Регистрация: 26.03.2014
Сообщений: 400
17.02.2016, 14:32  [ТС]
я почему-то к БД не коннекчусь
Подключение невозможно: Access denied for user ''@'localhost' (using password: NO)
PHP
1
2
3
4
5
6
7
8
9
10
$conf = parse_ini_file('tmpl/config.ini');
if(!empty($_POST))
{
    $mysqli = new mysqli($conf['mysql_host'],$conf['mysql_user'],$conf['mysql_password'],$conf['mysql_database']);
    if (mysqli_connect_errno())
    {
        printf("Подключение невозможно: %s\n", mysqli_connect_error());
        exit();
    }
}
Добавлено через 10 минут
PHP
1
$conf = parse_ini_file('../conf/config.ini'); //моя не внимательность не сделал возврат на уровень выше
Добавлено через 2 минуты
PHP
1
2
mysql_set_charset( 'utf8' );
mysql_query('SET time_zone = "+5:00"');
Теперь вот это как применить для $mysqli

Добавлено через 7 минут
Всем спасибо, разобрался))

Добавлено через 52 минуты
Только вот еще вопрос появился, если я обновляю страницу после загрузки контента, то открывается страница с ссылками (предыдущая). Как изменить href в адресной строке, без перехода?
0
 Аватар для Laroux
172 / 167 / 75
Регистрация: 21.11.2014
Сообщений: 1,490
17.02.2016, 15:24
Цитата Сообщение от vino0s Посмотреть сообщение
href в адресной строке
что это?
0
11 / 11 / 8
Регистрация: 26.03.2014
Сообщений: 400
17.02.2016, 17:14  [ТС]
url location.href адрес страницы

Добавлено через 1 час 46 минут
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$(function(){
    $('.link').click(function(e){
        e.preventDefault();//отменяем действие по умолчанию(переход по ссылке)
        var id = $(this).attr('href');// идентификатор статьи
 
        history.pushState(null, null, $(this).attr('href'));   // ВОТ ЭТО добавил для изменения адреса в адресной строке
 
        $.ajax({
            url: 'tmpl/obrab.php',//обработчик
            type:'post',//тип запроса
            data: 'id='+id,//передаем данные, в $_POST['id'] будет идентификатор статьи
            //в responce будет ответ с сервера
            success:function(responce){
                $('#aticle').html(responce);// добавляем ответ с сервера в контейнер с id="aticle"
            }
        })
    })
   
});
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.02.2016, 17:14
Помогаю со студенческими работами здесь

AJAX, PHP и MySQL поругались
Схема работы: 1. Есть одна html-страничка. 2. С нее аяксом отправляется строка user_name из поля input, методом $.post() в jQuery ...

Загрузка контента без перезагрузки страницы Php Mysql AJAX
Всем доброго времени суток. С общими усилиями сделали страничку которая должна вывести данные страны по выброному id в selecte. ...

Индексация страниц сайта, подгружаемых из базы данных
К примеру создается CMS. Два варианта добавления новых статей в систему сайта: генрировать html страницы, либо хранить статьи в базе...

AJAX PHP MySQL
Есть страница lot.php Страница принимает GET параметр , и под значению этого параметра вытаскивает определенную запись с бд. ...

Корзина на php ajax mysql
Здравствуйте! Пишу корзину для интернет-магазина, нашла пример в сети, как это можно сделать, и разбираю его. Но столкнулась с проблемой:...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru