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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Добавление новых данных и вытекающая проблема

Сообщения:  [1-10]   [11-15] 

 
 автор: Apcen   (01.09.2008 в 11:22)   письмо автору
 
   для: Arfey   (31.08.2008 в 15:08)
 

первое нужно сначало проверять ошибки и только после этого записывать в бд
и при обнавлении перенаправлять на страницу записи.

  Ответить  
 
 автор: sim5   (01.09.2008 в 06:52)   письмо автору
 
   для: Arfey   (31.08.2008 в 23:10)
 

Первое - register_globals установите в off и получайте данные из формы как $_POST['a'] и т.д..
Второе - вы хотя бы "для порядка" проверяли чего вам шлют, чего вы на веру все принимаете и записываете в базу.
Что касается вопроса перенаправления, то вы должны решить сразу - хотите ли вы передавать параметр по которому будете определять этот переход, либо нет. Во втором случае вам потребуется сессия, а значит ваш скрипт доолжен быть построен так, что все, что связано с выводом в браузер, должно происходить после старта сессии.
Сам механизм такой. В начале вы проверяте - был ли переход на странице, если это был параметр в адресной строке, например: header("location: ?ok"), то дожны проверить:
if (isset($_SET['ok'])) {
//сообщение об успешной операции
} else {
//проверяем получение формы
//если ошибки, устанавливаем ошибку
//если все ОК пишем в базу и перенаправляем
}
Далее проверяем, если форма не приходила или приходила, но были ошибки - выводим форму. Вот собственно и весь механизм.

  Ответить  
 
 автор: Arfey   (31.08.2008 в 23:10)   письмо автору
 
   для: mihdan   (31.08.2008 в 19:30)
 

Вот урезанный кусок проблемы:
Данные проверяются на корректность, и если все в порядке - вставляются в БД и на эту же страницу выводится сообщение "Данные добавлены". Как здесь воспользоваться вашими советами. Заранее благодарю

<?
$x
=1;
if (!empty(
$submit) )
{
$db mysql_connect("localhost""root");
mysql_select_db("db1",$db);
   if (
$a!="")
     {
      
$sql "INSERT INTO table (a,b,c) VALUES ('$a','$b','$c')";
    
$result mysql_query($sql);
    echo 
"Данные добавлены";
    
$x=0;
     } 
else { 
$error_msg "Вы не заполнили обязательные поля (выделены краным цветом)<br>"; }

}                

if (
$x==1
{
?>
<form method="post" action="<? echo $PHP_SELF ?>">
<? 
echo $error_msg;
$error_msg 0;
 
?>
<TABLE>
  <TR>
    <TD>Введите a,b,c:</TD>
    <TD>
      <input name=a>
      <input name=b>
      <input name=c>
    </TD>
  </TR>
  <TR>
    <TD>
      <input type="Submit" name="submit" value="Добавить">
    </TD>
  </TR>
</FORM>
</TABLE>
<?
}
?>

  Ответить  
 
 автор: mihdan   (31.08.2008 в 19:30)   письмо автору
 
   для: sim5   (31.08.2008 в 19:27)
 

Согласен с вами, просто это один из вариантов

  Ответить  
 
 автор: sim5   (31.08.2008 в 19:27)   письмо автору
 
   для: mihdan   (31.08.2008 в 19:03)
 

Это я знаю. И совсем не обязательно time(). Можно вообще не прибегать к передаче параметра, если хотим скрыть "причину" перехода.

  Ответить  
 
 автор: mihdan   (31.08.2008 в 19:03)   письмо автору
 
   для: sim5   (31.08.2008 в 15:20)
 

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

Например

<?php
// Добавление данных и проверка на успешность
header('Location: ?rnd='.time());
?>

  Ответить  
 
 автор: sl1p   (31.08.2008 в 16:48)   письмо автору
 
   для: sim5   (31.08.2008 в 16:42)
 

да я просто пишу потом понимаю что это не то :D
мне кнопочка едит снится по ночам =D

  Ответить  
 
 автор: sim5   (31.08.2008 в 16:42)   письмо автору
 
   для: sl1p   (31.08.2008 в 16:40)
 

Ни чо, не знаете, лучше молчите. Смеяться в новый открытый форум.

  Ответить  
 
 автор: sl1p   (31.08.2008 в 16:40)   письмо автору
 
   для: sim5   (31.08.2008 в 16:12)
 

а чо

xD
сори со смеха катаюсь :)

  Ответить  
 
 автор: sim5   (31.08.2008 в 16:12)   письмо автору
 
   для: sl1p   (31.08.2008 в 16:08)
 

А шо тогда советуете?

  Ответить  

Сообщения:  [1-10]   [11-15] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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