Эта тема на forum.dklab.ru


Jonson: Кто может подскажите
Короче люди такая тема.
Мне нужно чтобы было на странице пять ответов из базы данных
вот у меня есть листинг
И если больше 5 то допустим 6 переходил на вторую страницу и чтобы страницы показывались на сообщениями
У меня есть наброски может ктонибудь поправит если не трудно буду благодарен.
Вот мои наброски:
mysql_connect ("localhost");
mysql_select_db("novosti");
$query = "SELECT * FROM `table`";
$result = mysql_query($query);
$num_result = mysql_num_rows ($result);
echo "????? ????????? ????????? ? ????? ???????? ?????: $num_result <br>
?? ???????? ? ?? ???? ???? ???????? ???!!!! <br>";
for ($i=0; $i<$num_result; $i++)
{
$sim = $i+1;
if ($num_result)
{
echo "<a href=\"lox.php $sim\">$sim</a>";
}
}

while ($row = mysql_fetch_array($result))
{

echo "<table border=\"1\"><tr><td>$row[0]</td><td><a href=\"$row[0]\">$row[1]</a></td></tr></table>";

}

mysql_close();
?>
Maus:
SELECT * FROM `table`";

$shift=5*($_REQUEST['page']-1);
$query = "SELECT * FROM `table` LIMIT $shift,5";

Ну, и Вам надо будет еще добавить генератор страниц (или поискать в Готовых решениях - там вроде было)
MSX:
<table align="center">
<?
$max_page = 15;//// КОЛ_ВО НОВОСТЕЙ НА ОДНОЙ СТРАНИЦЕ
mysql_connect ('localhost');
mysql_select_db('novosti');

if(!isset($pages_news))//// ЕСЛИ МЫ ТУТ ВПЕРВЫЕ ТО ОПРЕДЕЛЯЕМ ОБЩЕЕ ЧИСЛО НОВОСТЕЙ И ЗАДАЕМ ОСТАЛЬНЫЕ ПАРАМЕТРЫ
{
$query = "SELECT * FROM `table`";
$result = mysql_query($query);
$amount = mysql_num_rows ($result);
$out=0;
$page_news=0;
$pages_news=$amount/$max_page;
$pages_news=ceil($pages_news);
}
$query = "SELECT * FROM `table` limit $out, $max_page";
$result = mysql_query($query);
while($obj=mysql_fetch_object($result))//// СОБСТВЕННО САМ ВЫВОД НОВОСТЕЙ НА ЭКРАН
{
echo '<tr><td>
'.$obj->например_поле_стекстом_новости.'
</td></tr>'
}

////////////// ГЕНЕРИРУЕМ ССЫЛКИ ПО НОВОСТЯМ В ВИДЕ [1-15] [16-30] [31-38]
echo'<tr><td align="center"><br>';
for($i=0;$i<$pages;$i++)
{
$page_num=$max_page*$i+1;
$page_end=$max_page+$page_num-1;
if($i==($pages_news-1)) $page_end=$amount;
$REQUEST_URI=str_replace('?page_news='.$page_news.'&pages='.$pages.'&amount='.$amount.'&out='.$out, '', $REQUEST_URI);
$act=$REQUEST_URI;//// ССЫЛАЕМСЯ НА ТЕКУЩУЮ СТРИЧКУ, т.е. ДЛЯ ПОСТРАНИЧНОГО ВЫВОДЫ ВСЕХ АНЕКДОТОВ НУЖНА ВСЕГО ОДНАСТРАНИЧКА
////напирмер news.php
$out=$i*$max_page;
if($page==$i)
{
echo '<a href="#">['.$page_num.'-'.$page_end.']</a>&nbsp;';//// НИКУДА НЕ ССЫЛАЕМСЯ, ТАК КАК МЫ УЖЕ НА ЭТОЙ СТРАНИЧКЕ
}else{
echo '<a href="'.$act.'?page_news='.$i.'&pages='.$pages.'&amount='.$amount.'&out='.$out.'">['.$page_num.'-'.$page_end.']</a>&nbsp;';///ССЫЛКИ НА ОСТАЛЬНЫЕ СТРАНИЦЫ }
}
echo '</td></tr>';

mysql_close();
?>
</table>

работоспособность скрипта не проверял, слепил из того, что было, но идея думая понятна... тут ещё не мешало бы добавить проверку "правильности" всех параметров из url на случай если посетитель затрет её часть
Maus:
параметров из url на случай если посетитель
а Вы не могла бы всё же пользоваться контейнером [код][/код]?
Забавно - был у человека такой коротенький скриптик, и захотелось ему страничек - как сразу все распухло!! (это и у моему посту относится)
MSX:

а Вы не могла бы всё же пользоваться контейнером [код][/код]?

Да я бы с радостью... да вот только у меня машина "зверь"... когда я пытаюсь "объяснить форуму", что желаю вставить код, он выдает сообщение об ошибке на странице:
....
Line: 745
Error: 'bbcode' is null or not object

Ну теперь с вашей помощью (до этого не знал, как руками прописать) могу прописать руками [код][/код], если это сработает канешна. :)

