Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Постраничная навигация
 
 автор: sata   (21.04.2005 в 20:21)   письмо автору
 
 

Неподскажите как зделать так чтобы первые 20 строк из базы выводились на 1 странице вторая двадцатка на второй и тд. вот кусок кода заранее спасибо

<?  
require "config.php";
if (!
mysql_connect($server,$user,$pass)){echo "Не могу подключится к базе данных. Проверьте правильность пароля, логина и имя базы"; exit;}
mysql_select_db($dbname);
echo 
"<body>";
echo 
"<table border=1 cellspacing=0 cellpadding=0>";
$r=mysql_query("select * from links");
for (
$i=0$i<mysql_num_rows($r); $i++){
echo 
"<tr>";
$f=mysql_fetch_array($r);
echo 
"<td><center>$f[gif]</center></td><td><center>$f[link]</center></td>";
echo 
"</tr>";} 
echo 
"</table>";
echo 
"</body>";
mysql_close();
?>

   
 
 автор: alik   (21.04.2005 в 20:29)   письмо автору
 
   для: sata   (21.04.2005 в 20:21)
 

Чтобы выводились всего от 1 до 20 строк надо так

select * from links limit 0,20;

   
 
 автор: sata   (21.04.2005 в 20:37)   письмо автору
 
   для: alik   (21.04.2005 в 20:29)
 

Это я знаю а вот как зделать когда допустим в базе сохранено 100 значений и они выводились по 20 на каждую страницу и это всё создавалось динамически

   
 
 автор: Akira   (21.04.2005 в 20:56)   письмо автору
 
   для: sata   (21.04.2005 в 20:37)
 

Ищите на форуме тема поднималась не однократно. Могу на вскидку дать алгоритм.
1)Считаем сколько всего значений
2)Делим общее кол-во на кол-во значений выводимых за раз (вычисляем кол-во страниц)
3) При нажатие на номер страницы происходит запрос select * from links limit [кол-во на странице],[номер страницы];

   
 
 автор: sata   (21.04.2005 в 21:43)   письмо автору
 
   для: Akira   (21.04.2005 в 20:56)
 

Спасибо нашёл на форуме как это смастерить. А вот как зделать сортировку чтобы выводились с последнего по первое, то есть сперва идёт 100 и на уменьшение что то я ненашёл неподскажете. Спасибо

   
 
 автор: ZC   (21.04.2005 в 22:07)   письмо автору
 
   для: sata   (21.04.2005 в 21:43)
 

Ну если у вас в таблице поле с датой добавления то можно сделать так

SELECT * FROM 'links' ORDER by 'putdate'

Где putdate - дата добавления ссылки

   
 
 автор: sata   (21.04.2005 в 22:18)   письмо автору
 
   для: ZC   (21.04.2005 в 22:07)
 

К сожалению дата нехранится
Возникла тут проблемка с постраничной навигацией нехорошие ошибки кидает код взят со статьи этого сайта и переделан под себя.

Notice: Undefined index: in z:\home\test1.ru\www\index2.php on line 7
Fatal error: Unsupported operand types in z:\home\test1.ru\www\index2.php on line 12
и сам код

<?php 
// Устанавливаем соединение с базой данных 
include "config.php"
// Переменная хранит число сообщений выводимых на странице 
$num 20
// Извлекаем из URL текущую страницу 
$page $_GET['page']; 
// Определяем общее число сообщений в базе данных 
$result mysql_query("SELECT COUNT(*) FROM links"); 
$links mysql_fetch_row($result); 
// Находим общее число страниц 
$total intval(($links 1) / $num) + 1
// Определяем начало сообщений для текущей страницы 
$page intval($page); 
// Если значение $page меньше единицы или отрицательно 
// переходим на первую страницу 
// А если слишком большое, то переходим на последнюю 
if(empty($page) or $page 0$page 1
  if(
$page $total$page $total
// Вычисляем начиная к какого номера 
// следует выводить сообщения 
$start $page $num $num
// Выбираем $num сообщений начиная с номера $start 
$result mysql_query("SELECT * FROM links LIMIT $start$num"); 
// В цикле переносим результаты запроса в массив $postrow 
while ( $postrow[] = mysql_fetch_array($result)) 
echo 
"<table>"
for(
$i 0$i $num$i++) 

echo 
"<tr> 
         <td>"
.$postrow[$i]['gif']."</td> 
         <td>"
.$postrow[$i]['link']."</td></tr>"

echo 
"</table>"
// Проверяем нужны ли стрелки назад 
if ($page != 1$pervpage '<a href= ./page?page=1><<</a> 
                               <a href= ./page?page='
. ($page 1) .'><</a> '
// Проверяем нужны ли стрелки вперед 
if ($page != $total$nextpage ' <a href= ./page?page='. ($page 1) .'>></a> 
                                   <a href= ./page?page=' 
.$total'>>></a>'

// Находим две ближайшие станицы с обоих краев, если они есть 
if($page 0$page2left ' <a href= ./page?page='. ($page 2) .'>'. ($page 2) .'</a> | '
if(
$page 0$page1left '<a href= ./page?page='. ($page 1) .'>'. ($page 1) .'</a> | '
if(
$page <= $total$page2right ' | <a href= ./page?page='. ($page 2) .'>'. ($page 2) .'</a>'
if(
$page <= $total$page1right ' | <a href= ./page?page='. ($page 1) .'>'. ($page 1) .'</a>'

// Вывод меню 
echo "$pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage"
?> 

   
 
 автор: Akira   (21.04.2005 в 22:46)   письмо автору
 
   для: sata   (21.04.2005 в 22:18)
 


<?

#########################################################
$db_host "localhost";
$db_user "root";
$db_pass "";
$db_name "phpcom";
$dbc mysql_connect($db_host$db_user$db_pass); // Коннект к бд
$dbs mysql_select_db($db_name); // Выбор бд
#########################################################
$max_mess 10/*Максимальное кол-во*/ 
#########################################################
if (empty($page)) $page 0
if (
$page 0$page 0
#########################################################
/* Общее кол-во */
#########################################################
$count_query 'select count(*) from 'ip' where 1 ;';
$total_mess mysql_query ($count_query);
$total_count mysql_fetch_array ($total_mess);
$count $total_count ['count(*)'];
##########################################################

$query mysql_query("select * from 'ip' where 1 LIMIT ".$page." , ".$max_mess.";");
while (
$otvet mysql_fetch_array($query))
{
print 
$otvet[ip];
print 
'<br>';
}

print 
"<br/>";
################################
$link $count $max_mess;
$n substr($page,0,1);
for (
$i=0$i $link$i++)
{
if (((
$i $n)*10) == $page)
{
print 
'['.($i 1).']';
}
else
{
print 
'<a href="'.$PHPSELF.'?page=';
if (
$page >= $count)
{
print ((
$page $i)* $max_mess);
}
else 
{
$page 0;
print ((
$page $i)* $max_mess);
}
print 
'">['.($i 1).']</a>';
}
if ((
$i+1) < $link) print "-";
}
#################################



?>

Могу придложить такой вариант только он сыроват.

   
 
 автор: sata   (22.04.2005 в 18:13)   письмо автору
 
   для: Akira   (21.04.2005 в 22:46)
 

Ну вот типа конечный рабочий вариант кому надо код почти весь не мой а найден на просторах интернета подделан до рабочей стадии и функционирует :)

<? 
function link_bar($page$pages_count
{      
    for (
$j=1;$j<=$pages_count;$j++) 
    { 
            
// Вывод ссылки 
        
if ($j==$page) echo ' <a style="color: #808000;" ><b>'.$j.'</b></a> '
            else echo 
' <a style="color: #808000;" href='.$_SERVER['PHP_SELF'].'?page='.$j.'>'.$j.'</a> '
            
// Выводим разделитель после ссылки, кроме последней 
            // например, вставить "|" между ссылками 
        
if ($j!=$pages_count) echo ' ';            
    } 
// Конец функции 

    // Подключение к базе данных 
$server="localhost";
$dbname="links";
$user="root";
$pass="";
if (!
mysql_connect($server,$user,$pass)){echo "Не могу подключится к базе данных. Проверьте правильность пароля, логина и имя базы"; exit;}
mysql_select_db($dbname);

    
// Подготовка к постраничному выводу 
$perpage 11// Количество отображаемых данных из БД  (11==>выводит 10)
if (empty($_GET['page']) or $_GET['page']<=0$page 1
    else 
$page = (int)$_GET['page']; // Считывание текущей страницы 
    // Общее количество информации 
$count mysql_numrows(mysql_query('SELECT * FROM links')) or die('Error! Записей не найдено!'); 
$pages_count ceil($count $perpage); // Количество страниц 
    // Если номер страницы оказался больше количества страниц 
if ($page $pages_count$page $pages_count
$start_pos = ($page-1) * $perpage// Начальная позиция, для запроса к БД 
// 

link_bar($page$pages_count); 

// 
    // Вывод информации из базы данных 
$result mysql_query('SELECT * FROM links LIMIT '.$start_pos.', '.$perpage) or die('Error!'); 
echo 
'<br><center><b>Каталог ссылок</b><br><br>'
while (
$row mysql_fetch_array($result)) echo "<table><tr><td><center>$row[gif]</center></td><td><center>$row[link]</center></td></tr></table>"
echo 
'</center>'
?> 

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования