Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: array в цикле записать в mysql

 PHP.SU

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


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

> Описание: помогите примером
ilyamus
Отправлено: 06 Марта, 2012 - 17:37:38
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Вообщем так, я новенький принимайте Улыбка
естьссесия
PHP:
скопировать код в буфер обмена
  1.  
  2. include("../connect.php");
  3. include("main.php");
  4. //print_r ($_SESSION['korzina']); [b]типа она[/b]
  5. $idsuer = $_SESSION['iduser'];
  6. $nzakaz = time();
  7. foreach($_SESSION['korzina'] as $ind=>$val)
  8. $korzina_list.=$ind.',';
  9.  
  10. $query1=mysql_query("SELECT `parts`.`articul`, `price`.`price` FROM `parts` LEFT JOIN  `price` ON `parts`.`id`=`price`.`id` WHERE `parts`.`id`=('.trim($korzina_list,',').')"/*(вот в этом место не знаю что писать)*/) or die("Invalid query: " . mysql_error());
  11. //print_r ($query1);
  12. $result=mysql_fetch_array($query1) or die(mysql_error());
  13. echo $query1;
  14. if(!$val) continue;
  15. list($articul,$price)=@mysql_fetch_row($query1);
  16.  

Суть в том что там массив лежит, как мне прочитать в цикле я понял, как из нее выдрать переменные $ind $val тоже понял, делаю запрос для вывода всех значений из БД, вывожу принтом или ехом то что из бд должен получить, получаю только последнею строчку из 5.
Вот и задача, вывести все строчки с сопоставлением из бд после записать в новую таблицу все значения что я получил.


Отредактировано администратором: RomAndry, 07 Марта, 2012 - 09:33:07
 
 Top
ilyamus
Отправлено: 07 Марта, 2012 - 09:48:38
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




up

(Отредактировано автором: 07 Марта, 2012 - 09:48:57)

 
 Top
Hidalgo
Отправлено: 07 Марта, 2012 - 09:57:00
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Февр. 2012  
Откуда: Димитровград


Помог: 1 раз(а)




Если запрос к БД правильный то по идее должно прокатить
PHP:
скопировать код в буфер обмена
  1. while ( $row = mysql_fetch_array($query1))
  2. {
  3. echo '<td>'.$row["parts"].'</td><td>'.$row["articul"].'</td><td>'.$row["price"].'</td>';
  4. }

(Отредактировано автором: 07 Марта, 2012 - 10:04:23)

 
 Top
Dezmont
Отправлено: 07 Марта, 2012 - 10:07:22
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




А Вам действительно в запросе необходим LEFT JOIN? Обычный WHERE не обойтись в данной ситуации?


CODE (SQL):
скопировать код в буфер обмена
  1. SELECT parts.articul,price.price FROM parts,price WHERE parts.id=price.id AND id IN ($korzina_list)


Предполагается, что $korzina_list переменная вида 1,2,10,20

(Отредактировано автором: 07 Марта, 2012 - 10:08:35)

 
 Top
ilyamus
Отправлено: 07 Марта, 2012 - 10:09:14
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




щас буду проверять.
Вот я не могу никак понять такой расклад
session_start();
print_r ($_SESSION['korzina']);

вывод
Array ( [1] => 5 [4] => 55 [5] => 34 [2] => 55 )

вроде мне нужно подставить [1], [4], [5], [2] (id товара такой как в мускуле) 5, 55,34,55 количество, как правильно в запрос мускуля засунуть эту инфу? что бы мускуль вывел мне таблицу а не последнюю строчку
на пальцах обьясните мне плз...
(Добавление)
Dezmont пишет:
А Вам действительно в запросе необходим LEFT JOIN? Обычный WHERE не обойтись в данной ситуации?


CODE (SQL):
скопировать код в буфер обмена
  1. SELECT parts.articul,price.price FROM parts,price WHERE parts.id=price.id AND id IN ($korzina_list)


Предполагается, что $korzina_list переменная вида 1,2,10,20

из двух таблиц собираю инфу
 
 Top
Dezmont
Отправлено: 07 Марта, 2012 - 10:14:34
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




ilyamus, даже если из 5. Это ещё не означает, что Вам необходим оператор JOIN. Часто можно обойтись обычным условием WHERE
 
 Top
Hidalgo
Отправлено: 07 Марта, 2012 - 10:14:50
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Февр. 2012  
Откуда: Димитровград


Помог: 1 раз(а)




ilyamus пишет:
щас буду проверять.
Вот я не могу никак понять такой расклад
session_start();
print_r ($_SESSION['korzina']);

вывод
Array ( [1] => 5 [4] => 55 [5] => 34 [2] => 55 )

