Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: пустая ячейка в базе данных
 
 автор: kaizer131   (06.02.2009 в 13:33)   письмо автору
 
 

Добрый день, подскажите почему при вставке данных из формы в БД добавляются пустые строки за исключением поля id и data.
код вставки

mysql_query('CREATE TABLE IF NOT EXISTS stat (id INT,data DATETIME,name VARCHAR(20),message VARCHAR(20))')
or die(mysql_error());
$text = mysql_real_escape_string(htmlspecialchars($_POST["header"]));
$message = mysql_real_escape_string(htmlspecialchars($_POST["message"]));
mysql_query('SET NAMES UTF8'); 
mysql_query("INSERT INTO stat VALUES ('',NOW(),'$text','$message')");


Причём, если уберу переадресацию при нажатии кнопки отправить, то данные записываются корректно, но соответственно тогда при обновлении страницы запись вставляется снова

if ($_REQUEST['doing']) {
$rnd=time();
Header("Location:http://{$_SERVER['SERVER_NAME']}{$_SERVER['SCRIPT_NAME']}?$rnd");
exit();
}


Как это исправить ?

  Ответить  
 
 автор: sim5   (06.02.2009 в 16:29)   письмо автору
 
   для: kaizer131   (06.02.2009 в 13:33)
 

Вы приведите весь код, как это все у вас выполняется, и обрамите его ВВ-тегами [сode][/сode].

  Ответить  
 
 автор: kaizer131   (09.02.2009 в 09:10)   письмо автору
 
   для: sim5   (06.02.2009 в 16:29)
 


<?php
if ($_REQUEST['doing']) {
$rnd=time();
Header("Location:http://{$_SERVER['SERVER_NAME']}{$_SERVER['SCRIPT_NAME']}?$rnd");
exit();
}
include_once
"cgi-bin/conect.php";
mysql_query('CREATE TABLE IF NOT EXISTS stat (id INT,data DATETIME,name VARCHAR(20),message VARCHAR(20))')
or die(
mysql_error());
$text mysql_real_escape_string(htmlspecialchars($_POST["header"]));
$message mysql_real_escape_string(htmlspecialchars($_POST["message"]));
mysql_query('SET NAMES UTF8'); 
mysql_query("INSERT INTO stat VALUES ('',NOW(),'$text','$message')");
// конец куска подключениякБД
// кодировки для метатэга cp1251   , UTF-8 
  
$query =  $query "SELECT * FROM `stat` 
  WHERE `name`!=''  
  ORDER BY `id`  DESC LIMIT 5"
;  
 
$result mysql_query($query);  
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head >
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
</head >
<body>
    
    <? while ($row mysql_fetch_assoc($result)): ?>     
    
    <div  >
  <h2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <u> Дата:</u>&nbsp;&nbsp;</h2>
 <h2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <u>Имя:</u> &nbsp;&nbsp;<?=$row['name']?> 
   <?=$row['data']?>
 </h2>
   <h2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<u>Сообщение:</u>&nbsp;&nbsp;<?=$row['message']?></h2>
<hr />
 <? endwhile; ?> 
 </div>
    <div>
<form method="post" action="index.php">
Ваше имя:&nbsp;&nbsp;<input type="text" name="header"><br /><br />
<textarea name="message" rows="6" cols="90">
<?=@htmlspecialchars($_REQUEST['message'])?>
Ваше сообщение
</textarea><br />
<br /><input type="submit" name="doing" value="Сохранить">
</form>
</div>    
    

</body>
</html>





  Ответить  
 
 автор: Trianon   (09.02.2009 в 10:13)   письмо автору
 
   для: kaizer131   (09.02.2009 в 09:10)
 

Что значит - почему?
Вы же сами с помощью переадресации (Location, exit) ушли из обработчика post-запроса?
Данные POST-запроса нужно сохранить до переадресации.

  Ответить  
 
 автор: Kaizer131   (09.02.2009 в 11:15)   письмо автору
 
   для: Trianon   (09.02.2009 в 10:13)
 

Да , но для сохранения данных POST необходимо подключиться к БД
строка

include_once"cgi-bin/conect.php"; 


но если она используется до переадресации, то выдаёт ошибку заголовка... :(

Может просто осуществлять подключение не отдельным файлом, а внутри основного файла?

  Ответить  
 
 автор: Trianon   (09.02.2009 в 11:50)   письмо автору
 
   для: Kaizer131   (09.02.2009 в 11:15)
 

какую такую ошибку заголовка?

Вообще-то require_once("cgi-bin/conect.php");

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования