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

Форум PHP

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

 

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

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

тема: Помогите сделать постраничную навигацию
 
 автор: Адоп Акробат   (12.09.2004 в 04:47)   письмо автору
 
 

Доброе време суток!!!
Я хочу сделать фотогалерею, ана должна выводится(из мускуля) в 3 ячейки горизонтально и 3 вертикально (ячейки из таблицы) например:
фото1 фото2 фото3
фото4 фото5 фото6
фото7 фото8 фото9
и кагда ана доходит до девятой фотке то должна созждоватса сылка на другую страницу в которой должны стоять остольные фотографии.
Я сам примерно понемаю как это делается, но только примерно :)
Быду очень благодарен если вы приведете небольшой скриптик :)

   
 
 автор: cheops   (12.09.2004 в 10:07)   письмо автору
 
   для: Адоп Акробат   (12.09.2004 в 04:47)
 

Для выборки из таблицы ограниченного числа записей следует использовать инструкцию LIMIT N, M, где N - позиция начиная к которой следует выбирать записи (например $start), а M - число выбираемых записей ($pnumber). Сам SQL-запрос может выглядеть следующим образом:
SELECT * FROM base LIMIT 10, 9

Поэтому управление выводом сводится к манипуляции этими двумя переменными. Для вывода ссылок на другие странице понадобится так же общее число записей в таблице - $total (SELECT COUNT(*) FROM base).
<?php
// Число страниц с фотографиями
$number = (int)($total/$pnumber);
if((float)(
$total/$pnumber) - $number != 0$number++;
// В цикле выводим ссылки на другие фотографии
for($i 1$i<=$number$i++)
{
    if(
$number == $i)
    {
        if(
$start == $i)
           echo 
"[".(($i 1)*$pnumber 1)."-$total]";
        else
           echo 
"<a href=index.php?start=".$i.">[".(($i 1)*$pnumber 1)."-$total]</a>";
    }
    else
   {
        if(
$start == $i)
           echo 
"[".(($i 1)*$pnumber 1)."-".$i*$pnumber."]";
        else
           echo 
"<a href=index.php?start=".$i.">[".(($i 1)*$pnumber 1)."-".$i*$pnumber."] </a>";
    }
}
?>

   
 
 автор: Адоп Акробат   (12.09.2004 в 13:32)   письмо автору
 
   для: cheops   (12.09.2004 в 10:07)
 

Если вас не затруднит моглибы вы чуть лутше объеснить этот код ?

   
 
 автор: elenaki   (12.09.2004 в 14:10)
 
   для: Адоп Акробат   (12.09.2004 в 13:32)
 

извините, позволю себе не согласиться. у вас только навигационная часть, т.е. ссылки на группы. а вопрос был сначала про вывод в таблицу, а потом уже ссылки на други страницы. я делала такое. причем можно задавать количество строк и столбцов на странице, скрипт рассчитывает количество страниц, если на последней странице таблица неполная, то не выводятся пустые ячейки.
вот, смотрите здесь

(если б я еще знала, как код прицеплять как у вас - красиво...)

   
 
 автор: elenaki   (12.09.2004 в 14:19)
 
   для: elenaki   (12.09.2004 в 14:10)
 

нашла как код выделять :)

на PHP я это написала давно-давно и не использовала. но потом пришлось переделать на CFML. а сейчас - обратно на PHP :)
если можно короче - исправляйте. мне кажется, все понятно...

<?php
include "config.php";

$show_cols 3// кол-во колонок
$show_rows =2// кол-во строк
if (!isset($start1)) $start1=1//если нач.страница не установлена, идем на первую 

 //определяем, сколько столбцов и где мы находимся
$query =  ("SELECT * FROM #table order by pic_id ");//здесь можно только кол-во записей запрашивать
$array=mysql_query($query); 
$num_rows mysql_num_rows($array); //всего строк в базе
$cols=floor($num_rows/$show_cols); //всего кол-во столбцов
$pages floor($num_rows/($show_cols*$show_rows));//кол-во страниц
if ($num_rows $show_cols*$show_rows*$pages$pages++; //если строк в базе больше, чем помещается на одной странице, переходим на след.
for ($ii=1$ii<=$pages$ii++) { //начинаем цикл перебора всех страниц
$from1=$ii*$show_rows*$show_cols-($show_rows*$show_cols-1); //
$to1=$ii*$show_rows*$show_cols//кол-во показ.страниц
if ($to1 $num_rows$to1 $num_rows//если кол-во показ.страниц больше, чем строк в базе, делаем его равным
if ($start1==$from1) echo "| <font style=\"font-face: Verdana, Arial, Helvetica, sans-serif;
    color : #ff8c00; font-weight : bold; font-size: 12px;\">
$from1 - $to1</font>"
else 
{echo 
" | <a href=\"view4.php?start1=$from1&gal=$gal\" style=\"font-face: Verdana, Arial, Helvetica, sans-serif;
    color : #000000; font-weight : bold; font-size: 12px;\"> 
$from1 - $to1</a>";}
        
}
?>
</td></tr></table><br><br>
<?
/// вывод страницы
if ($num_rows $pages*$show_cols*$show_rows$vid++; 
for (
$iii=0$iii<=$vid$iii++) { 

/// вывод таблицы
if ($num_rows $show_rows$show_rows++; 
for (
$i=2$i<=$show_rows$i++) { 
$start1=$start1 1
$query "SELECT * FROM ecard_pics WHERE own = 'Y' and markdel = 'N' ORDER BY pic_id limit $start1,$show_cols";
$start1=$start1+$show_cols 1;
$result mysql_query($query);
$number mysql_num_rows($result);
echo
"<table align=center border=\"0\"  cellpadding=5 cellspacing=2 >";
$j 0;
    WHILE (
$j $number)// вывод строки
     
{
     
$pic_name mysql_result($result,$j,"pic_name");
     echo
"<td align=center bgcolor=#ffffff valign=middle style=\"border-style: solid; border-color: #909090; border-width: 1px\">
     <img src=\"mic/"
.$pic_name."\" border=0></TD>";
     
$j++;
     }
// конец вывода строки
}// конец вывода таблицы
}// конец вывода страницы
/// 
?>

   
 
 автор: Адоп Акробат   (12.09.2004 в 14:50)   письмо автору
 
   для: elenaki   (12.09.2004 в 14:19)
 

Большое спосибо всем за помошь!!!!

   
Rambler's Top100
вверх

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