Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Постраничный вывод 
:(
    Опции темы
No_Mad
Дата 13.8.2004, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 19.7.2004

Репутация: нет
Всего: нет



Я сделал все как описал в FAQ'e Mutagen. Все ссылки, информацию выводит но как нажимаю допустим перейти на 2 страницу, он адрес изменяет но больше ничего(информация на экране не меняется). Немог бы кто-нибудь помочь..

ЗЫ: переключал в ручную на страницах инфа нормально распологается..
PM MAIL ICQ   Вверх
arial
Дата 13.8.2004, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 772
Регистрация: 11.3.2003
Где: Архангельская обл .

Репутация: 6
Всего: 7



Попробуй PEAR::Pager или PEAR::Pager_sliding. Очень удобная вещ! wink.gif


--------------------
Есть люди, в которых живет Бог. Есть люди, в которых живет дьявол. А есть люди, в которых живут только глисты. (Ф. Раневская)
PM ICQ   Вверх
IZ@TOP
Дата 14.8.2004, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Можешь кинуть сюда свой код? Может ты просто не привязал данные к своему скрипту?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Chuck
Дата 15.8.2004, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Сушня
**


Профиль
Группа: Эксперт
Сообщений: 442
Регистрация: 12.12.2003
Где: Узбекистан, Ташке нт

Репутация: нет
Всего: 9



Не знаю, что там в ФАКе, но я постранично делаю так!
Запросом
"SELECT * FROM table LIMIT $next, 20"

Код

function print_pages($pagecount, $on_page, $param)
{
echo "<table border='0' cellspacing='0' cellpadding='5'><tr><td>Страниц:</td>";
$pages = (int)ceil($pagecount / $on_page);
for ($i = 0; $i < $pages; $i++)
 {
 $k = $i * $on_page;
 $page = $i + 1;
 echo "<td><a href='show.php?next=$k&$param'>$page</a></td>";
 }
echo "</tr></table>";
}

А вызов
Код

//$pagecount  - всего записей!
print_pages($pagecount, 20, "user=$user");

PM MAIL WWW GTalk   Вверх
IZ@TOP
Дата 15.8.2004, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(Chuck @ 15.8.2004, 10:28)
"SELECT * FROM table LIMIT ".intval($_GET['next']).", 20"

Безопасное программирование, часть 1.



Цитата(Chuck @ 15.8.2004, 10:28)
function print_pages($pagecount, $on_page, $param)
{
echo "<table border='0' cellspacing='0' cellpadding='5'><tr><td>Страниц:</td>";
$pages = ceil($pagecount / $on_page);
for ($i = 0; $i < $pages; $i++)
{
$k = $i * $on_page;
$page = $i + 1;
echo "<td><a href='show.php?next=$k&$param'>$page</a></td>";
}
echo "</tr></table>";
}




--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Chuck
Дата 15.8.2004, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Сушня
**


Профиль
Группа: Эксперт
Сообщений: 442
Регистрация: 12.12.2003
Где: Узбекистан, Ташке нт

Репутация: нет
Всего: 9



Цитата

Цитата(Chuck @ 15.8.2004, )
"SELECT * FROM table LIMIT ".intval($_GET['next']).", 20"

Безопасное программирование, часть 1.

Знаю, просто сильно спешил - дюал ап smile.gif

Цитата

$pages = ceil($pagecount / $on_page);

Ты прав, ceil и так возвращает целое число! smile.gif)

Спасибо!
PM MAIL WWW GTalk   Вверх
No_Mad
Дата 16.8.2004, 07:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 19.7.2004

Репутация: нет
Всего: нет



Вот мой код:

Код
<?

$db_name = "test";


mysql_select_db($db_name);

echo "<TABLE cellSpacing=0 cellPadding=0 width='100%' bgColor=#6699cc border=1>";
echo "<tr><td>Продавец</td><td>Адрес</td><td>Телефон</td>";
echo "<td>E-mail</td><td>Рейтинг</td><td>Товар</td>";
echo "<td>Цена</td><td>Наличие</td></tr>";

if (!isset($_GET['page'])) {$_GET['page'] = '1';}


$to_page = 3;
$pages_links = 2;

$p = ($_GET['page'] * $to_page) - $to_page;

