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

Форум MySQL

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

 

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

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

тема: проблема: цикл, массив, INSERT
 
 автор: Bourov   (14.07.2009 в 13:59)   письмо автору
 
 

1) В первом файле у меня стоят checkbox <input type='checkbox' name='item[]' value='%s' /> в которые вписываются значения "ID Вагона" из базы: т.е. я беру всего лишь числа пример: 2,8,13
они добавляются в массив

2) Затем я перехожу по ссылке и заполняю другие поля: Дата, Время, Место нах, Дата прибытия, Время Прибытия. Эти поля будут одинаковые для вагонов под ID 2,8,13

<form action="add_proslejivanie.php" method="post" id="form1">
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td width="16%"><img src="images/code.jpg" width="23" height="23" align="absmiddle" /> ID № вагона</td>
<td width="17%"><img src="images/cal.jpg" alt="" width="27" height="23" align="absmiddle" /> &nbsp;Дата</td>
<td width="16%"><img src="images/time.jpg" alt="" width="23" height="23" align="absmiddle" /> Время</td>
<td width="18%"><img src="images/z1.gif" alt="" width="23" height="23" align="absmiddle" /> Местонахождение</td>
<td width="16%"><img src="images/cal.jpg" alt="" width="27" height="23" align="absmiddle" /> Дата прибытия</td>
<td width="17%"><img src="images/time.jpg" alt="" width="23" height="23" align="absmiddle" /> Время прибытия</td>

</tr>
<tr>
<td><?
$a=$_POST['item'];
$ids = implode( ',', $_POST['item'] );
echo"$ids";
?></td>
<td><input name="data" type="text" size="10" value="<?php echo (date("Y-m-d "));?>"/></td>
<td><input name="time" type="text" size="6" value="<?php echo (date("G:i "));?>"/></td>
<td><input name="mesto" type="text" id="mesto" size="15" /></td>
<td><input name="datapr" value="<?php echo (date("Y-m-d "));?>" type="text" size="8" /></td>
<td><input name="vremeapr" type="text" id="zayavki" size="10" value="<?php echo (date("G:i "));?>"/></td>
<input name="aidi" type="hidden" value="<? $a ?>">
<input name="idz" type="hidden" value="<? $_POST['item']; ?>">
</tr>
</table>
<table border="1" cellspacing="0" cellpadding="0">
<tr><td>Дополнительная информация:</td></tr>
<tr><td>
<p><textarea name="dopinfo" cols="70" rows="4"></textarea></p></td></tr></table>
<p>
<label>
<br /> <br /><input type="submit" name="Submit" id="Submit" value=" Добавить " />
</label>
</p>
</form>

3) сам файл add_proslejivanie.php содержит запись данных в таблицу:

<?php

if (isset($aidi) && isset($idz) && isset($data) && isset($time) && isset($mesto) && isset($datapr) && isset($vremeapr))
{
$result = mysql_query ("INSERT INTO proslej (id_vag,data,time,mesto,datapr,vremeapr,dopinfo,idz) VALUES ('$aidi','$data','$time','$mesto','$datapr','$vremeapr','$dopinfo','$idz')" );
if ($result == 'true') { echo "
Вы успешно добавили:


";}
else { echo "<p> Произошла ошибка</p> " ;}

}
else
{
echo "<p>Вы не ввели все поля.</p> " ;

}


?>



Теперь проблема:
Если выбрать 1 вагон, то всё записывается, а если выбрать вагоны например 2,8,13 то после завершения в таблице будет только одна строка и одно значение в id_vag : 0.


А мне нужно 3 строки абсолютно одинаковые, кроме значение id_vag соответсвенно 2, 8 , 13.

  Ответить  
 
 автор: Trianon   (14.07.2009 в 14:02)   письмо автору
 
   для: Bourov   (14.07.2009 в 13:59)
 

Вы бы попроще сказали - как выглядит форма?
Не php-текст её порождающий, а html-код формы.

  Ответить  
 
 автор: Bourov   (14.07.2009 в 14:12)   письмо автору
11.1 Кб
 
   для: Trianon   (14.07.2009 в 14:02)
 

Форма выглядит как в присоединёном файле.
В ID № вагона записались данные 2,15 следовательно после выполнения action
будет 2 строчки, в одну из которых пойдёт 2 в поле ID № вагона, в другую 15.

  Ответить  
 
 автор: Trianon   (14.07.2009 в 14:18)   письмо автору
 
   для: Bourov   (14.07.2009 в 14:12)
 

Вот форма из этого файла.
<form action="add_proslejivanie.php" method="post" id="form1">
            <table width="100%" border="1" cellspacing="0" cellpadding="0">
              <tr>
                <td width="16%"><img src="images/code.jpg" width="23" height="23" align="absmiddle" /> ID № вагона</td>
                <td width="17%"><img src="images/cal.jpg" alt="" width="27" height="23" align="absmiddle" /> &nbsp;Дата</td>
                <td width="16%"><img src="images/time.jpg" alt="" width="23" height="23" align="absmiddle" /> Время</td>
                 <td width="18%"><img src="images/z1.gif" alt="" width="23" height="23" align="absmiddle" /> Местонахождение</td>
                  <td width="16%"><img src="images/cal.jpg" alt="" width="27" height="23" align="absmiddle" /> Дата прибытия</td>
                   <td width="17%"><img src="images/time.jpg" alt="" width="23" height="23" align="absmiddle" /> Время прибытия</td>
                    
              </tr>
              <tr>
                <td>2,15</td>
                <td><input name="data" type="text" size="10" value="2009-07-14 "/></td>
                <td><input  name="time" type="text" size="6" value="13:07 "/></td>
                 <td><input name="mesto" type="text" id="mesto" size="15" /></td>
                  <td><input name="datapr" value="2009-07-14 " type="text"  size="8" /></td>
                   <td><input name="vremeapr" type="text" id="zayavki" size="10" value="13:07 "/></td>
                    <input name="aidi" type="hidden" value="">
                     <input name="idz" type="hidden" value="">
              </tr>
            </table>
            <table  border="1" cellspacing="0" cellpadding="0">
            <tr><td>Дополнительная информация:</td></tr>
            <tr><td>
            <p><textarea name="dopinfo" cols="70" rows="4"></textarea></p></td></tr></table>
            <p>
                      <label>
                       <br /> <br /><input type="submit" name="Submit" id="Submit" value=" Добавить " />
                      </label>
                    </p>
</form>

ID вагонов в элементах формы не видны вообще.

  Ответить  
 
 автор: Bourov   (14.07.2009 в 14:27)   письмо автору
 
   для: Trianon   (14.07.2009 в 14:18)
 

Объясню по порядку.
На 1ой странице у меня таблица с чекбоксами. Выбираю пару чекбоксов ( в чекбоксах ID вагона)
Перехожу на 2ую страницу, чью форму я прислал. (соответсвенно там значения 2,15 уже с первой страницы) вывел я 2 и 15 через функицю
<? $ids = implode( ',', $_POST['item'] );
echo"$ids";
?>

Что мне нужно:
Чтобы не заполнять по 100 раз одинаковую информацию (ведь по факту разные только ID вагона) я хочу вытащить из массива эти значения 2 и 15
и вставить в базу их как 2 строчки:

ID вагона / Дата / Время / Местонахождение / Дата прибытия / Время прибытия
2 ............... одинаковое
15 всё остальное........ одинаковое

  Ответить  
 
 автор: ride   (14.07.2009 в 14:19)   письмо автору
 
   для: Bourov   (14.07.2009 в 13:59)
 

>><input name="aidi" type="hidden" value="<? $a ?>">
>><input name="idz" type="hidden" value="<? $_POST['item']; ?>">
одни значения для разных инпутов?

могу предположить, что у вас в таблице proslej поле id_vag числовое, а вы пытаетесь вставить строку $aidi.
покажите структуру таблицы

  Ответить  
 
 автор: Bourov   (14.07.2009 в 14:32)   письмо автору
 
   для: ride   (14.07.2009 в 14:19)
 

Числовое.

CREATE TABLE `proslej` (
`id` int(20) NOT NULL auto_increment,
`id_vag` int(20) NOT NULL default '0',
`data` date NOT NULL default '0000-00-00',
`time` time NOT NULL default '00:00:00',
`mesto` varchar(255) NOT NULL default '',
`dopinfo` text NOT NULL,
`datapr` date NOT NULL default '0000-00-00',
`vremeapr` time NOT NULL default '00:00:00',
`idz` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=29 ;

  Ответить  
 
 автор: buldovsky   (14.07.2009 в 14:24)   письмо автору
 
   для: Bourov   (14.07.2009 в 13:59)
 

> А мне нужно 3 строки абсолютно одинаковые, кроме значение id_vag соответсвенно 2, 8 , 13.

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

  Ответить  
 
 автор: Bourov   (14.07.2009 в 14:28)   письмо автору
 
   для: buldovsky   (14.07.2009 в 14:24)
 

Вот и хочу узнать как в цикле загонять в базу данных, когда одно поле берётся из массива, а остальные из формы, потом 2ое поле из массива, и опять всё остальное из формы

  Ответить  
 
 автор: buldovsky   (14.07.2009 в 14:34)   письмо автору
 
   для: Bourov   (14.07.2009 в 14:28)
 


<?php

$query 
"INSERT INTO proslej (id_vag,data,time,mesto,datapr,vremeapr,dopinfo,idz) VALUES ";
foreach (
$_POST['item'] as $id$query .= "('$id','$data','$time','$mesto','$datapr','$vremeapr','$dopinfo','$idz'),";
// удаляем последнюю запятую
$query{strlen($query)-1} = "";

?>


  Ответить  
 
 автор: Bourov   (14.07.2009 в 14:58)   письмо автору
159.6 Кб
 
   для: buldovsky   (14.07.2009 в 14:34)
 

Спасибо. Попробую.
В целом свою задачу выложил в приложенном файле.
Может есть более оптимальный способ для её выполнения.

  Ответить  
 
 автор: buldovsky   (14.07.2009 в 15:14)   письмо автору
 
   для: Bourov   (14.07.2009 в 14:58)
 

На мой взгляд неразумно заполнять базу одинаковыми строками, если разница только в поле id. Храните информацию о всем составе одной строкой. А для вагонов которые вы прослеживаете создайте отдельную таблицу в которой каждому вагону соответствует id состава. И еще зачем хранить date и time в разных полях таблицы?

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

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