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

Форум MySQL

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

 

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

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

тема: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
 
 автор: kviki   (07.04.2007 в 21:55)   письмо автору
 
 

Суть проблемы такая:
если набираю сылку так 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);

   
 
 автор: NovikovMA   (07.04.2007 в 22:39)   письмо автору
 
   для: 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

   
 
 автор: kviki   (07.04.2007 в 22:46)   письмо автору
 
   для: 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 в 23:08)   письмо автору
 
   для: 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']);
и все пошло..

   
Rambler's Top100
вверх

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