ОБСУЖДЕНИЕ

Нужна помощь с навигацией

18 сообщений1 просмотровЗакрыта
#1
такой вопрос у меня навигация считает общее количество сбс и выводит а мне нужно для каждого ид файла отдельно . Я в бд подаю page_id это иди файла к нему идут коменты. С сообщениями я сделал вывод для каждого файла а вот страницы нет. Там два запроса поправить можете?

<?

$page_id = 10;// Уникальный идентификатор страницы (статьи или поста)

$mysqli = new mysqli("localhost", "111", "111", "111");// Подключается к базе данных

$result_set = $mysqli->query("SELECT * FROM `comments` WHERE `page_id`='$page_id'"); //Вытаскиваем все комментарии для данной страницы

while ($row = $result_set->fetch_assoc()) {

}

$db_host = 'localhost';

$db_name = '111';

$db_user = '111';

$db_pass = '111';



$page = intval($_GET[page]); // значение текущей страницы из GET

$num = 1; // Переменная хранит число сообщений выводимых на станице

if ($page==0) $page=1;

// Определяем общее число сообщений в базе данных

// Берем из БД кол-во записей



mysql_connect($db_host,$db_user,$db_pass) OR DIE("Error connect to SQL<br/> "); // коннект к БД, указать хост, лог и пасс

@mysql_select_db("$db_name") or die("Error connect to DB<br/>");

mysql_query ("set character_set_client='utf8'"); // установка кодировки ( возможно у вас cp1251)

mysql_query ("set character_set_results='utf8'");

mysql_query ("set collation_connection='utf8_general_ci'");

$query = "SELECT count(`id`) FROM `comments`";



$mysql_result = mysql_query($query);



if(mysql_num_rows($mysql_result)>0){

$count=mysql_fetch_row($mysql_result);

}

$posts = $count[0]; // получем значение кол-во всех записей

// Находим общее число страниц

$total = intval(($posts - 1) / $num) + 1;

// Определяем начало сообщений для текущей страницы

$page = intval($page);

// Если значение $page меньше единицы или отрицательно

// переходим на первую страницу

// А если слишком большое, то переходим на последнюю

if(empty($page) or $page < 0) $page = 1;

if($page > $total) $page = $total;

// Вычисляем начиная к какого номера

// следует выводить сообщения

$start = $page * $num - $num;

$result_set = $mysqli->query("SELECT * FROM `comments` WHERE `page_id`='$page_id' ORDER BY `id` DESC LIMIT $start,$num");



while ($row = $result_set->fetch_assoc())

{



echo ' <b>Гость:</b> '.$row['name'].' <br /><b>Сообщение:</b> '.$row['text_comment'].'<br />';

echo'<br>';

}

// Проверяем нужны ли стрелки назад

if ($page != 1) $pervpage = '<a href="/index.php?page=-1"><<</a>

<a href="/index.php?page='. ($page - 1).'"><</a> ';

// Проверяем нужны ли стрелки вперед

if ($page != $total) $nextpage = ' <a href="/index.php?page='. ($page + 1).'">></a>

<a href="/index.php?page='.$total.'">>></a> ';

// Находим две ближайшие станицы с обоих краев, если они есть

if($page - 2 > 0) $page2left = ' <a href="/index.php?page='. ($page - 2) .'">'. ($page - 2) .'</a> ';

if($page - 1 > 0) $page1left = '<a href="/index.php?page='. ($page - 1) .'">'. ($page - 1) .'</a> ';

if($page + 2 <= $total) $page2right = ' <a href="/index.php?page='. ($page + 2).'">'. ($page + 2) .'</a>';

if($page + 1 <= $total) $page1right = ' <a href="/index.php?page='. ($page + 1).'">'. ($page + 1) .'</a>';





$query = "SELECT * FROM `comments` LIMIT $start, $num";

$mysql_result = mysql_query($query);

