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

Форум MySQL

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

 

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

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

тема: Вопрос-проблема (глава 8. Универсальный каталог продукции)
 
 автор: jurij_83   (14.03.2006 в 23:00)   письмо автору
 
 

Добрый вечер.

Совсем недавно купил вашу книгу 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'].")";

Спасибо за пояснения.

   
 
 автор: cheops   (14.03.2006 в 23:31)   письмо автору
 
   для: jurij_83   (14.03.2006 в 23:00)
 

Если вам не сложно, исправьте пожалуйста строку 57 файла addprod.php
  } else puterror("Ошибка при добавлении продукции");

следующим образом
  } else puterror("Ошибка при добавлении продукции<br>".$query."<br>".mysql_error());

Как теперь выглядит сообщение об ошибке?

>Да, а почему где-то пишется так (с ''):
>'".$_POST['note']."',
>а где-то так
>".$_POST['square_o'].",
Это связано с тем, что ряд полей являются строковыми и их необходимо помещать в одинарные кавычки, а часть полей числовые и кавычки для них не обязательны.

   
 
 автор: jurij_83   (15.03.2006 в 09:49)   письмо автору
 
   для: 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, ,

И что можно и нужно исправить?

   
 
 автор: cheops   (15.03.2006 в 12:54)   письмо автору
 
   для: 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'], "Не введена позиция продукта");
?>

   
 
 автор: jurij_83   (15.03.2006 в 14:56)   письмо автору
 
   для: cheops   (15.03.2006 в 12:54)
 

Да, спасибо, заработало!!!

А чем принципиально отличались
!isset

от

empty
?

Ещё раз спасибо!

   
 
 автор: Loki   (15.03.2006 в 15:28)   письмо автору
 
   для: jurij_83   (15.03.2006 в 14:56)
 

в случае empty переменная может быть определена, но равна нулю или пустой строке.

   
 
 автор: cheops   (15.03.2006 в 15:35)   письмо автору
 
   для: jurij_83   (15.03.2006 в 14:56)
 

isset() - проверяет существует ли переменная, а empty() не равна ли она 0 или пустой строке.

   
Rambler's Top100
вверх

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