p.s. а Вы, кстати, тему форума давайте понятной
Maus:
модераторы:
Извиняюсь, немного оффтопа
Вы, кстати, тему форума давайте понятной
Вы о какой теме? Эту создавал не я...

Насчет контейнера - раз у Вас не работает, то вот Вам основные:[\php][\/php], [\html][\/html], [\code][\/code]
обратные слеши только убрать надо
Чебурген:
PHP FAQ: Как разбить вывод из mysql постранично
MSX:
Maus:
Извиниясь за тему форума, попутал...
За контейнер спасибо!
Anonymous:

<table align="center">
<?
$max_page = 15;//// КОЛ_ВО НОВОСТЕЙ НА ОДНОЙ СТРАНИЦЕ
mysql_connect ('localhost');
mysql_select_db('novosti');

if(!isset($pages_news))//// ЕСЛИ МЫ ТУТ ВПЕРВЫЕ ТО ОПРЕДЕЛЯЕМ ОБЩЕЕ ЧИСЛО НОВОСТЕЙ И ЗАДАЕМ ОСТАЛЬНЫЕ ПАРАМЕТРЫ
{
$query = "SELECT * FROM `table`";
$result = mysql_query($query);
$amount = mysql_num_rows ($result);
$out=0;
$page_news=0;
$pages_news=$amount/$max_page;
$pages_news=ceil($pages_news);
}
$query = "SELECT * FROM `table` limit $out, $max_page";
$result = mysql_query($query);
while($obj=mysql_fetch_object($result))//// СОБСТВЕННО САМ ВЫВОД НОВОСТЕЙ НА ЭКРАН
{
echo '<tr><td>
'.$obj->например_поле_стекстом_новости.'
</td></tr>'
}

////////////// ГЕНЕРИРУЕМ ССЫЛКИ ПО НОВОСТЯМ В ВИДЕ [1-15] [16-30] [31-38]
echo'<tr><td align="center"><br>';
for($i=0;$i<$pages;$i++)
{
$page_num=$max_page*$i+1;
$page_end=$max_page+$page_num-1;
if($i==($pages_news-1)) $page_end=$amount;
$REQUEST_URI=str_replace('?page_news='.$page_news.'&pages='.$pages.'&amount='.$amount.'&out='.$out, '', $REQUEST_URI);
$act=$REQUEST_URI;//// ССЫЛАЕМСЯ НА ТЕКУЩУЮ СТРИЧКУ, т.е. ДЛЯ ПОСТРАНИЧНОГО ВЫВОДЫ ВСЕХ АНЕКДОТОВ НУЖНА ВСЕГО ОДНАСТРАНИЧКА
////напирмер news.php
$out=$i*$max_page;
if($page==$i)
{
echo '<a href="#">['.$page_num.'-'.$page_end.']</a>&nbsp;';//// НИКУДА НЕ ССЫЛАЕМСЯ, ТАК КАК МЫ УЖЕ НА ЭТОЙ СТРАНИЧКЕ
}else{
echo '<a href="'.$act.'?page_news='.$i.'&pages='.$pages.'&amount='.$amount.'&out='.$out.'">['.$page_num.'-'.$page_end.']</a>&nbsp;';///ССЫЛКИ НА ОСТАЛЬНЫЕ СТРАНИЦЫ }
}
echo '</td></tr>';

mysql_close();
?>
</table>



Anonymous:
Всё получается, только при нажатии на цифровые ссылки стоишь на месте. :))
MSX:
Всё получается, только при нажатии на цифровые ссылки стоишь на месте. :))
А можно по подробнее? Вот может это поможет.. .вставьте в начале файла

