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

Форум PHP

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

 

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

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

тема: кнопка добавить
 
 автор: mark1   (08.10.2009 в 00:26)   письмо автору
 
 

подскажите пожалуйста как сделать так чтоб добавлялось 1 раз только по нажатию на кнопку


<form method="post">
<!--<input name="search_q" type="text" size="15" maxlength="30" /> -->
<input name="add" type="submit" value="Добавить" />
<input type="hidden" name="action" value="add">


</form>


<?php

if ((isset($_POST['cat']))&&(isset($_POST['sdelka']))&& (isset($_POST['city'])) && (isset($_POST['name']))&& ($_POST['action']=="add")  ) 
   
{
$sql = ("INSERT INTO `data` (cat_id,kom_id,sd_id,city_id,name)
        VALUES ('"
.intval($_POST['cat'])."',
                '"
.intval($_POST['komnati'])."',
                '"
.intval($_POST['sdelka'])."',
                '"
.intval($_POST['city'])."',
                '"
.mysql_escape_string($_POST['name'])."'
         )"
); 
$result mysql_query($sql) or die (mysql_error() ."<br/>"$sql);}
mysql_error ();
if (
$result == 'true') {echo "<p> добален!</p>";}
else {echo 
"<p> не добален!</p>";}




?>

  Ответить  
 
 автор: cheops   (08.10.2009 в 00:29)   письмо автору
 
   для: mark1   (08.10.2009 в 00:26)
 

После того, как добавили данные в базу данных - обязательно перезагрузите страницу при помощи HTTP-заголовка Location, передав его функции header(). Иначе любая перезагрузка страницы будет отправлять POST-данные повторно.

  Ответить  
 
 автор: mark1   (08.10.2009 в 00:36)   письмо автору
 
   для: cheops   (08.10.2009 в 00:29)
 

да тут добавляется сразу после заполнения первого селекта , а потом еще раз после нажатия кнопки

  Ответить  
 
 автор: mark1   (08.10.2009 в 00:36)   письмо автору
 
   для: cheops   (08.10.2009 в 00:29)
 

да тут добавляется сразу после заполнения первого селекта , а потом еще раз после нажатия кнопки

  Ответить  
 
 автор: cheops   (08.10.2009 в 00:38)   письмо автору
 
   для: mark1   (08.10.2009 в 00:36)
 

Хм... что-то не видно в форме select-ов... у вас к ним привязаны какие-то события?

  Ответить  
 
 автор: mark1   (08.10.2009 в 00:45)   письмо автору
 
   для: cheops   (08.10.2009 в 00:38)
 

да,заполняются все селекты(сat,city,sdelka,komnati) ,затем отправляются в базу,так вот в базу они попадают 2 раза после заполнения первого и после нажатия

  Ответить  
 
 автор: cheops   (08.10.2009 в 00:50)   письмо автору
 
   для: mark1   (08.10.2009 в 00:45)
 

У селектов имеются JavaScript-события? И если да то, не перегружают ли они страницу?

  Ответить  
 
 автор: mark1   (08.10.2009 в 01:01)   письмо автору
 
   для: cheops   (08.10.2009 в 00:50)
 

вот выбор sdelka



<?

// выбираем столбец name из таблицы sdelka
$query "SELECT * FROM `sdelka`";
$res mysql_query($query);
function 
sel_sd($a)
{
$b = isset($_POST['sdelka'])?$_POST['sdelka']:NULL;
if(
$a == $b)
return 
'selected="selected"';
}

?>

<!-- создаем форму select для выбора сделки -->
<form id="frm2" action="" method="post">
<input id="sd_id" name="new_sd" type="hidden" />

<table border="0">
<tr>
<td><label for="sdelka">Сделка: </label></td>
<td>
<select name="sdelka" onchange="document.getElementById('new_sd').value='1';document.getElementById('frm2').submit()" >
  <option value='0'>- Выберите сделку -</option>
<?php
// выводим все строки из столбца name таблицы sdelka
    
while($row mysql_fetch_array($res))
      echo 
"<option ".sel_sd($row['sd_id'])." value='" $row['sd_id'] . "'>" $row['name'] . "</option>\r\n";
      
$sd$row['sd_id'];
?>
</select>

</td>
</tr>




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

  Ответить  
 
 автор: cheops   (08.10.2009 в 01:04)   письмо автору
 
   для: mark1   (08.10.2009 в 01:01)
 

!isset() в таком случае лучше заменить на empty() - тогда если у вас не будет выбран пункт меню, отличный от первого - обработчик срабатывать не будет.

  Ответить  
 
 автор: mark1   (08.10.2009 в 01:11)   письмо автору
 
   для: cheops   (08.10.2009 в 01:04)
 

это где,я ведь тут пытаюсь проверить заполнены ли все селекты

  Ответить  
 
 автор: cheops   (08.10.2009 в 01:13)   письмо автору
 
   для: mark1   (08.10.2009 в 01:11)
 

Вот эту строку
<?php
if ((isset($_POST['cat']))&&(isset($_POST['sdelka']))&& (isset($_POST['city'])) && (isset($_POST['name']))&& ($_POST['action']=="add")  )
?>

замените следующей
<?php
if ((!empty($_POST['cat']))&&(!empty($_POST['sdelka']))&& (!empty($_POST['city'])) && (!empty($_POST['name']))&& ($_POST['action']=="add")  )
?>

  Ответить  
 
 автор: mark1   (08.10.2009 в 01:18)   письмо автору
 
   для: cheops   (08.10.2009 в 01:13)
 

получилось! спасиба огромное) пойду дальше изучать

  Ответить  
 
 автор: mark1   (08.10.2009 в 01:18)   письмо автору
 
   для: cheops   (08.10.2009 в 01:13)
 

получилось! спасиба огромное) пойду дальше изучать

  Ответить  
 
 автор: Diplex   (08.10.2009 в 00:51)   письмо автору
 
   для: mark1   (08.10.2009 в 00:45)
 

Лучше бы весь html показали, т.к. не понятно, сколько у Вас там кнопок и как Вы ими манипулируете.

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

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