[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запись нескольких значений через запятую
Napst3r
Доброго времени суток. Имеется обработчик CSV файла, посредством которого на сайте обновляется информация. Столкнулся со следующей проблемой:

Имеется несколько строк в csv с одинаковым id, но отличающимися другими значениями:

id___id аксессуара
123__333
123__444
123__555

Если запускать обработчик, то товару с id сейчас записывается последнее значение - 555, а нужно все три через запятую.

С таблице бд у одного id, в данном случае, только одна строка и требуется товару с id 123 записать все три перечисленные значения id аксессуара через запятую, то есть вот так:

id___id аксессуара
123__333,444,555

Заранее благодарен за помощь.
Игорь_Vasinsky
<?php
//array(id,price)
$products = array(
array(1,'123.00'),
array(1,'33.00'),
array(2,'54.00'),
array(2,'12.00'),
array(4,'143.00')
);


$listProducts = array();

//Сбор
foreach($products as $k=>$v){
$listProducts[$v[0]][]=$v[1];
}

//вывод
foreach($listProducts as $k=>$v){
echo "id: ".$k." prices: ".implode(",",$v)."\r\n";
}


id: 1 prices: 123.00,33.00
id: 2 prices: 54.00,12.00
id: 4 prices: 143.00


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Valick
Цитата (Napst3r @ 30.09.2016 - 12:50)
а нужно все три через запятую

нет не нужно
это нарушение первого закона нормализации, вы не сможете работать с этой информацией на уровне СУРБД

_____________
Стимулятор ~yoomoney - 41001303250491
Игорь_Vasinsky
Цитата
это нарушение первого закона нормализации, вы не сможете работать с этой информацией на уровне СУРБД

угу.

а если класть на нормализацию - вон решение сверху.

но я бы не клал.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Napst3r
Цитата (Игорь_Vasinsky @ 30.09.2016 - 14:10)
Цитата
это нарушение первого закона нормализации, вы не сможете работать с этой информацией на уровне СУРБД

угу.

а если класть на нормализацию - вон решение сверху.

но я бы не клал.



Больше спасибо за ответ, позвольте еще один глупый вопрос -

Заменил значения переменными
//array(id,price)
$products = array(
array($item_144,$item[6]),
array($item_144,$item[6])

Но вместо того, чтобы объединить два разных значения через запятую, выводятся два первых результата, то есть не так:

id: 11218 prices: 6430856760,4234234324

а вот так

id: 11218 prices: 6430856760,6430856760
Игорь_Vasinsky
Цитата
array($item_144,$item[6]),
array($item_144,$item[6])

так у тебя в массиве 2 одинаковых массива )

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Napst3r
Цитата (Игорь_Vasinsky @ 30.09.2016 - 14:26)
Цитата
array($item_144,$item[6]),
array($item_144,$item[6])

так у тебя в массиве 2 одинаковых массива )

Может неправильно выразился. Вывожу результат обработки:
print_r($item);
echo 'sql='.$sql."<br><br>";


Вот часть:

sql=UPDATE item SET id_group=1672668245, id_phrase=6430856760, id_advert=2423201917 WHERE id=11218
sql=UPDATE item SET id_group=1672668245, id_phrase=6387850891, id_advert=2423201917 WHERE id=11218


Мне нужно чтобы в id_phrase записалось два отличающихся значения 6430856760 и 6387850891. Никак не соображу как это сделать.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.