[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ввод данных в БД
Ефим
У меня такая проблема ввожу данные в БД и создаются постоянно разное количество пустых полей в чем причина ?? что я делаю не так??
вот сам код

<form action="http://mc.ru">

Заголовок статьи<Br><input id="in" type="text" name="them" size="50" placeholder="Введите тему"><Br>
Текст статьи<Br><input id="in" type="text" name="text" size="50" placeholder="Введите текст"><Br>
Дата<Br><input id="in" type="date" name="date" size="50" ><Br>
<
input name='Submit' type=submit value='Сохранить'>

</
form>
<?
$them = $_POST['them'];
$text = $_POST['text'];
$date = $_POST['date'];


$db = mysql_connect('localhost','root','');
mysql_select_db('mc',$db);

$result = mysql_query('SELECT * FROM news',$db);
$row = mysql_fetch_array($result);


$query = mysql_query("INSERT INTO `news` (`them`,`text`,`date`) VALUES ('$them','$text','$date')");

mysql_close();



?>



Спустя 11 минут, 31 секунда (15.08.2012 - 15:20) kamanch написал(а):
начни с
echo $query;

Спустя 14 минут, 1 секунда (15.08.2012 - 15:35) Ефим написал(а):
Немного не понял?

Спустя 6 минут, 55 секунд (15.08.2012 - 15:41) kamanch написал(а):
А, ссори...
Что у тебя в запросе уходит в базу?
$query = "INSERT INTO `news` (`them`,`text`,`date`) VALUES ('$them','$text','$date')";
echo $query;

Спустя 2 минуты, 41 секунда (15.08.2012 - 15:44) Ефим написал(а):
все равно тоже самое sad.gif
создаются пусты поля и все

Спустя 1 минута, 56 секунд (15.08.2012 - 15:46) Ефим написал(а):
вот это с низу выдает еще в самое форме


INSERT INTO `news` (`them`,`text`,`date`) VALUES ('','','')

Спустя 39 секунд (15.08.2012 - 15:47) inpost написал(а):
форма без указания метода передаёт в GET, а не POST smile.gif

Спустя 1 минута, 33 секунды (15.08.2012 - 15:48) kamanch написал(а):
ну вот, видишь. У тебя запрос идет с пустыми значениями.
А почему твои переменные
$them
$text
$date

пустые? Потому что в $_POST прилетают пустые значения.
А почему туда пустые значения прилетают?

Спустя 33 секунды (15.08.2012 - 15:49) kamanch написал(а):
inpost
Так не честно smile.gif

Спустя 3 минуты, 45 секунд (15.08.2012 - 15:53) Ефим написал(а):
тоесть сделать так ...

$them = $_GET['them'];
$text = $_GET['text'];
$date = $_GET['date'];


Спустя 4 минуты, 30 секунд (15.08.2012 - 15:57) Ефим написал(а):
да все получилось спасибо user posted image

но столкнулся с новой проблемой, если страницу с формой обновлять то выдается последняя тема которая была внесена в базу еще раз , помогите пожалуйста это решить?

Спустя 2 минуты, 20 секунд (15.08.2012 - 15:59) kamanch написал(а):
Тебе сОит вот это сделать. Очень полезно будет Задача на корректную обработку данных
А то что ты спрашиваешь решается редиректом страницы на саму себя.

Спустя 1 минута, 53 секунды (15.08.2012 - 16:01) Ефим написал(а):
спасибо все понял , сейчас буду делать то что посоветовал!

Спустя 43 минуты, 12 секунд (15.08.2012 - 16:44) dron4ik написал(а):
если страницу с формой обновлять то выдается последняя тема которая была внесена в базу еще раз , помогите пожалуйста это решить?


Нужно просто сделать переадресовку на туже страницу, после перехода данные в ПОСТ будут утеряны, и повторного внесения в базу не произойдет.
header('Location: ');

Спустя 20 часов, 9 минут, 44 секунды (16.08.2012 - 12:54) Ефим написал(а):
а куда вставлять?
 header('Location: ');

Спустя 36 минут, 6 секунд (16.08.2012 - 13:30) dron4ik написал(а):
Цитата (Ефим @ 16.08.2012 - 10:54)
а куда вставлять?
 header('Location: ');

После выполнения пхп скрипта и перед любой выдачей инфы...

header('Location: УРЛ страницы на которую мы хотим попасть!')

Спустя 3 часа, 45 секунд (16.08.2012 - 16:31) Ефим написал(а):
dron4ik

так?

<?

$them = $_GET['them'];
$text = $_GET['text'];
$date = $_GET['date'];


$db = mysql_connect('localhost','root','');
mysql_select_db('mc',$db);
@mysql_query('set character_set_client="utf8"');
@mysql_query('set character_set_results="utf8"');
@mysql_query('set collation_connection="utf8_general_ci"');
$result = mysql_query('SELECT * FROM news',$db);
$row = mysql_fetch_array($result);


$query = mysql_query("INSERT INTO `news` (`them`,`text`,`date`) VALUES ('$them','$text','$date')");

header('Location: admin.php ');

?>

Спустя 11 минут, 58 секунд (16.08.2012 - 16:43) dron4ik написал(а):
Цитата (Ефим @ 16.08.2012 - 14:31)


<? 
 
    $them = $_GET['them'];
    $text = $_GET['text'];
    $date = $_GET['date'];
 
 
  $db = mysql_connect('localhost','root','');
  mysql_select_db('mc',$db);
  @mysql_query('set character_set_client="utf8"');
  @mysql_query('set character_set_results="utf8"');
  @mysql_query('set collation_connection="utf8_general_ci"');
  $result = mysql_query('SELECT * FROM news',$db);
  $row = mysql_fetch_array($result);
   
   
  $query = mysql_query("INSERT INTO `news` (`them`,`text`,`date`) VALUES ('$them','$text','$date')");
   
  header('Location: admin.php ');
 
  ?>

ну типо так, только если пхп скрипт на той же странице что и содержимое, то нужно сделать проверочку дабы не замкнуть редирект)

Спустя 12 минут, 56 секунд (16.08.2012 - 16:56) Ефим написал(а):
ну у меня выдает ошибку на странице в этом месте
header('Location: admin.php ');

Спустя 1 минута, 11 секунд (16.08.2012 - 16:57) Ефим написал(а):
а вообще это все выглядит примерно так
<form>

Заголовок статьи<Br><input id="in" type="text" name="them" size="50" placeholder="Введите тему"><Br>
Текст статьи<Br> <textarea type="text" name="text" cols="40" rows="3" placeholder="Введите текст"></textarea><Br>
Дата<Br><input id="in" type="date" name="date" size="50" ><Br>
<input
name='Submit' type=submit value='Сохранить'>

</form>
<?


$them = $_GET['them'];
$text = $_GET['text'];
$date = $_GET['date'];


$db = mysql_connect('localhost','root','');
mysql_select_db('mc',$db);
@mysql_query('set character_set_client="utf8"');
@mysql_query('set character_set_results="utf8"');
@mysql_query('set collation_connection="utf8_general_ci"');
$result = mysql_query('SELECT * FROM news',$db);
$row = mysql_fetch_array($result);


$query = mysql_query("INSERT INTO `news` (`them`,`text`,`date`) VALUES ('$them','$text','$date')");

header('Location: admin.php ');

?>

Спустя 1 час, 39 минут, 12 секунд (16.08.2012 - 18:36) Ефим написал(а):
все равно не работает

Спустя 4 часа, 43 минуты, 51 секунда (16.08.2012 - 23:20) Ефим написал(а):
dron4ik

что я делаю не так?

Спустя 26 минут, 45 секунд (16.08.2012 - 23:47) kamanch написал(а):
Это вывод данных в браузер
<form>	
Заголовок статьи<br /> .....



Это отправка заголовка
header('Location: admin.php ');


Все заоголовки отправляются ДО любого выдвода, о чем тебе php и сказал.

