PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 9
Wisterman Отправлено: 05 Августа, 2014 - 11:25:18 • Тема: insert несколько id из масива • Форум: Вопросы новичков

Ответов: 18
Просмотров: 636
пытаюсь как-то вот так
PHP:
скопировать код в буфер обмена
  1. if (isset($_POST['add']))
  2.     {
  3.        
  4.        
  5.         if(!empty($_POST['invoices']))
  6.         {
  7.             $string = trim($_POST['invoices']);
  8.             $massiv = explode("\r\n", $string);
  9.             echo "Внесены номера наклыдных";
  10.             print_r ($massiv);
  11.             foreach ($massiv as $key=>$massiv)
  12. {
  13.      $a = "REPLACE INTO invoices  (invoice_id,fio_otp,fio_pol) VALUES('$massiv') select fio_otp, fio_pol from zakazy where nomer = 41";
  14. echo $a;
  15. $add = mysql_query($a) or die(mysql_error());
  16. }
  17.         }
  18.         else
  19.         {
  20.             echo "А накладные не введены.";
  21.         }
  22.     }

Но ясен красен, что это не работает.
(Добавление)
Вроде справился. Но это костыль.
PHP:
скопировать код в буфер обмена
  1. if (isset($_POST['add']))
  2. {
  3.     if(!empty($_POST['invoices']))
  4.     {
  5.         $string = trim($_POST['invoices']);
  6.         $massiv = explode("\r\n", $string);
  7.         echo "Внесены номера наклыдных";
  8.         print_r ($massiv);
  9.         foreach ($massiv as $key=>$massiv)
  10.         {
  11.             $b = mysql_query("select fio_otp, fio_pol from zakazy where nomer = 41");
  12.             while($row_data = mysql_fetch_array($b))
  13.             {
  14.                 $a = "REPLACE INTO invoices  (invoice_id,fio_otp,fio_pol) VALUES('$massiv','$row_data[fio_otp]','$row_data[fio_pol]')";  
  15.             }
  16.         echo $a;
  17. //$add = mysql_query($a) or die(mysql_error());
  18.         }
  19.     }
  20.     else
  21.     {
  22.         echo "А накладные не введены.";
  23.     }
  24. }

Но если в $_POST['invoices'] прилетит 30 номеров, это будет 30 запросов.
Как можно это дело оптимизировать?
Wisterman Отправлено: 04 Августа, 2014 - 19:05:52 • Тема: insert несколько id из масива • Форум: Вопросы новичков

Ответов: 18
Просмотров: 636
esterio пишет:
а откуда взялись текст1 и текст2. ок там одна строчка, а если их много будет, то как тогда?

через GET приходит id строки первой таблицы из которой нужно брать текст1 и текст2
Wisterman Отправлено: 04 Августа, 2014 - 17:59:31 • Тема: insert несколько id из масива • Форум: Вопросы новичков

Ответов: 18
Просмотров: 636
Tyoma5891 пишет:
Wisterman пишет:

Вообще не догоняю, что это за запрос такой получается.

потому что Вы не можете четко сформулировать то что Вам нужно(мы не должны вытягивать все из Вас по кускам), то что Вам требуется не спеша, последовательно...

Я ж вроде стараюсь)))

Есть таблица 1
id text1 text2

Есть таблица 2
invoice_id pole1 pole2

В таблице 1 есть строка
1 текст1 текст2

Дальше, есть текстареа в которую через энтер вносят номера накладных.
Ввели штук 10. Нажали кнопочку ОК.
Нужно чтобы в таблице 2 появились 10 записей где рознятся только invoice_id (мы их ввели в текстареа)
а поля pole1 и pole2 равнялись text1 и text2 из первой таблицы.

Пример. В текстареа ввели 111(энтер)222(энтер)333(энтер).
По нажатию на кнопку ОК в таблице 2 должно появиться три тсрочки
invoice_id (111) pole1(текст1) pole2(текст2)
invoice_id (222) pole1(текст1) pole2(текст2)
invoice_id (333) pole1(текст1) pole2(текст2)