if ($total>1) echo '<p><div align="center" class="navigation">'

.$pervpage.$page2left.$page1left.'<span>'.$page.'</span>'.$page1right.$page2right

.$nextpage.'</div></p>';





?>


Я так понимаю
$query = "SELECT * FROM `comments` LIMIT $start, $num";
$mysql_result = mysql_query($query);
и
$query = "SELECT count(`id`) FROM `comments`";

$mysql_result = mysql_query($query);
Нужно что бы навигация считала именно с page_id это айди файла
#2
что-то я не въезжаю ты на мускули или мускул делаешь запросы? у тебя и то и то
#3
romka145, Система комментирования к файлам . В мускул я подаю запрос имя , текст , ид файла и ид сбс . Теперь мне нужно прилепить к ним навигацию. Что то типа чтобы index.php?id_file=Номер файла&page=2 . Я набросал кусок но у меня навигация считает все комменты с таблицы и выводит их . А мне нужно конкретно под id самого файла.
#4
PHP

<?
$page_id = 10;
$num = 10; //Кол-во сообщений на стр.
$query = mysql_query("SELECT COUNT(*) FROM `comments` WHERE `page_id` = '".$page_id."'"); 
$posts = mysql_result($query,0);

$total = intval(($posts - 1) / $num) + 1;
$page = abs(intval($_GET['page']));

if(empty($page) or $page < 1) $page = 1;
if($page > $total) $page = $total;
$start = $page * $num - $num;

if($posts>0){
$result_set = mysql_query("SELECT * FROM `comments` WHERE `page_id`='".$page_id."' ORDER BY `id` DESC LIMIT ".$start.",".$num);
while ($row = mysql_fetch_array($result_set)){
echo '<b>Гость:</b> '.$row['name'].' <br /><b>Сообщение:</b> '.$row['text_comment'].'<br /><br>';
}

if ($page != 1) $pervpage = '<a href="/index.php?page=-1"><<</a>
<a href="/index.php?page='. ($page - 1).'"><</a> ';
if ($page != $total) $nextpage = ' <a href="/index.php?page='. ($page + 1).'">></a>
<a href="/index.php?page='.$total.'">>></a> ';
if($page - 2 > 0) $page2left = ' <a href="/index.php?page='. ($page - 2) .'">'. ($page - 2) .'</a> ';
if($page - 1 > 0) $page1left = '<a href="/index.php?page='. ($page - 1) .'">'. ($page - 1) .'</a> ';
if($page + 2 <= $total) $page2right = ' <a href="/index.php?page='. ($page + 2).'">'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' <a href="/index.php?page='. ($page + 1).'">'. ($page + 1) .'</a>';


if ($total>1) echo '<p><div align="center" class="navigation">'

.$pervpage.$page2left.$page1left.'<span>'.$page.'</span>'.$page1right.$page2right

.$nextpage.'</div></p>';
}
?>

#5
Это если я правильно тебя понял
#6
Cloud, оно но не работает. Подключил к бд белая страничка
#7
Maksamka, Включи ошибки
#8
Ммм,сек.Пробуй
#9
Cloud, хотя нет. Все пашет . Это я плуг. СПС
#10
mysql_fetch_array($result_set)){ забыл доллар поставить там
#11
Cloud, все таки косяк есть . Теперь наоборот сбс не выводит а навигацию как нужно выводит ...
#12
romka145, куда его вставить
#13
Maksamka, Сделай var_dump() массива.
Что пишет?Код изменил.Пробуй еще
#14
в том коде что тебе дали я взял кусок и исправил его там красным цветом доллар добавлен у себя в коде что тебе написали исправь. хотя там он уже исправил
#15
не пашет тот что ты сейчас изменил вообще
#16
Cloud, Поправил пашет все . Но кодировка хромая
#17
Maksamka, Так устанавливай кодировку при подключении к бд
#18
Тему закрыл Maksamka!
Причина: Готово