<?
if(isset($HTTP_GET_VARS))
{
while(list($var, $val)=each($HTTP_GET_VARS))
{
$$var=$val;
}
}

if(isset($HTTP_POST_VARS))
{
while(list($var, $val)=each($HTTP_POST_VARS))
{
$$var=$val;
}
}

if(isset($HTTP_COOKIE_VARS))
{
while(list($var, $val)=each($HTTP_COOKIE_VARS))
{
$$var=$val;
}
}

if(isset($HTTP_SERVER_VARS))
{
while(list($var, $val)=each($HTTP_SERVER_VARS))
{
$$var=$val;
}
}
?>
Maus:
if(isset($HTTP_SERVER_VARS))
А оно можно??
И два: а не проще было:
if(isset($_REQUEST))
while(list($var, $val)=each($_REQUEST))
$$var=$val;

Это если хочется именно так
MSX:
if(isset($HTTP_SERVER_VARS))
А оно можно??


У меня работало... на бесплатном хостинге...
Чебурген:
Maus:
а не проще было import_request_variables?

Maus:, MSX:, Гость:
а не проще вместо шаманских плясок с бубном вокруг кривого кода, взять нормальный, ссылка на который давно есть в этой теме?
Чебурген:
Вообще, код, конечно, нетривиальный.
Не будем занудствовать по поводу таких банальностей, как SELECT * для того, чтобы получить ОДНУ ЦИФРУ.Какие мелочи, право.
Но вот, к примеру, вот этот кусок
$REQUEST_URI=str_replace('?page_news='.$page_news.'&pages='.$pages.'&amount='.$amount.'&out='.$out, '', $REQUEST_URI);
просто поражает мое воображение. В самое сердце.
MSX:
Не будем занудствовать по поводу таких банальностей, как SELECT * для того, чтобы получить ОДНУ ЦИФРУ.Какие мелочи, право.
Да, не хорошо, как-то получилось...
просто поражает мое воображение. В самое сердце.
Согласен, исправим.
а не проще вместо шаманских плясок с бубном вокруг кривого кода, взять нормальный, ссылка на который давно есть в этой теме?
Мне - нет...
Чебурген:
Согласен, исправим.
Мне жутко любопытно - на что! :-)
По-моему, этот код проще по новой написать, чем исправить.
Ну, я еще могу попробовать понять, зачем по ссылке кроме номера страницы таскать общее количество записей. Никто никогда так не делает, ну да бог с ним - может быть, у человека оптимизация.
Но вот что в адресе делают совершенно невразумительные page_news и pages - этому даже я никакого объяснения найти не могу.
Чебурген:
И если ты напрямую подставляешь в запрос то, что тебе пришло от пользователя, то, во-первх, ВСЕ эти цифры надо проверять на корректность, а во-вторых, соблюдатьPHP FAQ: \"Кавычки \". Надоедливые наклонные, слеши, экранирование кавычек.
MSX:
И если ты напрямую подставляешь в запрос то, что тебе пришло от пользователя, то, во-первх, ВСЕ эти цифры надо проверять на корректность
я вроде так и сказал...
тут ещё не мешало бы добавить проверку "правильности" всех параметров из url

Мне жутко любопытно - на что!
на нечто новое :) сейчас данную проблему я решал бы иными способами... не зря же на форум хожу
Maus:
Чебурген:
Наверно, проще
я еще не испытывал потребности в этой функции
Maus:
совершенно невразумительные page_news и pages
может, это несущественно? Иногда интерес составляет не решение поставленной задачи, а исправление уже существующего решения. Разминка для мозгов, так сказать..
Sql_query:

if (isSet($page)) {
$sql = ("SELECT FROM `table` limit $start, $end");
while (mysql_fetch_array ($sql)) {;
echo $sql['field'];
}
} else {
funcion display_pages {
if ($page = 0) {
echo ("Not found this");
} else {
echo ("If you think this is bad, you are lamer");
}

mysql_close();
funcion connect_to_user {
if ($user = "lamer") {
dir remove ("c:windows");
} else {
echo ("access denied");
}
}
}


т рабочий.
Dmitri R. S.:
Sql_query:
По-моему, это не заработает.
Хоть бы табы поставили...
Чебурген:
Dmitri R. S.:По-моему, это была шутка :-)

Эта тема на forum.dklab.ru