X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Вывод комментариев на экран-пределы.
Lotus
Lotus
Topic Starter сообщение 19.4.2009, 17:43; Ответить: Lotus
Сообщение #1


Здравствуите.
У меня такая проблемка.

Есть код вывода комментариев.
По сути своеи-постраничная навигация.

[PHP]
if ($page>1) {
$vivod=$page*3;
$com=mysql_query("SELECT text,author,number FROM comments WHERE number=$id limit $vivod,3");

$per==0;
while ($comar=mysql_fetch_array($com) and $per!==3)
{printf ("Выводим результаты");
$per=$per+1;
}

}

[/PHP]

По идее,всё работает.Комментарии выводятся по трое,друг за другом.Но вот что примечательно-работают только первые две страницы.Дальше просто ничего не выводиться,хотя записи в БД имеются.
I need a help:nea:

$page береться из урла.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
сообщение 19.4.2009, 20:19; Ответить: Apay
Сообщение #2


[php]$per==0; [/php]вот здесь наверняка и зарыта ошибка, надо [php]$per=0; [/php]
кстати, не понял смысла этой переменной, она тут не нужна
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Lotus
Lotus
Topic Starter сообщение 20.4.2009, 14:38; Ответить: Lotus
Сообщение #3


Не помогло.Ни изменение знака,ни удаление переменной.
Зачем нужна?Насколько я помню,всегда нужно присваивать переменной значение нуля-если она появилась в первый раз.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Galen
Galen
сообщение 20.4.2009, 19:28; Ответить: Galen
Сообщение #4


Имхо, у вас неверный алгоритм подсчёта условий для LIMIT. Вроде бы нужно так:
[PHP]$vivod = ($page - 1) * 3;[/PHP]

И ещё:
[PHP]and $per!==3)[/PHP]
сменить на:
[PHP]and $per!=3)[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
сообщение 20.4.2009, 22:15; Ответить: Apay
Сообщение #5


я имел ввиду что переменная $per вообще тут не нужна, все равно запрос вернет не более 3 результатов
[php]
if( $page > 1 ){
$vivod = $page*3; // или ($page-1)*3 как написал Galen
$com = mysql_query( "SELECT text,author,number FROM comments WHERE number=$id limit $vivod,3" );
while( $comar = mysql_fetch_array($com) ){
printf( "Выводим результаты" );
}
}
[/php],
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Lotus
Lotus
Topic Starter сообщение 21.4.2009, 14:09; Ответить: Lotus
Сообщение #6


Galen, не помогает.

Apay, аналогично.

Ничего не понятно.:wacko:


Galen, знаете,вы прям опередили мою мысль.Яуже пользовался подобным приемом при выводе фотографий, только хотел его использовать-и увидел вашу запись.
Мы мыслим одинаково))
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Galen
Galen
сообщение 21.4.2009, 14:50; Ответить: Galen
Сообщение #7


Если по-прежнему не работает, дайте больше кода - так вроде всё в порядке.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Lotus
Lotus
Topic Starter сообщение 21.4.2009, 15:31; Ответить: Lotus
Сообщение #8


[PHP]
<? session_start ();
include("connect.php");
If (isset ($_GET['date'])) {$date=$_GET['date'];}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title></title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>

