Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: коректность ссылки

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
kuller
Отправлено: 27 Января, 2010 - 11:06:25
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 561
Дата рег-ции: Нояб. 2009  


Помог: 2 раз(а)




подскажите пожалуста почему этот код перестал работать
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $result = mysql_query("SELECT * FROM table WHERE id='$cat'");
  3. if(!$result)
  4. {
  5. echo "error";
  6. }
  7.  

я считаю так, когда оправляю запрос, проверяется перемённая $cat совпадением с id если не сопадает, тогда выводится error.
но почему проверка непроходит правильно?
 
 Top
Viper
Отправлено: 27 Января, 2010 - 11:20:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




а запрос точно ничего не возвращает ?


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
SDR
Отправлено: 27 Января, 2010 - 11:21:09
Post Id


Гость


Покинул форум
Сообщений всего: 72
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




1. А я считаю, что астрологов и предсказателей тут нет

2. Я считаю, что error_reporting нужно выставлять в E_ALL, а ошибку базы проверять mysql_error() ом. Неполенитесь, погуглите, если слова где незнакомые. И вот это полезно почитать:
http://www.phpfaq[dot]ru/debug
http://phpclub[dot]ru/detail/article/2002-10-03

(Отредактировано автором: 27 Января, 2010 - 11:22:35)

 
 Top
kuller
Отправлено: 27 Января, 2010 - 11:32:24
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 561
Дата рег-ции: Нояб. 2009  


Помог: 2 раз(а)




Viper, значение в $cat берётся правильное только с базой не проверяет. забыл добавить что перед запросом написано
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. if(isset($_GET['cat']))
  3. {
  4. $cat = htmlspecialchars($_GET['cat']);
  5. }
  6.  

----
SDR, нет сообщения об ошибке

(Отредактировано автором: 27 Января, 2010 - 11:40:12)

 
 Top
SDR
Отправлено: 27 Января, 2010 - 11:39:20
Post Id


Гость


Покинул форум
Сообщений всего: 72
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




kuller пишет:
Viper, значение в $cat берётся правильное только с базой не проверяет. забыл добавить что перед запросом написано
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. if(isset($_GET['cat']))
  3. {
  4. $cat = htmlspecialchars($_GET['cat']);
  5. }
  6.  

----
SDR, причем тут error_reporting ?


при том, что если геткат не иссет, то чему равен кат?
это как версия. при нормальном эрроррепортинге в этом случае будет ворнинг

а вообще вместе с ошибкой выведи текст запроса (надеюсь сам догадаешся как) и mysql_error (см. выше)

-----
маленькое замечание не по теме. подозреваю, что id - integer.. проще было бы $cat = (int)$_GET['cat'];

(Отредактировано автором: 27 Января, 2010 - 11:41:25)

 
 Top
EuGen Администратор
Отправлено: 27 Января, 2010 - 11:41:27
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




SDR пишет:
если геткат не иссет, то чему равен кат

Прямо заклинание какое-то.
Но автору и правда следует научиться отладке.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Phantik
Отправлено: 27 Января, 2010 - 11:52:23
Post Id


Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Июнь 2009  


Помог: 0 раз(а)




mysql_query вернет FALSE если запрос не выполнится, и вернет Resurce если выполнится.
а равно $cat id или нет это никого не волнует.
 
 Top
kuller
Отправлено: 27 Января, 2010 - 11:54:28
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 561
Дата рег-ции: Нояб. 2009  


Помог: 2 раз(а)




разобрался почему не работало. в запросе была ошибка
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $result = mysql_query("SELECT * FROM table WHERE id='$cat'");
  3. if(!$result)
  4. {
  5. echo "error";
  6. }
  7.  

проверяю поле id а вытаскиваю все поля, а следует выташить только поле id
---
SDR, спасиб, указал ещё на ошибки Улыбка
 
 Top
SDR
Отправлено: 27 Января, 2010 - 11:56:41
Post Id


Гость


Покинул форум
Сообщений всего: 72
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Phantik пишет:
а равно $cat id или нет это никого не волнует.

кстати да, согласен, в этом случае, когда $cat берётся в кавычки, даже при пустом $cat запрос выполнится, если таблица table и поле id в ней существует

но дело не в этом. глянуть на текст ошибки мускула в любом случае стоит, как и стоит уметь писать правильно и отлаживать.
(Добавление)
kuller пишет:
SDR, спасиб, указал ещё на ошибки Улыбка

пожалуйста.. и всё таки ты зря умных советов не слушаешь ))
думаешь на гугл просто так посылают? ;)

CODE (text):
скопировать код в буфер обмена
  1.  
  2. $query = "SELECT * FROM table WHERE id='$cat'";
  3. $result = mysql_query($query);
  4. if(!$result)
  5. {
  6. die ("SQL: $query<br/>Error: ".mysql_error());
  7. }
  8.  


последний раз пишу за тебя, при игноре советов Улыбка
ну. и что выдаёт?

(Отредактировано автором: 27 Января, 2010 - 12:01:12)

 
 Top
Phantik
Отправлено: 27 Января, 2010 - 12:00:55
Post Id


Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Июнь 2009  


Помог: 0 раз(а)




2 kuller
А что именно ты проверяешь условием if? Как должен твой код работать правильно?
 
 Top
kuller
Отправлено: 27 Января, 2010 - 12:13:14
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 561
Дата рег-ции: Нояб. 2009  


Помог: 2 раз(а)




SDR пишет:
Phantik пишет:
а равно $cat id или нет это никого не волнует.

кстати да, согласен, в этом случае, когда $cat берётся в кавычки, даже при пустом $cat запрос выполнится, если таблица table и поле id в ней существует

но дело не в этом. глянуть на текст ошибки мускула в любом случае стоит, как и стоит уметь писать правильно и отлаживать.
(Добавление)
kuller пишет:
SDR, спасиб, указал ещё на ошибки Улыбка

пожалуйста.. и всё таки ты зря умных советов не слушаешь ))
думаешь на гугл просто так посылают? ;)
CODE (text):
скопировать код в буфер обмена
  1.  
  2. $query = "SELECT * FROM table WHERE id='$cat'";
  3. $result = mysql_query($query);
  4. if(!$result)
  5. {
  6. die ("SQL: $query<br/>Error: ".mysql_error());
  7. }
  8.  


последний раз пишу за тебя, при игноре советов Улыбка
ну. и что выдаёт?


с верхним постом чёт поторопился, ничего не работает.
ничего не выдаёт...
(Добавление)
Phantik пишет:
2 kuller
А что именно ты проверяешь условием if? Как должен твой код работать правильно?

в данный момент проверяю правильное значение $cat
(Добавление)
SDR пишет:

думаешь на гугл просто так посылают? ;)

я и так в гугле сижу сейчас
 
 Top
SDR
Отправлено: 27 Января, 2010 - 12:24:47
Post Id


Гость


Покинул форум
Сообщений всего: 72
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




что именно не работает?

твой echo 'error'; работал, а мой die('.....'); не работает?

как именно не работает? что-то хоть выдаёт? в чё в десятый раз установлен error_reporting?
 
 Top
JustUserR
Отправлено: 27 Января, 2010 - 12:30:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




kuller Попробуйте такой код - по идее должен работать как надо
PHP:
скопировать код в буфер обмена
  1. if(isset($_GET['cat'])) {$cat = mysql_real_escape_string($_GET['cat']); }
  2. else {echo "Не передана категория"; exit;}
  3. $result = mysql_query("SELECT * FROM table WHERE id='$cat'");
  4. if(mysql_num_rows($result)<1) {echo "Нет такой категории"; exit; }
  5. else {echo "Все ОК";}
Скорее всего ваша ошибка была в том что вы проверяете условие ресурс result который не может быть false даже если ответа на запрос пустой был


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
kuller
Отправлено: 27 Января, 2010 - 13:22:25
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 561
Дата рег-ции: Нояб. 2009  


Помог: 2 раз(а)




всем спасибо. а такой код нормальный?
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. include ("temp/config.php");
  4. include ("classes/system.php");
  5. $system = new System();
  6. $system->header();
  7. if(isset($_GET['cat']))
  8. {
  9. $cat = mysql_real_escape_string($_GET['cat']);
  10. }else{
  11. echo '<table width="803" height="40" border="0" align="center" id="static">
  12. <tr>
  13. <td align="center">
  14. <div class="nav1">ошибка</div>
  15. <div class="Top">Не передана категория</div>
  16. </td>
  17. </tr>
  18. </table>';
  19. }
  20. if(!preg_match("|^[\d]+$|", $cat))
  21. {
  22. echo '<table width="803" height="40" border="0" align="center" id="static">
  23. <tr>
  24. <td align="center">
  25. <div class="nav1">ошибка</div>
  26. <div class="Top">Неверный формат запроса! Проверьте URL.</div>
  27. </td>
  28. </tr>
  29. </table>';
  30. }
  31. $result = mysql_query("SELECT id FROM table WHERE id='$cat'");
  32. if(!$result)
  33. {
  34. echo '<table width="803" height="40" border="0" align="center" id="static">
  35. <tr>
  36. <td align="center">
  37. <div class="nav1">ошибка</div>
  38. <div class="Top">Возникла ошибка. Скопируйте текст ошибки ниже, и отправте администратору<br /><p>'.mysql_error().'</p></div>
  39. </td>
  40. </tr>
  41. </table>';
  42. }
  43. if(mysql_num_rows($result) > 0)
  44. {
  45. $myrow = mysql_fetch_array($result);
  46.  
  47. }else{
  48. echo '<table width="803" height="40" border="0" align="center" id="static">
  49. <tr>
  50. <td align="center">
  51. <div class="nav1">ошибка</div>
  52. <div class="Top">Раздел, который вы выбрали, не существует</div>
  53. </td>
  54. </tr>
  55. </table>';
  56. }
  57. $system->fotter();
  58. ?>
  59.  

вроде всё работает...
 
 Top
JustUserR
Отправлено: 27 Января, 2010 - 14:02:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




kuller пишет:
Всем спасибо А такой код нормальный?
Теперь нормальный когда вы правильно воспользовались проверкой на false для ресурса ответа базы данных и добавили проверку по mysql_num_rows


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB