[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ввод значений в базу данных
l@pteff
Здравствуйте, вопрос такой: есть форма регистрации reg.htm, данные введенные пользователем должны заноситься в таблицу users базы данных, но не заносятся. :huh: Форму обрабатывает скрипт dbase.php.

reg.htm


<form id="signup" action="../php/dbase.php">
<label>
Логин </label>
<input
name="login" type="text" id="login" size="36" class="required">

<label>
Пароль</label>
<input
name="password" type="text" value="Введите пароль" size="36" class="required">

<label>
E-mail </label>
<input
name="email" type="text" value="Введите ваш E-mail адрес" id="email" size="46" class="required email"

<input type="submit" value="Зарегистрироваться">
</form>



dbase.php


if ((!$_POST['login']) || (!$_POST['password']) || (!$_POST['email'])) {
echo "Не все данные введены<br>
Пожалуйста, вернитесь назад и закончите ввод."
;
exit;
}

$query = "insert into users (login, password, email) values
('"
.$_POST ['login']."', '".$_POST ['password']."', '".$_POST ['email']."')";

$result = mysql_query ( $query ) or die(mysql_error());
if ($result) echo "Регистрация завершена успешно.";
else echo "Попробуйте позднее.";

mysql_close ( $link );



Проблема в том, что проверку не проходит условие в начале скрипта и выдаётся ошибка ( "Не все данные введены..."), если условие из скрипта исключить, в таблицу добавятся пустые строки. В базе поля login, password, email имеют тип varchar. В чём косяк?



Спустя 58 секунд (10.02.2011 - 22:35) Snus написал(а):
<form id="signup" action="../php/dbase.php" METHOD="POST">

Спустя 3 минуты, 35 секунд (10.02.2011 - 22:38) l@pteff написал(а):
реакции ноль, здесь скорее всего в базе с типами данных что-то напутал wink.gif

Спустя 4 минуты, 13 секунд (10.02.2011 - 22:42) Snus написал(а):
l@pteff
Давай по порядку... перестал давать сообщение Не все данные введены. ?

Спустя 2 минуты, 9 секунд (10.02.2011 - 22:44) l@pteff написал(а):
нет не перестал

Спустя 19 минут, 35 секунд (10.02.2011 - 23:04) l@pteff написал(а):
ещё момент: заполняю форму, убираю условие - добавляет в базу пустые значения (как я уже говорил). Заполняю форму второй раз (с другими данными и опять же без условия) - пишет "логин занят", т.е. не добавляет ещё одну пустую строку (хотя логин ввожу абсолютно другой)

Спустя 11 минут, 49 секунд (10.02.2011 - 23:16) l@pteff написал(а):
если добавляю в условие проверку ошибок:


if ((!$_POST['login']) || (!$_POST['password']) || (!$_POST['email'])) {
echo "Не все данные введены<br>
Пожалуйста, вернитесь назад и закончите ввод."
or die(mysql_error());
exit;
}


Вместо нормального описания ошибки скупо появляется какая-то единица

Спустя 23 минуты, 15 секунд (10.02.2011 - 23:39) l@pteff написал(а):
из-за чего это? может дело в настройках самого сервака?

Спустя 14 минут, 39 секунд (10.02.2011 - 23:54) Lenarfate написал(а):
Цитата
echo "Не все данные введены<br>
Пожалуйста, вернитесь назад и закончите ввод." or die(mysql_error());

тут ты сам понимаешь, что делаешь?

Спустя 10 минут, 20 секунд (11.02.2011 - 00:04) l@pteff написал(а):
да уж, понаставил лишнего... smile.gif Парни ну может у кого есть мысли почему инфа из формы может не читаться?

Спустя 6 минут, 9 секунд (11.02.2011 - 00:10) Lenarfate написал(а):
безнадежно sad.gif

Спустя 13 минут, 10 секунд (11.02.2011 - 00:23) l@pteff написал(а):
Lenarfate до переустановки апача всё отлично работало с этими же скриптами, поэтому считаю что проблема не такая уж безнадёжная...

Спустя 1 час, 34 минуты, 47 секунд (11.02.2011 - 01:58) RCuPeR написал(а):
<form id="signup" action="../php/dbase.php" method="post">
<label>
Логин </label>
<input
name="login" type="text" id="login" size="36" class="required">

<label>
Пароль</label>
<input
name="password" type="password" value="Введите пароль" size="36" class="required">

<label>
E-mail </label>
<input
name="email" type="text" value="Введите ваш E-mail адрес" id="email" size="46" class="required email"

<input type="submit" value="Зарегистрироваться">
</form>


$login = isset($_POST['login']) ? $_POST['login'] : NULL;
$password = isset($_POST['password']) ? $_POST['password'] : NULL;
$email = isset($_POST['email']) ? $_POST['email'] : NULL;

if($login != NULL && $password != NULL && $email != NULL){

$query = "INSERT INTO `users` (`login`, `password`, `email`) VALUES ('".$login."', '".$password."', '".$email."')";

$result = mysql_query ( $query ) or die(mysql_error());

} else {
exit("ERROR");
}

if ($result) {
echo 'Registering is completed';
} else {
echo 'FUCK ! Error !';
}


Спустя 8 минут, 26 секунд (11.02.2011 - 02:07) Сандин написал(а):
Цитата (RCuPeR @ 10.02.2011 - 22:58)

$login = isset($_POST['login']) ? $_POST['login'] : NULL;

Можеш пояснить как работает эта строчка? почему так и так..заранее спасибо

Спустя 5 минут, 54 секунды (11.02.2011 - 02:13) inpost написал(а):
$_POST ['login'] - почему через пробел?
Проверку сделай на: !empty($_POST)

Спустя 31 минута, 15 секунд (11.02.2011 - 02:44) Invis1ble написал(а):
l@pteff
в начале скрипта поставь
var_dump($_POST);
die(var_dump((!$_POST['login']) || (!$_POST['password']) || (!$_POST['email'])));

и напиши сюда, что выведет

Спустя 2 минуты, 8 секунд (11.02.2011 - 02:46) Invis1ble написал(а):
кстати вот это
Цитата
<input name="password" type="text" value="Введите пароль" size="36" class="required">

прикольно =)

Спустя 4 минуты, 10 секунд (11.02.2011 - 02:50) Invis1ble написал(а):
имхо, здесь
Цитата
action="../php/dbase.php"

в пути к обработчику бок и данные попросту отсылаются на деревню к дедушке smile.gif

Спустя 8 часов, 38 минут, 36 секунд (11.02.2011 - 11:29) RCuPeR написал(а):
Цитата (Сандин @ 10.02.2011 - 23:07)
Цитата (RCuPeR @ 10.02.2011 - 22:58)

$login = isset($_POST['login']) ? $_POST['login'] : NULL;

Можеш пояснить как работает эта строчка? почему так и так..заранее спасибо


$login = isset($_POST['login']) ? $_POST['login'] : NULL;
$password = isset($_POST['password']) ? $_POST['password'] : NULL;
$email = isset($_POST['email']) ? $_POST['email'] : NULL;


Проверяет состояние переменной. Т.е, если $_POST['login'] пустой, ему присваивается NULL, что равносильно ='';

Если нет, в переменную $login добавляется значение $_POST['login'].


Спустя 2 дня, 29 минут, 14 секунд (13.02.2011 - 11:58) l@pteff написал(а):
Цитата

кстати вот это
Цитата
<input name="password" type="text" value="Введите пароль" size="36" class="required">

прикольно =)



:) полностью поле для ввода пароля выглядит так:

<input name="password" type="text" value="Введите пароль" size="36" class="required" onFocus="this.type='password'" onBlur="if(this.value == '') { this.value='Введите пароль'; this.type='text';}"

Спустя 2 минуты (13.02.2011 - 12:00) l@pteff написал(а):
вобщем, история завершилась так. Создал такой же сервак на другой машине, всё работает, хотя делал всё вроде так же. Тупо копирнул рабочий вариант-и всё. В чём был глюк-так и не понял wink.gif

Спустя 4 минуты, 10 секунд (13.02.2011 - 12:04) l@pteff написал(а):
Invis1ble, взял на заметку, спасибо, думаю ещё пригодится не раз:

Цитата

в начале скрипта поставь

var_dump($_POST);
die(var_dump((!$_POST['login']) || (!$_POST['password']) || (!$_POST['email'])));


Цитата

имхо, здесь
Цитата
action="../php/dbase.php"

в пути к обработчику бок и данные попросту отсылаются на деревню к дедушке


кстати очень может быть
Быстрый ответ:

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