Выход?
Сначала обработка данных, потом вывод.
Твое "примерно так" пишет в базу каждый раз, даже если никаких данных не вводилось.
При этои зациклится редирект.
Начинать нужно с таких вещей:

if(isset($_POST['Submit'])) { // были отправлены данные с формы
........
header('Location: admin.php ');
}

<form>
Заголовок статьи<br />......



1. Таким образом, если данные из формы не были отправлены, то:
а) условие if(isset($_POST['Submit']) не сработает и будет просто выведена форма ввода.

2. Если данные из формы были отправлены, то:
a) пройдет запись в базу.
b) сработает редирект.
c) скрипт перешел в состояние пункта 1

Спустя 10 часов, 7 минут, 12 секунд (17.08.2012 - 09:54) Ефим написал(а):
kamanch
Сделал все как ты сказал, но почему то все равно пустая новость отправляется. Тольи я что то не так понимаю , тольи не так делаю... ну вот весь код


<?
if(isset($_POST['Submit'])) {
header('Location: http://mc.ru/ ');
}
?>

<form action="http://mc.ru">

Заголовок статьи
<Br><input id="in" type="text" name="them" size="50" placeholder="Введите тему"><Br>
Текст статьи
<Br> <textarea type="text" name="text" cols="40" rows="3" placeholder="Введите текст"></textarea><Br>
Дата
<Br><input id="in" type="date" name="date" size="50" ><Br>
<
input name='Submit' type=submit value='Сохранить'>

</
form>
<?

$them = $_GET['them'];
$text = $_GET['text'];
$date = $_GET['date'];


$db = mysql_connect('localhost','root','');
mysql_select_db('mc',$db);
@mysql_query('set character_set_client="utf8"');
@mysql_query('set character_set_results="utf8"');
@mysql_query('set collation_connection="utf8_general_ci"');
$result = mysql_query('SELECT * FROM news',$db);
$row = mysql_fetch_array($result);


$query = mysql_query("INSERT INTO `news` (`them`,`text`,`date`) VALUES ('$them','$text','$date')");

?>

Спустя 10 минут, 21 секунда (17.08.2012 - 10:04) kamanch написал(а):
Я тебе не так показал.
Давай переведем твой код с php на русский.

Я начну, а ты продолжишь...

if(isset($_POST['Submit'])) { 

Если существует $_POST['Submit'] (была нажата кнопка 'Submit' на форме), то

header('Location: http://mc.ru/ ');

сделать редирект страницы саму на себя (это мы браузеру дали команду, но на сервере скрипт еще не закончил работу)

.....
Продолжай так же, по каждой строчке. Что происходит?

Спустя 27 минут, 16 секунд (17.08.2012 - 10:32) Ефим написал(а):
открывается форма где указывается обработчик, к которому обращаются данные формы при их отправке на сервер

<form action="http://mc.ru">

Спустя 7 минут, 17 секунд (17.08.2012 - 10:39) Ефим написал(а):
дальше идет создание полей для ввода текста и закрытие формы

Заголовок статьи
<Br><input id="in" type="text" name="them" size="50" placeholder="Введите тему"><Br>
Текст статьи
<Br> <textarea type="text" name="text" cols="40" rows="3" placeholder="Введите текст"></textarea><Br>
Дата
<Br><input id="in" type="date" name="date" size="50" ><Br>
<input
name='Submit' type=submit value='Сохранить'>

</form>



Спустя 1 минута, 30 секунд (17.08.2012 - 10:41) Ефим написал(а):
после идет присваивание значений из формы определенным переменным

$them = $_GET['them'];
$text = $_GET['text'];
$date = $_GET['date'];

Спустя 6 минут, 42 секунды (17.08.2012 - 10:47) Ефим написал(а):
дальше идет соединение с базой

$db = mysql_connect('localhost','root','');

затем соединение с таблицей в базе

$db = mysql_connect('localhost','root','');

после задается кодировка

@mysql_query('set character_set_client="utf8"');
@mysql_query('set character_set_results="utf8"');
@mysql_query('set collation_connection="utf8_general_ci"');

после посылается запрос в базу

$result = mysql_query('SELECT * FROM news',$db);

после идет обработка ряда результатов запроса, возвращая ассоциативный массив

$row = mysql_fetch_array($result);

затем идет занесении определенных переменных в таблицу
 
$query = mysql_query("INSERT INTO `news` (`them`,`text`,`date`) VALUES ('$them','$text','$date')");

Спустя 50 секунд (17.08.2012 - 10:48) Ефим написал(а):
kamanch
как то так вроде...

Спустя 24 минуты, 17 секунд (17.08.2012 - 11:12) dron4ik написал(а):



<?
//передан ли пост
if($_POST){
//нужно проверочку сделать все ли верно передал
$them = $_GET['them'];
$text = $_GET['text'];
$date = $_GET['date'];

//Действия с базой
$db = mysql_connect('localhost','root','');
mysql_select_db('mc',$db);
@mysql_query('set character_set_client="utf8"');
@mysql_query('set character_set_results="utf8"');
@mysql_query('set collation_connection="utf8_general_ci"');
$result = mysql_query('SELECT * FROM news',$db);
$row = mysql_fetch_array($result);

//вносим инфу
$query = mysql_query("INSERT INTO `news` (`them`,`text`,`date`) VALUES ('$them','$text','$date')");

//проверка если запись внесла - перенаправляем
header('Location: admin.php ');
}
?>
<form>

Заголовок статьи<Br><input id="in" type="text" name="them" size="50" placeholder="Введите тему"><Br>
Текст статьи<Br> <textarea type="text" name="text" cols="40" rows="3" placeholder="Введите текст"></textarea><Br>
Дата<Br><input id="in" type="date" name="date" size="50" ><Br>
<input
name='Submit' type=submit value='Сохранить'>

</form>

Спустя 6 минут, 27 секунд (17.08.2012 - 11:19) Ефим написал(а):
dron4ik
таким способом вообще ничего не заносит в базу

Спустя 12 минут, 16 секунд (17.08.2012 - 11:31) dron4ik написал(а):
удали "$query = "
а в <form> допиши <form method="post">

Спустя 6 минут, 30 секунд (17.08.2012 - 11:38) Ефим написал(а):
все работает спасибо , но выдает ошмбку в этом мести после отправки
	header('Location: http://mc.ru ');

Спустя 2 минуты, 25 секунд (17.08.2012 - 11:40) dron4ik написал(а):
Цитата (Ефим @ 17.08.2012 - 09:38)
все работает спасибо , но выдает ошмбку в этом мести после отправки
	header('Location: http://mc.ru ');

Какая ошибка, напиши сюда... возможно что-то и протупил, мало ли)

Но по чесноку код нужно слегка исправить, он не совсем правильный (по своей сути)...
Допустим что делать если поля пустые и т.д.)

Спустя 13 минут, 35 секунд (17.08.2012 - 11:54) Ефим написал(а):
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\mc.ru\www\news\admin.php:57) in Z:\home\mc.ru\www\news\admin.php on line 75


в линии 75 как раз находится
header('Location: http://mc.ru ');


я только учусь, поэтому буду щас дальше учиться все остальное делать

Спустя 8 минут, 9 секунд (17.08.2012 - 12:02) dron4ik написал(а):
Цитата (Ефим @ 17.08.2012 - 09:54)
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\mc.ru\www\news\admin.php:57) in Z:\home\mc.ru\www\news\admin.php on line 75


в линии 75 как раз находится
header('Location: http://mc.ru ');


я только учусь, поэтому буду щас дальше учиться все остальное делать

То не ошибка, а предупреждение,
По удаляй лишние пробелы и пустые строки, и убедись что перед <? нет HTML кода или пустых строк...

Спустя 5 минут, 18 секунд (17.08.2012 - 12:07) Ефим написал(а):
dron4ik
все спасибо все нормально
Быстрый ответ:

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