|
|
|
| Данные не записываются в БД
if (isset($_POST['title']))
{$title = $_POST['title']; if ($title == '') {unset ($title);} }
if (isset($_POST['licence']))
{$licence = $_POST['licence']; if ($licence == '') {unset ($licence);}}
if (isset($_POST['accreditation']))
{$accreditation = $_POST['accreditation']; if ($accreditation == '') {unset ($accreditation);}}
if (isset($_POST['address']))
{$address = $_POST['address']; if ($address == '') {unset ($address);}}
if (isset($_POST['tel']))
{$tel = $_POST['tel']; if ($tel == '') {unset ($tel);}}
if (isset($_POST['fax']))
{$fax = $_POST['fax']; if ($fax == '') {unset ($fax);}}
if (isset($_POST['site']))
{$site = $_POST['site']; if ($site == '') {unset ($site);}}
if (isset($_POST['email']))
{$email = $_POST['email']; if ($email == '') {unset ($email);}}
if (isset($_POST['full_name']))
{$full_name = $_POST['full_name']; if ($full_name == '') {unset ($full_name);}}
if (isset($_POST['short_name']))
{$short_name = $_POST['short_name']; if ($short_name == '') {unset ($short_name);}}
if (isset($_POST['id_pu'])) {$id_pu = $_POST['id_pu']; if ($id_pu == '') {unset ($id_pu);}}
?>
|
<?php
if (isset($title) && isset($licence) && isset($accreditation) && isset($address)
&& isset($tel) && isset($fax) && isset($site) && isset($email) && isset($full_name)
&& isset($short_name)&& isset($id_pu))
{
/*Здесь мы пишем, что можно заносить информацию в базу*/
$result = mysql_query ("INSERT INTO bd (title,licence,accreditation,address,tel,fax,site,email,full_name,short_name,id_pu)
VALUES ('$title', '$licence', '$accreditation','$address','$tel','$fax','$site','$email','$full_name','$short_name','$id_pu')");
if ($result == 'true') {echo "<p>Ваш ПУ успешно добавлен!</p>";}
else {echo "<p>Ваш ПУ не добавлен!</p>";}
}
else
{
echo "<p>Вы ввели не всю информацию, поэтому информация не может быть добавлена в базу</p>";
}
?>
|
Делаем проверку:
<?php
echo "<pre>";
print_r($_POST);
echo "</pre>";
?>
|
Вот что выводится:
Вы ввели не всю информацию, поэтому информация не может быть добавлена в базу
Array
(
[title] => Профессиональное училище
[licence] => Лицензия
[accreditation] => АУ
[address] => город
[tel] => 273-73-02 - приемная
[fax] => 273-73-02
[site] => http://www.pro.narod.ru
[email] => pro@mail.ru
[text] => Автономное учреждение
[short_name] => АУ
[id] => 2
[submit] => Сохранить изменения
)
|
Что имеем? Все данные есть. А почему не записывается не понятно | |
|
|
|
|
|
|
|
для: usa
(07.12.2011 в 14:25)
| | [id] => 2 или всетаки id_pu, но в любом случае это скорее всего число
и тип поля скорее всего INT, а в базу вы его пихаете как строку (в одинарных кавычках ' ')
и где фулл нэйм? вместо него я так понимаю text | |
|
|
|
|
|
|
|
для: Valick
(07.12.2011 в 14:29)
| | да поле int
А как надо правильно? | |
|
|
|
|
|
|
|
для: usa
(07.12.2011 в 14:36)
| | VALUES('$title', '$licence', '$accreditation',
'$address','$tel','$fax','$site','$email',
'$full_name','$short_name',$id_pu)");
т.е. вместо '$id_pu' должно быть просто $id_pu
но до этого дело не доходит, у вас в форме и в проверке разные имена полей
поэтому и пишет скрипт
Вы ввели не всю информацию, поэтому информация не может быть добавлена в базу | |
|
|
|
|
|
|
|
для: Valick
(07.12.2011 в 14:39)
| | Спасибо. внес коррективы.
$result = mysql_query ("INSERT INTO bd (title,licence,accreditation,address,tel,fax,site,email,full_name,short_name,id_pu)
VALUES ('$title', '$licence', '$accreditation','$address','$tel','$fax','$site','$email','$full_name','$short_name',$id_pu)");
if ($result == 'true') {echo "<p>Ваш ПУ успешно добавлен!</p>";}
else {echo "<p>Ваш ПУ не добавлен!</p>";}
|
И все равно
Ваш ПУ не добавлен!
Array
(
[title] => Профессиональное училище
[licence] => Лицензия
[accreditation] => 111
[address] => Адрес
[tel] => 273-73-02 - приемная
[fax] => 273-73-02
[site] => http://www.pro14.narod.ru
[email] => pro14@mail.ru
[full_name] => Автономное учреждение
[short_name] => 111
[id_pu] => 2
[submit] => Сохранить изменения
)
|
| |
|
|
|
|
|
|
|
для: usa
(07.12.2011 в 14:47)
| | а в саму базу заглядывали? появилась там строка или нет?
if ($result == 'true')
___
if ($result == true)
if ($result)
но лично я бы сделал так
if(mysql_affected_rows()>0)
или
изменив логику вот так
if(mysql_affected_rows() == -1) | |
|
|
|
|
|
|
|
для: Valick
(07.12.2011 в 14:59)
| | В базе нет изменений.
Я правильно вас понял, что строчку
if ($result == 'true') {echo "<p>Ваш ПУ успешно добавлен!</p>";}
|
надо переписать так:
if(mysql_affected_rows()>0) {echo "<p>Ваш ПУ успешно добавлен!</p>";}
|
| |
|
|
|
|
|
|
|
для: usa
(07.12.2011 в 15:05)
| | угу, но если записи нет в базе, то проблемма еще в запросе
проверьте еще раз типы полей, кроме id_pu есть еще числовые поля? | |
|
|
|
|
|
|
|
для: Valick
(07.12.2011 в 15:13)
| | оказывается еще есть :)
id_town
id_region
id_state
advertisment
все они int.
Но их не нужно редактировать пользователю. Поэтому я их и не вывожу для редактрования | |
|
|
|
|
|
|
|
для: usa
(07.12.2011 в 15:19)
| | хм... о каком редактировании речь? :))
INSERT - это вставка, редактировать это UPDATE
и сильно сомневаюсь что
id_town
id_region
id_state
это те вещи которые имеют значения по умолчанию, хотя в принципе скорее всего просто "0" или еще лучше NULL | |
|
|
|
|
|
|
|
для: Valick
(07.12.2011 в 15:24)
| | значения там прописываются. Для каждой организации свои значения.
Тогда получается пропущенные intы - их нужно указывать еще в перовм файле?
<form action="pu_action.php" method="get" name="f2">
<p>Заметили неточность - сообщите об ошибке!</p>
<input type='hidden' name='title' value='<?php echo $myrow3['title']; ?>'>
<input type='hidden' name='licence' value='<?php echo $myrow3['licence']; ?>'>
...
<input type='submit' name='submit' value='Сообщить'></form>
|
| |
|
|
|
|
|
|
|
для: usa
(07.12.2011 в 15:32)
| | нет)
нужно использовать UPDATE вместо INSERT
вы же редактируете строку (о чем собственно нужно было сообщить в самом начале)
а не вставляете новую строку
хотя по идее новая строка должна вставиться если запрос корректный
кстати магические кавычки включены? | |
|
|
|
|
|
|
|
для: Valick
(07.12.2011 в 15:38)
| | переписал
<?php
if (isset($title) && isset($licence) && isset($accreditation) && isset($address)
&& isset($tel) && isset($fax) && isset($site) && isset($email) && isset($full_name)
&& isset($short_name)&& isset($id_pu))
{
/*Здесь мы пишем, что можно заносить информацию в базу*/
$result = mysql_query ("UPDATE pu SET title='$title', licence='$licence',
accreditation='$accreditation', address='$address', tel='$tel',
fax='$fax', site='$site', email='$email', full_name='$full_name', short_name='$short_name'
WHERE id_pu='$id_pu'");
if ($result == 'true') {echo "<p>Ваша рубрика обновлена!</p>";}
else {echo "<p>Ваша рубрика не обновлена!</p>";}
}
else
{
echo "<p>Вы ввели не всю информацию, поэтому рубрика не может быть добавлена в базу</p>";
}
?>
|
Все равно тот же результат. Ваш ПУ не добавлен!
Про магические кавычки не знаю | |
|
|
|
|
|
|
|
для: usa
(07.12.2011 в 15:54)
| | WHERE id_pu='$id_pu' -> WHERE id_pu=$id_pu
if ($result == 'true') -> ... | |
|
|
|
|
|
|
|
для: Valick
(07.12.2011 в 16:00)
| | заработало.
Только как быть если поле остается пустым, то запись не производится.
Как можно оставлять поле не заполненным? | |
|
|
|
|
|
|
|
для: usa
(07.12.2011 в 16:15)
| | естетсвенно записи не будет, так как запрос станет некорректным
его нужно собирать в соответствии с теми полями которые присутствуют
именно при проверке данных переданных из формы нужно "по кусочку" собирать запрос
___
и кстати после проверки валидности данных не мешало бы применять эскейпирование :))
на магические кавычки лучше не расчитывать | |
|
|
|
|
|
|
|
для: Valick
(07.12.2011 в 16:39)
| | я решил это просто - написал, что все поля обязательны к заполнению.
а вот "и кстати после проверки валидности данных не мешало бы применять эскейпирование :))"
Можно поподробнее? | |
|
|
|
|
|
|
|
для: usa
(07.12.2011 в 16:47)
| | mysql_real_escape_string
эксейпирование и магические кавычки - это как раз то что не грех спросить у гугла :)
поверьте лучше чем гугл или хорошая книга, я вам не смогу рассказать в рамках форума.
учитесь разделять информацию и выхватывать самую суть
___
в соседней теме отредактируйте сообщение что бы оно помещалось в окно браузера и не растягивало его, а то читать не удобно | |
|
|
|
|
|
|
|
для: usa
(07.12.2011 в 16:15)
| | >Как можно оставлять поле не заполненным?
2 варианта.
Первый - в свойствах таблицы полям, которые можно не заполнять, нужно присвоить значения по умолчанию. Тогда при добавлении записи поля значения для которых не переданы будут заполняться значениями по умолчанию
Второй - Пусть из формы приходят и не все поля, но во время проверки правильности введенных данных, переменным, значения для которых не установлены, присваивать ничтожные (а может и значимые), но адекватные данные. Т.е., например, 0 для поля integer, "" для string и т.д. Но делать все это до отправки запроса в БД. | |
|
|
|
|
|
|
|
для: Sfinks
(07.12.2011 в 18:47)
| | вот поставил кавычки
$result = mysql_query ("UPDATE pu SET title='$title', licence='$licence',
accreditation='$accreditation', address='$address', tel='$tel', fax='$fax',
site='$site', email='$email', full_name='$full_name', short_name='$short_name'
WHERE id_pu=" . mysql_real_escape_string($id_pu) . "");
|
Теперь все ОК в запросе? | |
|
|
|
|
|
|
|
для: usa
(12.12.2011 в 20:10)
| | Внешне вроде да, но лучше проверить, обязательно обработав запрос на успешность выполнения, в случае неудачи выводить отчет mysql_error(), чтобы выяснить, где проблема. | |
|
|
|