$query = "SELECT COUNT(id) FROM price";
$result = mysql_query($query);
$count = mysql_result($result,0,'COUNT(id)');
$pages = ceil($count / $to_page);

if ($_GET['page'] > $pages) {
  header("Location: pages.php?page=".$pages);
} elseif($_GET['page'] < 1) {
  header("Location: pages.php?page=1");
}


$query = "select tovar.creater, , price.price1, price.nal, prod.name, prod.adres, prod.telefon, prod.mail, prod.reyting from prod, tovar, price where tovar.id = price.tovar and price.prod = prod.id and price.nal > 0 LIMIT ".$p.",".$to_page;

$result = mysql_query($query);

for ($i=0; $i<mysql_num_rows($result); $i++)
{
echo "<tr>";

$sql=mysql_fetch_array($result);

echo "<td>$sql[name]</td><td>$sql[adres]</td><td>$sql[telefon]</td>";
echo "<td>$sql[mail]</td><td>$sql[reyting]</td>";
echo "<td>$sql[creater]</td>";
echo "<td>$sql[price1]</td><td>$sql[nal]</td>";

echo "</tr>";
}

$pages_links_view_max = 0;
$pages_links_view_min = 0;

if ($pages - $_GET['page'] >= ($pages_links + 1)) {
  $to_max = $_GET['page'] + $pages_links;
  $pages_links_view_max = 1;
} else {
  $to_max = $pages;
}


if ($_GET['page'] > ($pages_links + 1)) {
  $to_min = $_GET['page'] - $pages_links;
  $pages_links_view_min = 1;
} else {
  $to_min = 1;
}

if ($pages_links_view_min == 1) {
  echo ' <A href="?page=1"> К началу</A>';
}

if ($_GET['page'] > 1) {
  echo ' <A href="?page='.($_GET['page'] - 1).'"> &lt;&lt;</A>';
}

if ($pages_links_view_min == 1) {
  echo ' ...';
}


for ($p = $to_min; $p <= $to_max; $p++) {
  if ($_GET['page'] == $p) {
      echo ' <B>['.$p.']</B>';
  } else {
      echo ' <A href="?page='.$p.'">['.$p.']</A>';
  }
}
if ($pages_links_view_max == 1) {
  echo ' ...';
}

if ($_GET['page'] < $pages) {
  echo ' <A href="?page='.($_GET['page']+1).'"> &gt;&gt;</A>';
}

if ($pages_links_view_max == 1) {
  echo ' <A href="?page='.$pages.'"> Последняя ['.$pages.']</A>';
}

?>


Это сообщение отредактировал(а) No_Mad - 16.8.2004, 07:09
PM MAIL ICQ   Вверх
IZ@TOP
Дата 16.8.2004, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Ужасно выглядит. Ты мне скажи что тебе нужно чтобы выводилось? Все страницы какие есть в БД? Или просто две стрелки взад-вперед?
Вот метод несколько проще чем тот который ты представил:
Цитата
$cp = (isset($_GET['page'])) ? intval($_GET['page']) : 1;
$maxr = 10; // Количество записей на страницу.
// Выбираем количество записей в таблице.
$qc = mysql_query("select count(*) from tablename");
$tcnt = mysql_fecth_array($qc, MYSQL_NUM);
$sp = ceil($tcnt[0] / $maxr); // Всего страниц.
$cp = ($cp > $sp) ? $sp - 1 : (($cp < 1) ? 1 : $cp); // Поверка на выход за границу текущей страницы.
$ls = $cp * $maxr; // С какого места выбирать записи в БД.
// Далее делаем выборку из БД.
$q = mysql_query('select * from tablename limit '.$ls.', '.$maxr);
$pp = ($cp < 1) ? 1 : $cp - 1; // Prev page number
$np = ($cp > $sp) ? $cp : $cp + 1; // Next page number

// Теперь можем печатать ссылки на предыдущую и следующую страницы:

echo '<a href="?page='.$pp.'">prev</a> || <a href="?page='.$np.'">next</a>';



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
No_Mad
Дата 16.8.2004, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 19.7.2004

Репутация: нет
Всего: нет



В моем случае "след." и "пред." страницы будут не совсем удобны. Надо примерно как у вас на форуме, с несколькими ссылками на ближайшие страницы.
PM MAIL ICQ   Вверх
IZ@TOP
Дата 17.8.2004, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Ну так что мешает сделать еще ссылки типа
Цитата
echo '<a href="'.($pp-1).'">'.($pp - 1).'</a>';
echo '<a href="'.$pp.'">'.$pp.'</a>';
echo '<a href="'.$np.'">'.$np.'</a>';
echo '<a href="'.($np + 1).'">'.($np + 1).'</a>';



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
No_Mad
Дата 19.8.2004, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 19.7.2004

Репутация: нет
Всего: нет



IZ@TOP У тебя нескоко неточностей в коде. Вот один:
Цитата

$tcnt = mysql_fetch_array($qc, MYSQL_NUM);

А другие я пока не заметил.
Он например выводит неправельное количество строк на экран(мне кажется в деление чето нето). И не осуществляет переход между листами..

ЗЫ: Если поставить maxr=5, при столбца~4 то он чето как-то(по кол-ву строк). Если поставить maxr=10 то он нечего не выводит..
PM MAIL ICQ   Вверх
IZ@TOP
Дата 19.8.2004, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Цитата(IZ @ 16.8.2004, 11:46)
$ls = $cp * $maxr - $maxr; // С какого места выбирать записи в БД.

Сорри smile.gif У меня просто возможности проверить нету.
Цитата(No_Mad @ 19.8.2004, 11:16)
IZ@TOP У тебя нескоко неточностей в коде. Вот один:

Бывает smile.gif


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
No_Mad
Дата 20.8.2004, 07:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 19.7.2004

Репутация: нет
Всего: нет



IZ@TOP
Извени за назойливость и тупость, но непашет он у меня.. Выводятся строки теперь правильно, но между страницами не хочет делать переход(Адрес изменяется но ничего больше).
PM MAIL ICQ   Вверх
IZ@TOP
Дата 20.8.2004, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



No_Mad
Код в студию.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
No_Mad
Дата 20.8.2004, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 19.7.2004

Репутация: нет
Всего: нет



Вот:

Код
<?

$db_name = "test_0";

if(!mysql_connect($server,$user,$passwd))
{
echo $head;
echo $cp;
echo $body;
echo "<h2>$error</h2>";
echo "</body></html>";
exit;
}

mysql_select_db($db_name);

echo "<TABLE cellSpacing=0 cellPadding=0 width='100%' bgColor=#6699cc border=1>";
echo "<tr><td>Продавец</td>....</tr>";

$cp = (isset($_GET['page'])) ? intval($_GET['page']) : 1;
$maxr = 5;
$qc = mysql_query("select count(*) from cell");
$tcnt = mysql_fetch_array($qc, MYSQL_NUM);
$sp = ceil($tcnt[0] / $maxr);
$cp = ($cp > $sp) ? $sp - 1 : (($cp < 1) ? 1 : $cp);
$ls = $cp * $maxr - $maxr;
$q = mysql_query('select tovar.creater, cell.price, cell.nal, prod.name, prod.adres from prod, tovar, cell where tovar.id = cell.tovar and cell.prod = prod.id and cell.nal > 0 and cell.tol > now() order by prod.name limit '.$ls.', '.$maxr);
$pp = ($cp < 1) ? 1 : $cp - 1;
$np = ($cp > $sp) ? $cp : $cp + 1;


while ($sql=mysql_fetch_array($q)) {
$count++;
 print ("<tr");
 if ($count/2==intval($count/2))
   print (" bgcolor=#e1e1e1");
 print ("><td align=center>${sql[name]}</td><td align=center>${sql[adres]}</td><td align=center>${sql[creater]}</td>
<td align=center>${sql[price1]}</td>
<td align=center>${sql[nal]}</td></tr>\n");
 }

echo '<a href="?page='.$pp.'">(prev)</a>';
echo '<a href="?page'.($pp-1).'">'.($pp - 1).'_</a>';
echo '<a href="?page'.$pp.'">'.$pp.'_</a>';
echo '<a href="?page'.$np.'">'.$np.'_</a>';
echo '<a href="?page'.($np + 1).'">'.($np + 1).'_</a>';
echo '<a href="?page='.$np.'">(next)</a>';

?>


Сделал все как ты показал..

Это сообщение отредактировал(а) No_Mad - 20.8.2004, 11:19
PM MAIL ICQ   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1821 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.