[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Внесение данных в БД
Vok
Люди, подскажите кто чем может =)
Такая проблема:
Есть форма

<form name="FormName" method="post">
<input
name="book_id" type="text" value=""><br>
<input
name="name" type="text" value=""><br>
<input
name="author" type="text" value=""><br>
<input
name="izdat" type="text" value=""><br>
<input
name="page" type="text" value=""><br>
<input
type="submit" name="send" value="Send">
</form>



и есть php - код который должен работать на этой же странице, т.е. ниже я пишу:

if (!empty($_POST['FormName'])) {

$query = "INSERT INTO book SET book_id='".$_POST['book_id']."', name='".$_POST["name"]."',
autor='"
.$_POST["author"]."', page='".$_POST["page"]."', izdat='".$_POST["izdat"]."' ";

}


Проблема в том, что когда первый раз открываешь эту страницу - вносит в БД строку с нулем. Дальше заполняешь - все нормально вносится. Но какие бы я проверки не придумывал (и на кнопку if ($send) и на поля if ($book_id)) либо перестает работать либо после обновления пишет Duplicate entry '0' for key 1.
Подскажите кто чем может, голова кипит...




Спустя 14 минут, 27 секунд (17.01.2010 - 15:57) cyberx написал(а):
Эти оба когда у тебя на одной страничке и хочешь при нажатии внести в базу?


Спустя 33 минуты, 56 секунд (17.01.2010 - 16:31) cyberx написал(а):
У тебя ошибка даже с инсертом и всегда проверяй глобальные переменные и фильтруй их. В форм с помощью action укажите страницу, допустим она page.php.
<form name="FormName" method="post" action="page.php">
<input
name="book_id" type="text" value=""><br>
<input
name="name" type="text" value=""><br>
<input
name="author" type="text" value=""><br>
<input
name="izdat" type="text" value=""><br>
<input
name="page" type="text" value=""><br>
<input
type="submit" name="submit" value="Send">
</form>


Потом проверить если существует submit

if (isset($_POST['submit']))
{
if (isset($_POST['book_id'])) { $book_id = $_POST['book_id']; if ($book_id == '') { unset($book_id); }}
// и так все

if (empty($book_id) or empty($name) or empty($author) or empty($page) or empty($izdat))
{
exit("не все поля заполнены");
}
else
{
$book_id = trim($book_id);
$book_id = htmlspecialchars($book_id);
$book_id = mysql_real_escape_string($book_id);

// и так все

$query = mysql_query ("INSERT INTO `имя таблички` (book_id,name,autor,page,izdat) VALUES('$book_id','$name','$autor','$page','$izdat')");
if ($query=='TRUE')
{
echo "Внесено удачно";
}
else
{
exit("Ошибка");
}
}
}



Как минимум так проверять

Спустя 1 час, 35 минут, 34 секунды (17.01.2010 - 18:07) Vok написал(а):
Спасибо ОГРОМНОЕ! =))))
Все получилось!
Можно еще вопрос:

У меня теперь в этой форме появились два выпадающих списка. И на один из них привязаны две радиокнопки. Т.е. нада отправить из одного запроса посыл в три таблицы. Как это лучше реализовать?


// первый селект с выбором уточнения на 2-х радиокнопках
if ($_POST['SelectName1']){
if ($SelectName1=="a")
{
if (($_POST['radioknopka1'])=="name1")
{
$query= посыл в 2 и 3 таблицы где $book_id то что ввел пользователь в этом запросе
}
if (($_POST['radioknopka2'])=="name2")
{
$query= посыл в 2 и 3 таблицы где $book_id то что ввел пользователь в этом запросе
}
}

if ($SelectName1=="b")
{
$query= посыл в 2 таблицу где $book_id то что ввел пользователь в этом запросе
}
// и т .д. для первого селекта
}
// начался 2 селект все в той же форме
if ($_POST['SelectName1']){
if ($SelectName2=="a")
{
$query= посыл в 2 таблицу где $book_id то что ввел пользователь в этом запросе
}
if ($SelectName2=="b")
{
$query= посыл в 2 таблицу где $book_id то что ввел пользователь в этом запросе
}
// и т.д. для 2 селекта
}


Блин... может лучше целый код привести? Я короче сам запутался, что просто не знаю как это реализовать. Подскажите, пожалуйста, хоть в какую сторону копать если долго разбираться в моей писанине.

Спустя 2 часа, 10 минут, 16 секунд (17.01.2010 - 20:17) Vok написал(а):
Люди, ну хоть скажите, пожалуйста, алгоритм, как мне делать такую проверку и выполнять заполнение БД. В общих словах.

Спустя 6 часов, 54 минуты, 13 секунд (18.01.2010 - 03:11) Dron19 написал(а):
Берешь переменную в нее вставляешь запрос на добавление в одну таблицу данных, потом проверяешь и если правильно, то так же и в другие.

Спустя 6 часов, 2 минуты, 48 секунд (18.01.2010 - 09:14) Vok написал(а):
Спасибо, буду пробовать.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.