вроде мне нужно подставить [1], [4], [5], [2] (id товара такой как в мускуле) 5, 55,34,55 количество, как правильно в запрос мускуля засунуть эту инфу? что бы мускуль вывел мне таблицу а не последнюю строчку
на пальцах обьясните мне плз...

Подсчитать количество элементов в массиве, сделать цикл который будет делать запрос с определенным id товара
Мне честно говоря влом писать тут код, который тут почти в каждой теме...
Поищите на форуме, погуглите for, while

(Отредактировано автором: 07 Марта, 2012 - 10:18:27)

 
 Top
Dezmont
Отправлено: 07 Марта, 2012 - 10:18:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




Если необходимо выбрать id товара [1] и [4] и [5] и [2], подставляете эти значения в множество: WHERE id IN (1,4,5,2).
Если необходимо выбрать ещё и по количеству, то подставляете AND и необходимое условие.
(Добавление)
Если нужен запрос, опишите структуру таблиц и условие.
 
 Top
ilyamus
Отправлено: 07 Марта, 2012 - 10:25:35
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Dezmont пишет:
Если необходимо выбрать id товара [1] и [4] и [5] и [2], подставляете эти значения в множество: WHERE id IN (1,4,5,2).
Если необходимо выбрать ещё и по количеству, то подставляете AND и необходимое условие.
(Добавление)
Если нужен запрос, опишите структуру таблиц и условие.

ООО!!!
WHERE id IN (1,4,5,2). я понял что можно поставить, но я не могу понять вот чего , у меня формируется корзина в не й может быть и 3 строки и 44. как мне реализовать это в запросе?
или мне писать цикл до запроса и дергать базу по несколько раз?

(Отредактировано автором: 07 Марта, 2012 - 10:29:49)

 
 Top
Dezmont
Отправлено: 07 Марта, 2012 - 10:34:59
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




Несколько раз базу дёргать не стоит, если без этого можно обойтись. Я точно не понимаю, что и как вы хотите сделать.
Перебирать корзину в цикле, всё до последней записи не вариант?
 
 Top
ilyamus
Отправлено: 07 Марта, 2012 - 10:45:30
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Dezmont пишет:
Несколько раз базу дёргать не стоит, если без этого можно обойтись. Я точно не понимаю, что и как вы хотите сделать.
Перебирать корзину в цикле, всё до последней записи не вариант?

Суть вот в чем
В корзине (сессии) лежит только $id, $col (айди и количество товара) мне нужно взять всю корзину и записать в базу, но в базу нужно положить артикул товара, цену, айди юзера (эта таблица в базе и в таблице хронятся все эти параметры).
в корзине может быть как и 2 товара так и 30 товаров.
Я думал сделать так, делаю цикл корзины после выборку из базы по $ind всех товаров которые в корзине и только потом insert того что мне нужно
 
 Top
Dezmont
Отправлено: 07 Марта, 2012 - 11:12:10
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




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

CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO tovari (id,price,id_user)
  2.    SELECT -- Ваш запрос. Результирующие столбцы должны быть такими же как в INSERT
 
 Top
ilyamus
Отправлено: 07 Марта, 2012 - 11:40:09
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Dezmont пишет:
Если вы хотите вставить данные SELECT в базу, то можете воспользоваться такой конструкцией

CODE (SQL):
скопировать код в буфер обмена
  1. INSERT INTO tovari (id,price,id_user)
  2.    SELECT -- Ваш запрос. Результирующие столбцы должны быть такими же как в INSERT

да но перед селектом, мне нужно выборку сделать.
$query1=mysql_query("SELECT `parts`.`articul`, `price`.`price` FROM `parts` LEFT JOIN `price` ON `parts`.`id`=`price`.`id` WHERE `parts`.`id`='1,3,5,6'") or die("Invalid query: " . mysql_error());
вот в запрос как мне поставить переменную которая имеет несколько айдишек?
AND я не могу использовать по скольку не знаю сколько будет таких значений в корзине.
(Добавление)
Спасибо! Допер сам ;)
(Добавление)
<?
include("../connect.php");
session_start();
$nzakaz=time();
$iduser=$_SESSION['iduser'];
foreach($_SESSION['korzina'] as $ind=>$val)
{
$query1=mysql_query("SELECT `parts`.`articul`, `price`.`price` FROM `parts` LEFT JOIN `price` ON `parts`.`id`=`price`.`id` WHERE `parts`.`id`='$ind'") or die("Invalid query: " . mysql_error());
list($articul,$price)=@mysql_fetch_row($query1);

$query_ins=mysql_query("INSERT INTO `preorder` (`nzakaz`,`articul`,`price`,`quantity`,`iduser`,`data`) VALUES ('$nzakaz','$articul','$price','$val','$iduser',now())") or die("Invalid query: " . mysql_error());

}
$header='main.php';
header("refresh: 1; $header");
$_SESSION['korzina']="";
?>
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB