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

Форум MySQL

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

 

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

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

тема: как убрать вывод ошибки
 
 автор: liberty   (22.02.2013 в 09:27)   письмо автору
 
 

есть каталог компаний по регионам рф.
в некоторых регионах база данных пустая - нет компаний.
выводится ошибка
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)
Вопрос: как убрать вывод ошибки?

  Ответить  
 
 автор: Sfinks   (22.02.2013 в 09:55)   письмо автору
 
   для: liberty   (22.02.2013 в 09:27)
 

Ошибка не из-за того, что нет компаний. Если в базе нет удовлетворяющих условиям поиска строк, то результат все-равно возвращается. Только он пустой. Ошибка в чем-то другом.

Замените
echo "<p>Напишите нам о себе </p><br />";
на
echo mysql_error();

Что пишет?

  Ответить  
 
 автор: liberty   (22.02.2013 в 10:07)   письмо автору
 
   для: 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

  Ответить  
 
 автор: Sfinks   (22.02.2013 в 10:13)   письмо автору
 
   для: 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");

Что пишет?

  Ответить  
 
 автор: liberty   (23.02.2013 в 06:35)   письмо автору
 
   для: 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

  Ответить  
 
 автор: Sfinks   (25.02.2013 в 09:08)   письмо автору
 
   для: 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_arraymysql_query($temp) );
  
$total ceil$temp[0]/$num );
  if( !
$total || (int)$_GET['page'] < $page 1;
  elseif( (int)
$_GET['page'] > $total )   $page $total;
  else                                    
$page = (int)$_GET['page'];
  
$start = ($page-1)*$num;

  Ответить  
 
 автор: liberty   (27.02.2013 в 08:28)   письмо автору
 
   для: Sfinks   (25.02.2013 в 09:08)
 

Спасибо. Теперь живем без ошибок)))

  Ответить  
 
 автор: liberty   (28.02.2013 в 07:10)   письмо автору
 
   для: liberty   (27.02.2013 в 08:28)
 

Кстати, сейчас у меня компании выводятся по 20 штук на страницу.
Как сделать, чтобы пользователь сам определял сколько старниц отображается на странице: 5, 20, 50...

  Ответить  
 
 автор: Jovidon   (01.03.2013 в 12:16)   письмо автору
 
   для: 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_arraymysql_query($temp) ); 
    
$total ceil$temp[0]/$num ); 
    if( !
$total || (int)$_GET['page'] < $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>

  Ответить  
Rambler's Top100
вверх

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