|
|
|
| Добрый вечер.
Совсем недавно купил вашу книгу PHP5. Практика создания web-сайтов (книга у меня и диск). Хорошая книга! Вот теперь разбираюсь...
У меня вопрос-проблема (глава 8. Универсальный каталог продукции). Стр. 360-365. Файлы addprodform.php, addprod.php.
База созданна (таблица всё хорошо).
Загружаю файл addprodform.php (через localhost). Заполнил 1 или 2 поля. Жму добавить... и
Ошибка при добавлении продукции
хотя в файле addprod.php написано
if(!isset($_POST['address'])) links($_POST['id_catalog'], "Отсутствует адрес");
if(!isset($_POST['square_o'])) links($_POST['id_catalog'], "Не введена площадь(O)");
if(!isset($_POST['square_j'])) links($_POST['id_catalog'], "Не введена площадь(Ж)");
if(!isset($_POST['square_k'])) links($_POST['id_catalog'], "Не введена площадь(К)");
if(!isset($_POST['floorhouse'])) links($_POST['id_catalog'], "Не введена этажность дома");
if(!isset($_POST['price'])) links($_POST['id_catalog'], "Не введена общая цена");
if(!isset($_POST['pricemeter'])) links($_POST['id_catalog'], "Не введена цена квадратного метра");
if(!isset($_POST['pos'])) links($_POST['id_catalog'], "Не введена позиция продукта");
Если не заполнил эти поля, выводится соответствующее сообщение. А почему у меня не выводятся эти сообщения (Отсутствует адрес, Не введена площадь). Посмотрите и напишите, что не так (код я не менял).
Потом думаю, может у меня с таблицами какая ошибка, ведь явно не добавляется запись. Заполнил все поля и, как ни странно, добавляется.
Но меня интересует сообщения по невведённым полям. Пожалуйста, посмотрите. Или, если можете пришлите, код исправленный.
Да, а почему где-то пишется так (с ''):
'".$_POST['note']."',
а где-то так
".$_POST['square_o'].",
$query = "INSERT INTO product VALUES (
NULL,
'".$_POST['note']."',
'".$_POST['district']."',
'".$_POST['address']."',
".$_POST['square_o'].",
".$_POST['square_j'].",
".$_POST['square_k'].",
".$_POST['rooms'].",
".$_POST['floor'].",
".$_POST['floorhouse'].",
'".$_POST['material']."',
'".$_POST['su']."',
'".$_POST['balcony']."',
".$_POST['price'].",
".$_POST['pricemeter'].",
'".$_POST['currency']."',
'$showhide',
".$_POST['pos'].",
".$_POST['id_catalog'].")";
Спасибо за пояснения. | |
|
|
|
|
|
|
|
для: jurij_83
(14.03.2006 в 23:00)
| | Если вам не сложно, исправьте пожалуйста строку 57 файла addprod.php
} else puterror("Ошибка при добавлении продукции");
|
следующим образом
} else puterror("Ошибка при добавлении продукции<br>".$query."<br>".mysql_error());
|
Как теперь выглядит сообщение об ошибке?
>Да, а почему где-то пишется так (с ''):
>'".$_POST['note']."',
>а где-то так
>".$_POST['square_o'].",
Это связано с тем, что ряд полей являются строковыми и их необходимо помещать в одинарные кавычки, а часть полей числовые и кавычки для них не обязательны. | |
|
|
|
|
|
|
|
для: cheops
(14.03.2006 в 23:31)
| | Спасибо за ответ.
Вместо того написал:
} else puterror("Ошибка при добавлении продукции<br>".$query."<br>".mysql_error());
и ошибка такая:
Ошибка при добавлении продукции
INSERT INTO product VALUES ( NULL, '', 'kanavinskii', '', , , , 1, , , 'brick', 'combined', 'balcony', , , 'RUR', 'show', 1, 1)
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 ' , , 1, ,
И что можно и нужно исправить? | |
|
|
|
|
|
|
|
для: jurij_83
(15.03.2006 в 09:49)
| | Исправьте блок
<?php
f(!isset($_POST['address'])) links($_POST['id_catalog'], "Отсутствует адрес");
if(!isset($_POST['square_o'])) links($_POST['id_catalog'], "Не введена площадь(O)");
if(!isset($_POST['square_j'])) links($_POST['id_catalog'], "Не введена площадь(Ж)");
if(!isset($_POST['square_k'])) links($_POST['id_catalog'], "Не введена площадь(К)");
if(!isset($_POST['floorhouse'])) links($_POST['id_catalog'], "Не введена этажность дома");
if(!isset($_POST['price'])) links($_POST['id_catalog'], "Не введена общая цена");
if(!isset($_POST['pricemeter'])) links($_POST['id_catalog'], "Не введена цена квадратного метра");
if(!isset($_POST['pos'])) links($_POST['id_catalog'], "Не введена позиция продукта");
?>
|
следующим образом
<?php
if(empty($_POST['address'])) links($_POST['id_catalog'], "Отсутствует адрес");
if(empty($_POST['square_o'])) links($_POST['id_catalog'], "Не введена площадь(O)");
if(empty($_POST['square_j'])) links($_POST['id_catalog'], "Не введена площадь(Ж)");
if(empty($_POST['square_k'])) links($_POST['id_catalog'], "Не введена площадь(К)");
if(empty($_POST['floorhouse'])) links($_POST['id_catalog'], "Не введена этажность дома");
if(empty($_POST['price'])) links($_POST['id_catalog'], "Не введена общая цена");
if(empty($_POST['pricemeter'])) links($_POST['id_catalog'], "Не введена цена квадратного метра");
if(empty($_POST['pos'])) links($_POST['id_catalog'], "Не введена позиция продукта");
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(15.03.2006 в 12:54)
| | Да, спасибо, заработало!!!
А чем принципиально отличались
!isset
от
empty
?
Ещё раз спасибо! | |
|
|
|
|
|
|
|
для: jurij_83
(15.03.2006 в 14:56)
| | в случае empty переменная может быть определена, но равна нулю или пустой строке. | |
|
|
|
|
|
|
|
для: jurij_83
(15.03.2006 в 14:56)
| | isset() - проверяет существует ли переменная, а empty() не равна ли она 0 или пустой строке. | |
|
|
|
|