[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: трудности при добавлении инфо в Базу Данных
Madisson
Есть форма для ввода данных в БД через браузер, подключил ее к БД:
<?php 
if (isset($_POST['name']))
{
$name = $_POST['name'];
}

if (isset($_POST['lastname']))
{
$lastname = $_POST['lastname'];
}

if (isset($_POST['dol']))
{
$dol = $_POST['dol'];
}

$db = mysql_connect("localhost","alex","12345");
mysql_select_db("firstbd",$db);


$result = mysql_query ("INSERT INTO firma (name,lastname,dol) VALUES ('$name','$lastname','$dol')");

if ($result == 'true')
{
echo "Информация в базу добавлена успешно!";

}
else
{
echo "Информация в базу не добавлена!";
}


При вставке информации в БД через файл php (mysql_insert.php) БД действительно изменяется, НО:
1. Вместо введенных данных добавляется новая ПУСТАЯ строка;
2. При дальнейшем обращении к файлу "mysql_insert.php" через окно браузера форма для отправки не возвращается, а выдает "Информация в базу добавлена!". Что делает невозможным дальнейшее добавление.
:ph34r:
>>>Таким образом, в БД появляются сотни новых ПУСТЫХ строк, причем даже после их удаления номерация вновь созданных начинается с учетом удаленных. >>>Что делать_спасите_помогите?[list] :ph34r:
Что не так делаю??? Где искать дыру? в БД или в php, или там и там???



Спустя 12 минут, 27 секунд (27.11.2010 - 05:15) kirik написал(а):
Данные через POST точно приходят?

Спустя 4 часа, 57 минут, 21 секунда (27.11.2010 - 10:12) sergeiss написал(а):
Цитата (Madisson @ 27.11.2010 - 06:03)
Где искать дыру? в БД или в php, или там и там???

Извини, но дыра тут в логике smile.gif Потому что ты вставляешь данные независимо от их наличия. При отсутствии данных как раз будет вставляться пустота.

Что касается "нумерации", то могу предположить, что у тебя там есть автоинкрементное поле.

И еще. mysql_query возвращает либо false, либо объект, содержащий данные выборки. Но никогда не возвращает 'true'. Это тоже логическая ошибка, еще одна.

Спустя 4 часа, 4 минуты, 7 секунд (27.11.2010 - 14:16) kovaldm написал(а):
Убирай свои isset и меняй их на empty все $_POST['имя_формы'] всегда будут существовать, поэтому проверять надо на заполненность, и желательно trim добавить перед проверкой. В случае отсутствия текста в форме выводи ошибку. Если автоинкремент уберешь, то придется нумерацию производить своими силами.

Спустя 4 часа, 57 минут, 31 секунда (27.11.2010 - 19:14) Madisson написал(а):
1. Данные через post не доходят - вместо них пустые строки независимо от того, что в них было введено - то есть 'по барабану', что вводится в браузере;
2. Автоинкрементоне поле есть. Без него в БД добавляется ОДНА пустая строка и затем ступор.
Цитата (sergeiss @ 27.11.2010 - 07:12)
Извини, но дыра тут в логике

Знаю, вопрос дурацкий, стыдно спрашивать, но тем не менее я без посторонней помощи никак не разберу это blink.gif

Спустя 2 часа, 12 минут, 2 секунды (27.11.2010 - 21:26) T1grOK написал(а):
А как вы проверяли, что post данные не доходят?

Спустя 13 минут, 18 секунд (27.11.2010 - 21:39) T1grOK написал(а):
И еще

$result = mysql_query ("INSERT INTO firma (name,lastname,dol) VALUES ('{$name}','{$lastname}','{$dol}')");

Спустя 15 часов, 4 минуты, 41 секунда (28.11.2010 - 12:44) vinnie написал(а):

<?php
//Если пользователь твоего сайта нажал на кнопку отправки формы
//необходимо определить переменные, потом проверить, заполнил ли он их

if (isset ($_POST['ok']))
{
//Здесь мы инициализируем переменные
$name = !empty ($_POST['name']) ? trim ($_POST['name']) : NULL;
$lastname = !empty ($_POST['$lastname']) ? trim ($_POST['$lastname']) : NULL;
$dol = !empty ($_POST['$dol']) ? trim ($_POST['$dol']) : NULL;
//А здесь проверяем поля на пустоту
if ($name == "" or $lastname == "" or $dol == "")
echo "Вы не заполнили все поля";
else
{
//Здесь, как ты понял, наверное, коннектимся к базе
$db = mysql_connect("localhost","alex","12345") or die ("Ошибочка вышла");
mysql_select_db("firstbd",$db) or die ("И здесь тоже ошибочка");
//А здесь уже заносим данные в базу
$result = mysql_query ("INSERT INTO `firma` (`name`, `lastname`, `dol`)
VALUES ('"
.mysql_real_escape_string ($name)."',
'"
.mysql_real_escape_string ($lastname)."',
'"
.mysql_real_escape_string ($dol)."')");
//Здесь не if ($result == 'true'), как ты написал, а $result === true, ну или так...
if ($result)
echo "Информация в базу добавлена успешно!";
else
echo "Информация в базу не добавлена!";
}
?>

Спустя 1 день, 48 минут, 1 секунда (29.11.2010 - 13:32) Madisson написал(а):
УУУ, спасибо, Coder, и все остальные участники!!! проверю так сделать,
Цитата (T1grOK @ 27.11.2010 - 18:39)
{$name}


Кстати, хотел спросить T1grOK, зачем переменные заносим в {фигурные скобки}, что это даст?
Цитата (T1grOK @ 27.11.2010 - 18:26)
А как вы проверяли, что post данные не доходят?

Зашел в БД через PHPMyAdmin - гляжу, а там вместо введенных строк одни пустые поля...

Спустя 2 часа, 20 минут, 31 секунда (29.11.2010 - 15:53) inpost написал(а):
echo '<pre>';
print_r($_POST);
echo '</pre>';


В начале скрипта добавления в БД ставишь. Смотришь, пришли ли переменные

Спустя 1 час, 41 минута, 22 секунды (29.11.2010 - 17:34) vinnie написал(а):
Madisson
карму за старания)))

Спустя 1 день, 8 часов, 13 минут, 6 секунд (1.12.2010 - 01:47) Madisson написал(а):
Цитата (vinnie @ 29.11.2010 - 14:34)
Madisson
карму за старания)))

мне не дают голосовать, я ж новичок, постов насобираю :-)


_____________
Не важно откуда растут туки, если они золотые...[I]
Быстрый ответ:

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