|
|
|
| есть каталог компаний по регионам рф.
в некоторых регионах база данных пустая - нет компаний.
выводится ошибка
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ..... php on line 102
|
$result3 = mysql_query("SELECT * FROM data WHERE cat = 1 and id_region='" . mysql_real_escape_string($id_region) . "' LIMIT $start, $num", $db);
if (!$result3)
{
echo "<p>Напишите нам о себе </p><br />";
}
if (mysql_num_rows($result3) > 0)
{
$myrow3 = mysql_fetch_array($result3);
do
|
102 линию выделил жирным. if (mysql_num_rows($result3) > 0)
Вопрос: как убрать вывод ошибки? | |
|
|
|
|
|
|
|
для: liberty
(22.02.2013 в 09:27)
| | Ошибка не из-за того, что нет компаний. Если в базе нет удовлетворяющих условиям поиска строк, то результат все-равно возвращается. Только он пустой. Ошибка в чем-то другом.
Замените
echo "<p>Напишите нам о себе </p><br />";
| на
Что пишет? | |
|
|
|
|
|
|
|
для: Sfinks
(22.02.2013 в 09:55)
| | You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-20, 20' at line 1 | |
|
|
|
|
|
|
|
для: liberty
(22.02.2013 в 10:07)
| | Подозреваю, что у вас $start равно -20, а оно не может быть <0.
Для проверки выведите еще сформированный запрос. Временно измените
$result3 = mysql_query("SELECT * FROM data WHERE cat = 1 and id_region='" . mysql_real_escape_string($id_region) . "' LIMIT $start, $num", $db);
|
на
exit("SELECT * FROM data WHERE cat = 1 and id_region='" . mysql_real_escape_string($id_region) . "' LIMIT $start, $num");
|
Что пишет? | |
|
|
|
|
|
|
|
для: Sfinks
(22.02.2013 в 10:13)
| | Выводит:
SELECT * FROM data WHERE cat = 1 and id_region='9' LIMIT -20, 20
а вот так формируется $start
$num = 20;
// Извлекаем из URL текущую страницу
@$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result00 = mysql_query("SELECT COUNT(*) FROM data WHERE cat = 1 and id_region='" . mysql_real_escape_string($id_region) . "'");
$temp = mysql_fetch_array($result00);
$posts = $temp[0];
// Находим общее число страниц
$total = (($posts - 1) / $num) + 1;
$total = intval($total);
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
// Вычисляем начиная с какого номера
// следует выводить сообщения
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start
|
| |
|
|
|
|
|
|
|
для: liberty
(23.02.2013 в 06:35)
| | Что-то тут перемудрили вы:
<?php
$num = 20;
$temp = "SELECT COUNT(*) FROM data WHERE cat=1 and id_region=".intval($id_region);
$temp = mysql_fetch_array( mysql_query($temp) );
$total = ceil( $temp[0]/$num );
if( !$total || (int)$_GET['page'] < 1 ) $page = 1;
elseif( (int)$_GET['page'] > $total ) $page = $total;
else $page = (int)$_GET['page'];
$start = ($page-1)*$num;
|
| |
|
|
|
|
|
|
|
для: Sfinks
(25.02.2013 в 09:08)
| | Спасибо. Теперь живем без ошибок))) | |
|
|
|
|
|
|
|
для: liberty
(27.02.2013 в 08:28)
| | Кстати, сейчас у меня компании выводятся по 20 штук на страницу.
Как сделать, чтобы пользователь сам определял сколько старниц отображается на странице: 5, 20, 50... | |
|
|
|
|
|
|
|
для: liberty
(28.02.2013 в 07:10)
| |
<?php
if(!isset($_GET["limit"])) $num = 20;
else $num = intval($_GET["limit"]);
$temp = "SELECT COUNT(*) FROM data WHERE cat=1 and id_region=".intval($id_region);
$temp = mysql_fetch_array( mysql_query($temp) );
$total = ceil( $temp[0]/$num );
if( !$total || (int)$_GET['page'] < 1 ) $page = 1;
elseif( (int)$_GET['page'] > $total ) $page = $total;
else $page = (int)$_GET['page'];
$start = ($page-1)*$num;
?>
<form action="file_name.php?limit=<?= $num; ?>" method="GET">
<select name="limit" onChange="submit()">
<option value="5">5</option>
<option value="10">10</option>
<option value="20">20</option>
<option value="n">n</option>
</select>
</form>
|
| |
|
|
|