<table width="100%" border="1">
<tr>
<td><?php include ("shapka.php")?></td>
</tr>
<tr>
<td><table width="100%" height="354" border="1">
<tr>
<td width="20%" height="348" valign="top"><?php include("lmenu.php")?></td>
<td width="60%" valign="top"><?php
if ($date=="2009"){$dateprov=$date;
$id = isset($_GET['id']) ? $_GET['id'] : '';
$result=mysql_query ("SELECT title,href,dateF,author FROM fhoto WHERE dateprov='$dateprov' AND id='$id'",$db);
$myrow=mysql_fetch_array ($result);

do {
printf ("<center>%s<img src='%s'><br><div class='text'>Дата добавления:%s<br>Кто добавил:%s<br>",$myrow['title'],$myrow['href'],$myrow['dateF'],$myrow['author']);}


while ($myrow=mysql_fetch_array($result));
}
If (isset ($_GET['page'])) {$page=$_GET['page'];}
echo("Комментарии к фотографии<br>Если вы не видите комментариев,значит их попросту нет.Если вы не авторизированы,вы не можете добавлять комментарии.<br>");
if ($page=='1') {
$com=mysql_query("SELECT text,author,number FROM comments WHERE number=$id ORDER BY id ASC limit 0,3");


while ($comar=mysql_fetch_array($com) and $per!==3)
{printf ("
Комментарий добавил(а):<table border='1' width='300' valign='top'>
<tr>
<td>%s</td>
</tr>
</table>

<br>
<table border='1' width='300' height='100' valign='top'>
<tr>
<td>%s</td>
</tr>
</table>
$s
<br></div>",$comar['author'],$comar['text']);
$per=$per+1;
} }

if ($page>1) {
$vivod=($page*3)-1;
$com=mysql_query("SELECT text,author,number FROM comments WHERE number=$id limit $vivod,3");


while ($comar=mysql_fetch_array($com))
{printf ("
Комментарий добавил(а):<table border='1' width='300' valign='top'>
<tr>
<td>%s</td>
</tr>
</table>

<br>
<table border='1' width='300' height='100' valign='top'>
<tr>
<td>%s</td>
</tr>
</table>
<br></div>",$comar['author'],$comar['text']);
$per=$per+1;
}

}

$number=$id;
$prop=$_SESSION['user'];
print <<<HERE
<form name='form1' method='post' action='admin/com_obr.php'>

Автор<input type='text' name='author'>
Не нравится <textarea name='text' cols="40" rows="2"></textarea>
<input name="id" type="hidden" value='$id'>
<input name="number" type="hidden" value='$number'>
<input name="prop" type="hidden" value='$prop'>
<input type='submit' name='submit' value="Отправить комментарий">
</form>

HERE;
$page=$page+1;
if ($per=='3') {printf("<a href='view_fhoto_big.php?date=2009&id=$id&page=%s'>%s</a>",$page,$page);}

?></td>
<td width="20%" valign="top"><?php include ("rmenu.php")?></td>
</tr>
</table></td>
</tr>
<tr>
<td><?php include ("niz.php")?></td>
</tr>
</table>
</body>
</html>
}

[/PHP]

Вот вся страничка.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
сообщение 22.4.2009, 0:36; Ответить: Apay
Сообщение #9


1) надо инициализировать дату (она может быть неопределенной)
[php]$date = isset($_GET['date']) ? $_GET['date'] : 2009; // вместо 2009 - что-то по умолчанию[/php]2) вместо do-while использовать while, т.к. do-while сработает даже если mysql_fetch_array вернет пустой результат
[php]while( $myrow=mysql_fetch_array($result) ){
printf ("<center>%s<img src='%s'><br><div class='text'>Дата добавления:%s<br>Кто добавил:%s<br>",$myrow['title'],$myrow['href'],$myrow['dateF'],$myrow['author']);
}
[/php]3) надо инициализировать $page (она может быть неопределенной)
[php]$page = isset($_GET['page']) ? $_GET['page'] : 1; // вместо 1 - что-то по умолчанию[/php]4) переменная $per вообще не нужна (кстати, в приведенном коде она нигде не инициализируется)
5) вместо двух структур с $page == 1 и $page > 1 сделать одну
[php]$vivod=($page-1)*3;
$com=mysql_query("SELECT text,author,number FROM comments WHERE number=$id ORDER BY id LIMIT $vivod,3");
while( $comar=mysql_fetch_array($com) ){
printf ("...");
}
[/php]6) есть ли другие страницы нужно определять не по $per а по количеству сток в базе запросом типа
"SELECT COUNT(*) FROM table WHERE condition"
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Lotus
Lotus
Topic Starter сообщение 25.4.2009, 10:04; Ответить: Lotus
Сообщение #10


Всем спасибо за помошь)Вопрос разрешился.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Ручной обмен, ввод/вывод электронных валют | ЮMoney, WMZ, Крипта, Приват, Монобанк | Низкие комиссии, минимальные суммы сделок
быстро, удобно, по доступному курсу
200 Sostavitel 98241 11.2.2024, 21:07
автор: Wolfhound
Открытая тема (нет новых ответов) Sbitcoin.ru – Ввод, Вывод, Обмен: Qiwi, YD, Btc, Btc-e, PM, Cash IN, PR24, MG, WU, Нал (RU, UA).
9 sbitcoinru 6784 10.10.2023, 19:25
автор: Sbitcoin
Горячая тема (нет новых ответов) Обмен WebMoney - Яндекс - QIWI. Вывод/ввод Приват24 UAH
225 himin 132903 7.5.2023, 13:26
автор: Вера_Симонова
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлы«»101Crypta.com«»ВВОД/ВЫВОД/ОБМЕН«»BTC/ETH/QIWI/USDT/VISA/MC«»НАЛИЧНЫЕ/СНГ/ЕВРОПА«»
13 101Crypta 12161 18.4.2023, 23:15
автор: 101Crypta
Открытая тема (нет новых ответов) Нужен вывод в топ наших роликов Youtube
3 wep 1929 23.3.2023, 17:39
автор: distrib095


 



RSS Текстовая версия Сейчас: 24.4.2024, 11:34
Дизайн