|
|
|
| Я написал сайт знакомств, общая структура такова: пользователь вводит параметры поиска (параметров семь) по этим параметрам из БД извлекаем результат (т.е. количество найденных анкет), на странице вывожу первые десять анкет, но общее количество (допустим) 32 анкеты.
Естественно надо делать навигацию типа «следующие десять». Вопрос: как сделать эту навигацию (разумно)?
Конечно, можно сделать ссылку типа: http://somehost/somepage.php?par1=1&par2=2&par3=3...
но это не то, чего хотелось бы, как то не разумно, может реализовать все через масив? в голову больше нечего не приходит.
Подскажите что-нибудь, если есть способы более интеллектуальные.
В заранее благодарю за проявленное внимание. | |
|
|
|
|
|
|
|
|
|
для: cheops
(25.10.2007 в 12:13)
| | Cheops, спасибо. Спасибо всем, кто выделил мне время и написал ответ. | |
|
|
|
|
|
|
|
для: G-Style
(25.10.2007 в 09:29)
| | вот кусок кода с коментариями
# Определяем общее количество сообщений по данной теме.
$sql=mysql_query("select count(id) cc from koment where id_st='".$id_kom."';");
$all=mysql_fetch_row($sql);
$all_msg=$all[0];
# Если общее количество сообщений меньше чем количество сообщений на странице то...
if ($kolvo>$all_msg) (int)$kolvo=$all_msg;
# Это можно и не выводить...
echo "</br>Коментарии к : ".$id_kom." (".$all_msg.")</br>";
# Определяем кол-во страниц
$nomber=(int)($all_msg/$kolvo);
if (((float)($all_msg/$kolvo)-$nomber)!=0) $nomber++;
# Проверяем передана ли страница
if(!empty($_GET['p'])) $p = in($_GET['p'],3);
else $p = 1;
# Определяем начало и конец
$start = ($p - 1)*$kolvo + 1;
$end = $p*$kolvo;
# Выводим содержимое страницы
(int)$st=$start-1;
$sql=mysql_query("select * from koment where id_st='$id_kom' order by date desc limit $st,$kolvo;");
while ($mass=mysql_fetch_row($sql))
{
echo "</br>";
echo "<table>";
echo "<tr><td class=date><table><tr><td class=name>".$mass[3]."</td><td class=date>".$mass[2]."</td></tr></table></td></tr>";
echo "<tr><td class=email>".str_replace('@','[dog]',$mass[4])."</td></tr>";
echo "<tr><td class=msg>".$mass[5]."</td></tr>";
echo "</table>";
}
#Навигация
echo "</br><table><tr><td class=list><table><tr>";
if (strpos($_SERVER['REQUEST_URI'],"?p=")>1) $link=ereg_replace("(\?p=[0-9]+)", "?",$_SERVER['REQUEST_URI']);
elseif (strpos($_SERVER['REQUEST_URI'],"&p=")>1) $link=ereg_replace("(\&p=[0-9]+)", "&",$_SERVER['REQUEST_URI']);
elseif (strpos($_SERVER['REQUEST_URI'],"?")>1) $link=$_SERVER['REQUEST_URI']."&";
else $link=$_SERVER['REQUEST_URI']."?";
for ($i=0;$i<$nomber;$i++)
{
# Выделение жирным шрифтом текущей страницы
if ($i+1==$p)
{
if ($i==$nomber-1 )
{
echo "<td class=arhor><a class=arhor href=".$link."p=".($i+1)."><b>[".($i*$kolvo + 1)."..".$all_msg."]</b></a></td>";
}
else
{
echo "<td class=arhor><a class=arhor href=".$link."p=".($i+1)."><b>[".($i*$kolvo + 1)."..".(($i+1)*$kolvo)."]</b></a></td>";
}
}
else
# Обычные страницы
{
if ($i==$nomber-1 )
{
echo "<td class=arhor><a class=arhor href=".$link."p=".($i+1).">[".($i*$kolvo + 1)."..".$all_msg."]</a></td>";
}
else
{
echo "<td class=arhor><a class=arhor href=".$link."p=".($i+1).">[".($i*$kolvo + 1)."..".(($i+1)*$kolvo)."]</a></td>";
}
}
}
echo "</tr></table></td></tr></table>";
|
$kolvo - это количество соббщения на странице задается ранее... | |
|
|
|