как=-то так)
Wisterman Отправлено: 04 Августа, 2014 - 17:43:31 • Тема: insert несколько id из масива • Форум: Вопросы новичков

Ответов: 18
Просмотров: 636
esterio пишет:
Wisterman пишет:
не понял выражения.

REPLACE сделает INSERT если не будет найдено или UPDATE если найдет запись по індексах (причем индексы должны быть уникальны и парой если учитиваеться несколько полей)
а селект это выборка данных.
тоесть выбрать данные из одной таблицы и вставить в другую. если есть заменить если нет вставить, как-то так

Простите, а можно код для моего случая. Вообще не догоняю, что это за запрос такой получается.
Я думал, нужно сначала сделать выборку из первой таблице. Потом, как бы выводя результат первого запроса, формировать запрос (insert) для другой таблицы.
Wisterman Отправлено: 04 Августа, 2014 - 17:12:05 • Тема: insert несколько id из масива • Форум: Вопросы новичков

Ответов: 18
Просмотров: 636
esterio пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. REPLACE INTO table1 (field1, field2) SELECT field1, field2) WHERE ...

?

не понял выражения.
(Добавление)
Распишу в деталях. Может поможет)
Первый запрос
CODE (SQL):
скопировать код в буфер обмена
  1. $result = mysql_query("SELECT * FROM zakazy WHERE nomer = '$_POST[id]'");  

запрос вернет что-то вроде nomer = 1, fio_otp = aaa, fio_pol = bbb.
дальше идет
PHP:
скопировать код в буфер обмена
  1. $string = trim($_POST['invoices']);
  2.             $massiv = explode("\r\n", $string);
  3.             echo "Внесены номера наклыдных";
  4.             print_r ($massiv);
  5.             foreach ($massiv as $key=>$massiv)
  6. {
  7.      $a = "REPLACE INTO invoices  (invoice_id,fio_otp,fio_pol) VALUES('$massiv','text','text2')";
  8. echo $a;
  9. $add = mysql_query($a) or die(mysql_error());
  10. }

нужно в fio_otp и fio_pol из второго запроса, вставить занчения fio_otp и fio_pol из первого.
Wisterman Отправлено: 04 Августа, 2014 - 17:00:41 • Тема: insert несколько id из масива • Форум: Вопросы новичков

Ответов: 18
Просмотров: 636
Tyoma5891 пишет:
ну вы же уже писали сами вот:
PHP:
скопировать код в буфер обмена
  1. $invoices = mysql_real_escape_string($_POST['invoices']);
  2.            
  3.             $invoices = explode("\r\n", $invoices);
  4. //а дальше что я писал:
  5. foreach ($invoices as $key=>$invoice)
  6. {
  7.      mysql_query("UPDATE таблица2 SET data = text,  data2 = text2 where inv_id = '$invoice');
  8. }
  9.  

A UPDATE при отсутсвии такой записи в таблице будет работать как INSERT?
(Добавление)
PHP:
скопировать код в буфер обмена
  1.    $string = trim($_POST['invoices']);
  2.             $massiv = explode("\r\n", $string);
  3.             echo "Внесены номера наклыдных";
  4.             print_r ($massiv);
  5.             foreach ($massiv as $key=>$massiv)
  6. {
  7.      $a = "REPLACE INTO invoices  (invoice_id,fio_otp,fio_pol) VALUES('$massiv','text','text2')";
  8. echo $a;
  9. $add = mysql_query($a) or die(mysql_error());

Вот так вроде рабоатет.
Осталось только в text и text2 подставить значения из первого запроса
PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("SELECT * FROM zakazy WHERE nomer = '$_POST[id]'");  
Wisterman Отправлено: 04 Августа, 2014 - 16:07:12 • Тема: insert несколько id из масива • Форум: Вопросы новичков

Ответов: 18
Просмотров: 636
Tyoma5891 пишет:
ладно вот фрагмент кода который заносит данные в нужную Вам таблицу:
PHP:
скопировать код в буфер обмена
  1. foreach ($invoices as $key=>$invoice)
  2. {
  3.      mysql_query("UPDATE таблица2 SET data = text,  data2 = text2 where inv_id = '$invoice');
  4. }

Не понимаю васУлыбка

Тут бы для начала разобратсья как правильно принять данные из textarea
(Добавление)
Таксь. С формирование массива вроде разобрался.
PHP:
скопировать код в буфер обмена
  1. $string = trim($_POST['invoices']);
  2.             $massiv = explode("\r\n", $string);
  3.             echo "Внесены номера наклыдных";
  4.             print_r ($massiv);

а как теперь сделать то что я говорил
Цитата:
Нужно, чтобы по нажатию кнопки в таблицу 2 вставилось две (в зависимости от количества внесенного в поле) строки.
inv_id = 123456, data = text, data2 = text2
inv_id = 654321, data = text, data2 = text2
Wisterman Отправлено: 04 Августа, 2014 - 15:34:41 • Тема: insert несколько id из масива • Форум: Вопросы новичков

Ответов: 18
Просмотров: 636
Tyoma5891 пишет:
странно что у Вас тут массив получается:

должна быть строка))
а вот если так, то массив:
Комментировать не буду)
ну а дальше по тексту трудновато понять что Вам нужно...
Давайте еще раз попробую.
Есть таблица1
id, text, text2

Есть таблица2
inv_id, data, data2

Есть поле, в которое через Enter вносятся номера накладных.
Например ввели 123456 и 654321

Нужно, чтобы по нажатию кнопки в таблицу 2 вставилось две (в зависимости от количества внесенного в поле) строки.
inv_id = 123456, data = text, data2 = text2
inv_id = 654321, data = text, data2 = text2
(Добавление)
если я делаю

то результатом дает

а нужно ж чтоб было
Wisterman Отправлено: 04 Августа, 2014 - 15:18:51 • Тема: insert несколько id из масива • Форум: Вопросы новичков

Ответов: 18
Просмотров: 636
Доброго дня.
Подскажите, пожалуйста.
Есть table1
id, text1, text2, text_n
Из него я делаю выборку по id.

Есть поле <textarea> в которое через энтер вносятся номера.
Дальше, постом летит на обработку.
PHP:
скопировать код в буфер обмена
  1. $invoices = $_POST['invoices'];
  2.            
  3.             $invoices = explode("\n", $invoices);
  4.            
  5.        
  6.            
  7.             $invoices = array_unique($invoices);

как правильно пишется запрос, чтобы внести все номера из массива в table2 вида

invoice_id, text1, text2, text_n, где invoice_id это перебранные значения массива invoices, а text1, text2, text_n идут из запроса по table1.

Понимаю, что через implode но никак правильно не получается сформировать запрос.

П.С. Нужно еще учесть, что в массив могут внести всего один номер.


Немножко дополнюсь.
Код странички вот такой
PHP:
скопировать код в буфер обмена
  1. if (isset($_POST['add']))
  2.     {
  3.         $result = mysql_query("SELECT * FROM table1 WHERE nomer = '$_POST[id]'");//запрос из первой таблицы.  
  4.        
  5.         if(!empty($_POST['invoices']))//если в поле внесены номера или номер
  6.         {
  7.             echo "Внесены номера наклыдных";
  8.             print_r ($invoices);
  9.  
  10. //вот тут нужен запрос виде
  11. // * значения из первого запроса.
  12. //** перебранные значения из массива.
  13. $q = "INSERT INTO table 2 (invoice_id, text1, text2, text_n) VALUES(invoice_id**, text1*, text2*, text_n*);
  14.        }
  15.        else
  16.        {
  17.            echo "А накладные не введены.";
  18.        }
  19.    }

[HTML]<form action="#" method="post">
<input type="hidden" name="id" value="<?=$row['nomer'];?>">
<TEXTAREA type="text" NAME="invoices" id="notes" ROWS=30 COLS=7></TEXTAREA><input type="submit" name="add" value="Добавить" />
</form> [/HTML]

И как можно написать условие "Если invoice_id уже существует" - обновить.

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB