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

Форум MySQL

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

 

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

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

тема: Работа с NULL-значениями в PHP-обработчике
 
 автор: Mpak   (28.10.2006 в 12:05)   письмо автору
 
 


<?php
include "config_forum.php";
$ath mysql_query("select * from forums;");
if (
$ath)
{
  echo 
"<table border=1>";
  echo 
"<tr>
          <td></td>
          <td>Название</td>
          <td>Правила</td>
          <td>Приветствие</td>
          <td>Позиция</td>
          <td>Скрытый/Доступный</td>
       </tr>"
;
while (list(
$id_forum$name$rule$logo$pos$hide) = mysql_fetch_row($ath))
{echo 
"<tr>";
 if (
$id_forum === NULL) echo "<td> - </td>";
 else echo 
"<td>$id_forum</td>";

 if (
$name === NULL) echo "<td> - </td>";
 else echo 
"<td>$name</td>";

 if (!isset(
$rule)) echo "<td> - </td>";
else echo 
"<td>$rule</td>";

 if (
$logo === NULL) echo "<td> - </td>";
else echo 
"<td>$logo</td>";

 if (
$pos === NULL) echo "<td> - </td>";
else echo 
"<td>$pos</td>";

 if (
$hide === NULL) echo "<td> - </td>";
else echo 
"<td>$hide</td>";
echo 
"</tr>";
}
echo 
"</table>";

}
else
{
echo 
"<b>ERROR: ".mysql_error()."</b>";
exit();
}
?>


Не получается проверка на значение NULL
По идее поля rule и logo у меня пустые и должны заполнятся "-"
Но они просто пустые...

   
 
 автор: cheops   (28.10.2006 в 12:17)   письмо автору
 
   для: Mpak   (28.10.2006 в 12:05)
 

Приведите содержимое таблицы forums?

   
 
 автор: Mpak   (28.10.2006 в 12:48)   письмо автору
 
   для: cheops   (28.10.2006 в 12:17)
 


+----------+--------+-------+------+------+------+
| id_forum |  name  | rule  | logo | pos  | hide |
+----------+--------+-------+------+------+------+
| 1        |Форум1  |       |      | 5    | 0    |
| 2        |Форум2  |       |      | 4    | 0    |
| 3        |Форум3  |       |      | 3    | 0    |
| 4        |Форум1  |       |      | 2    | 0    |
| 5        |Форум1  |       |      | 1    | 0    |
+----------+--------+-------+------+------+------+

   
 
 автор: cheops   (28.10.2006 в 12:52)   письмо автору
 
   для: Mpak   (28.10.2006 в 12:48)
 

У вас в полях rule и logo пустые строки вместо значений NULL - поэтому значения полей определены.

   
 
 автор: Mpak   (28.10.2006 в 12:57)   письмо автору
 
   для: cheops   (28.10.2006 в 12:52)
 

В них же нет ничего, я их не заполнял (ставил ''), это не NULL?

   
 
 автор: cheops   (28.10.2006 в 14:37)   письмо автору
 
   для: Mpak   (28.10.2006 в 12:57)
 

Нет, это не NULL - это пустая строка. Дело в том, что в SQL NULL имеет специальное значение - не определённая переменная, т.е. если в поле rule вы помещаете правила - это означает, что правила имеются, если пустую строку - правил нет. Если NULL - не известно имеются правила или нет (они в реальной жизни могут быть, а могут не быть). Поэтому все операции с NULL дают NULL, так как сложение, умножение и любые другие преобразования с неизвестным результатом имеет неизвестное.

   
Rambler's Top100
вверх

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