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

Форум MySQL

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

 

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

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

тема: Как отправить все строки одновременно в mysql
 
 автор: clubxaliav   (22.01.2012 в 18:43)   письмо автору
19.1 Кб
 
 

Есть скрипт который добавляет новую строку (позицию), нужно все строки одновременно загрузить в базу. ( см. рис. он прикреплен. )

Помогите с написание отправки, заранее благодарю.

  Ответить  
 
 автор: cheops   (22.01.2012 в 19:02)   письмо автору
 
   для: clubxaliav   (22.01.2012 в 18:43)
 

Вы можете использовать многострочный INSERT-запрос, т.е. вместо запроса
INSERT INTO tbl VALUES
(NULL, 'лейка', 'пластмассовая лейка')
можно использовать такой
INSERT INTO tbl VALUES
(NULL, 'лейка', 'пластмассовая лейка'),
(NULL, 'ножницы', 'маникюрные ножницы'),
(NULL, 'стул', 'со спинкой')

  Ответить  
 
 автор: clubxaliav   (22.01.2012 в 19:11)   письмо автору
 
   для: cheops   (22.01.2012 в 19:02)
 

А как я подставлю нужные данные в запрос, если у меня с каждой новой строкой добавляются новые item[] и item2[]:

<form>
<table>
     <tr>
         <td><input type=\"text\" name=\"item[]\"></td>
         <td><input type=\"text\" name=\"item2[]\"></td>
     </tr>
     <tr>
          <input type="button" value="Добавить поле" onClick="AddItem();" ID="add"> <input name="submit" type="submit" value="Загрузить">
     </tr>
</table>
</form>

  Ответить  
 
 автор: cheops   (22.01.2012 в 19:17)   письмо автору
 
   для: clubxaliav   (22.01.2012 в 19:11)
 

Так, у вас элементы $_GET['item'] и $_GET['item2'] будут двумерными массивами, вам нужно будет их просто в цикле обработать. Да вы просто дамп $_GET выведете в обработчике и сами все увидите.
<?php
  
echo "<pre>";
  
print_r($_GET);
  echo 
"</pre>";
?>

  Ответить  
 
 автор: clubxaliav   (22.01.2012 в 19:25)   письмо автору
 
   для: cheops   (22.01.2012 в 19:17)
 

Ах, знать бы как еще эти массивы сделать! с одним item я могу сделать а с двумя уже не получается, у меня по плану этих item должно быть 9.
По этому и прошу помочь... не как не пойму!

  Ответить  
 
 автор: cheops   (22.01.2012 в 19:29)   письмо автору
 
   для: clubxaliav   (22.01.2012 в 19:25)
 

Их не нужно делать - они будут сформированы автоматически, вам останется только воспользоваться ими.

  Ответить  
 
 автор: clubxaliav   (22.01.2012 в 19:35)   письмо автору
 
   для: cheops   (22.01.2012 в 19:29)
 

вот что получилось а как из этого слепить?

Array
(
    [item9] => 281
    [item6] => Array
        (
            [0] => лейка
            [1] => ножницы
            [2] => стул
        )

    [item2] => Array
        (
            [0] => пластмассовая лейка
            [1] => маникюрные ножницы
            [2] => со спинкой
        )

    [submit] => Загрузить
)


Как сюда отправить? =>

INSERT INTO tbl VALUES
(NULL, 'лейка', 'пластмассовая лейка'),
(NULL, 'ножницы', 'маникюрные ножницы'),
(NULL, 'стул', 'со спинкой')

  Ответить  
 
 автор: cheops   (22.01.2012 в 19:42)   письмо автору
 
   для: clubxaliav   (22.01.2012 в 19:35)
 

Можно начать отталкиваться от следующего скрипта
<?php
  
...
  
$sql = array();
  if(!empty(
$_GET['item6']))
  {
     for(
$i 0$i count($_GET['item6']); $i++)
     {
        
$fst mysql_escape_string($_GET['item6'][$i]);
        
$snd mysql_escape_string($_GET['item2'][$i]);
        
$sql[] = "(NULL, '$fst', '$snd')";
     }
     
$query "INSERT INTO tbl VALUES ".implode(","$sql);
     ...
  }
  ...
?>

  Ответить  
 
 автор: clubxaliav   (22.01.2012 в 20:05)   письмо автору
 
   для: cheops   (22.01.2012 в 19:42)
 

Не отправляет ни одной строки.... ((((((

if ($_POST['item9']) {  

     $sql = array();
     if(!empty($_GET['item6']))
     {
       for($i = 0; $i < count($_POST['item6']); $i++)
       {
          $fst = mysql_escape_string($_POST['item6'][$i]);
          $snd = mysql_escape_string($_POST['item2'][$i]);
          $sql[] = "(NULL , '$fst', '$snd', '$articl', 
'$proizvod', '$paysys_prod', '1', '', '$period', 'show', 
'0', '".date("Y-m-j H:i:s")."', '$nalichie', '$id_comp', 
'$razdel', '$razdel2', '$razdel3', '$id_user', '', '')";
       }
          $query = "INSERT INTO $tables[t_products] (`id_prod`, `name_prod`, `text_prod`, `articl`, `proizvod`, 
`paysys_prod`, `status`, `status_date`, `period`, `hide`, 
`clicks`, `create_date`, `nalichie`, `id_comp`, 
`id_poddirs`, `id_dirs`, `id_razdel`, `uid`, `img_prod`, 
`edit_date`) VALUES ".implode(",", $sql)";
          mysql_query($query) or die(mysql_error());
     }
}

  Ответить  
 
 автор: cheops   (22.01.2012 в 20:08)   письмо автору
 
   для: clubxaliav   (22.01.2012 в 20:05)
 

Выводится какое-то сообщение об ошибке?

  Ответить  
 
 автор: clubxaliav   (22.01.2012 в 20:12)   письмо автору
 
   для: cheops   (22.01.2012 в 20:08)
 

Извиняюсь, мой косяк:

if(!empty($_GET['item6'])) // POST - забыл поменять
{
.....

Все работает, огромное вам спасибо, буду дорабатывать тогда дальше...

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

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