|
|
|
| Суть проблемы такая:
если набираю сылку так mysite.ru/str.php
то выводится только заголовок таблицы и выдается такая ошибка :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in z:\home\localhost\www\4\los.php on line 39
а если набираю так mysite.ru/str.php?page=1
то все работает
Привожу сам скрипт
<?php
Error_Reporting(E_ALL & ~E_NOTICE);
// устанавливаем число записей на странице
define('MAX_COUNT', 10);
// номер страницы получаем из GET переменной page
// нам подойдёт только целое число
$page = intval($_GET['page']);
// Подключаемся к базе
require_once("config.php");
// выполняем запрос, который узнает число записей в таблице
$res = mysql_query('SELECT COUNT(*) FROM product');
// сохраняем результат в переменную
$kv = mysql_result($res, 0);
// узнаём общее число страниц
// round не подходит, т.к. иногда количество страниц будет определяться не правильно
$num = ceil($kv / MAX_COUNT);
// выбираем записи, принадлежащие текущей странице
// не забываем отсортировать новости по дате добавления
$res = mysql_query('SELECT * FROM product ORDER BY puttime DESC LIMIT '.(($page - 1) * MAX_COUNT).', '.MAX_COUNT);
// выводим названия таблиц
echo "<br>";
?>
<table class="table" border="1" cellpadding="3" cellspacing="0" width="90%" bordercolordark="white" bordercolorlight="silver">
<tr align="center">
<td height="20" class="title">
Дата</td>
<td class="title">Производитель</td>
<td class="title">Тип памяти</td>
<td class="title">Цена</td>
<td class="title">Телефон</td>
</tr>
<?
// выводим данные
//while ($row = mysql_fetch_assoc($res))
while ($row = mysql_fetch_array($res)) //(39line) та самая строчка на которую ссылается ошибк
{
echo " <tr class=row align=center onmouseover=trtover(this) onmouseout=trtout(this)>
<td>".$row['puttime']."</td>
<td>".$row['firm']."</td>
<td>".$row['tip']."</td>
<td>".$row['price']." (".$row['valyta'].")</td>
<td>(".$row['kod'].")".$row['tel']."</td>
</tr>";
}
echo "</table>";
echo "<br>";
// смотрим за тем, чтобы номер страницы не вылетел за диапазоны
if ($page < 1 || $page > $num) {
$page = 1;
}
// в цикле выводим ссылки на страницы
for ($i = 1; $i <= $num; $i++)
{
if ($page != $i)
{
print '<a href="?page='.$i.'">'.$i.'</a> | ';
}
else
{ // ссылку на текущею страницу не выводим
print '<b>'.$i.'</b> |';
}
}
?>
Но как я думаю все из-за этой строчки:
$res = mysql_query('SELECT * FROM product ORDER BY puttime DESC LIMIT '.(($page - 1) *
MAX_COUNT).', '.MAX_COUNT); | |
|
|
|
|
|
|
|
для: kviki
(07.04.2007 в 21:55)
| | $num = ceil($kv / MAX_COUNT);
ИМХО там должно быть $MAX_COUNT и получается, что у тебя сам запрос не правильный....
Ну и в запросе тоже
res = mysql_query('SELECT * FROM product ORDER BY puttime DESC LIMIT '.(($page - 1) * $MAX_COUNT).', '.$MAX_COUNT);
Да и у тебя если $page<1 то получается в запросе LIMIT -1 | |
|
|
|
|
|
|
|
для: NovikovMA
(07.04.2007 в 22:39)
| | Изменил строчки
$num = ceil($kv / $MAX_COUNT); и
$res = mysql_query('SELECT * FROM product ORDER BY puttime DESC LIMIT '.(($page - 1) * $MAX_COUNT).', '.$MAX_COUNT);
появилась такая ошибка
Warning: Division by zero in z:\home\localhost\www\4\los.php on line 19
это строчка
$num = ceil($kv / $MAX_COUNT); | |
|
|
|
|
|
|
|
для: kviki
(07.04.2007 в 22:46)
| | Добавил
if(empty($page) or $page < 0) $page = 1;
if($page > MAX_COUNT) $page = MAX_COUNT;
после
$page = intval($_GET['page']);
и все пошло.. | |
|
|
|