Возникла проблема с массивами.
Подобная проблема обсуждалась здесь, но тут несколько иные задачи.
Существует код:
$mass = array(22,23,23,23,38,38);
$mas = array_unique($mass); //выбираем уникальные значения
$line = count($mas);// подсчитываем количество уникальных значений
$pr1='';
$products = '22,23,23,23,38,38';// id продуктов из базы
for($i=0;$i<$line;$i++)
{
$product=$mas[$i]; //выбираем элемент массива
$sql5="SELECT * FROM `product` WHERE `id` = '$product'"; //выбираем данные по этому элементу
$res5=mysql_query($sql5);
$info5=mysql_fetch_assoc($res5);
$count_pr=substr_count($products,$mas[$i]);
$count='- '.$count_pr;
$pr1 .=$info5["name"].$count; // указываем наименование товара и его количество
}
Исходя из этой темы понимаю, что запрос $sql5 составлен с ошибками, но если в прошлой теме нужно было только сделать выборку из базы с учетом всех уникальных элементов массива, то здесь нужно сделать выборку по каждому уникальному элементу массива($product), подсчитать его количество в $products и затем вывести наименование каждого уникального элемента и его количество.
Как правильно это сделать?
Спустя 1 час, 18 минут, 29 секунд (7.04.2012 - 13:56) nugle написал(а):
Если правильно понял, то вот
$arr = array();
$line = count($mas);// подсчитываем количество уникальных значений
$pr1='';
$products = '22,23,23,23,38,38';// id продуктов из базы
$mass = explode(',', $products);
$sql = '';
foreach($mass as $key => $val)
{
$arr[$val]++;
$sql = ($arr[$val] == 1) ? $sql.',"'.$val.'"' : $sql;
}
$sql = trim($sql, ',');
$query = mysql_query('SELECT * FROM `product` WHERE `id` in ('.$sql.')');
while($row = mysql_fetch_assoc($query))
echo $row['name'].' - '.$arr[$row['id']].'<br />';
Спустя 10 минут, 48 секунд (7.04.2012 - 14:07) Strannik написал(а):
nugle
не работает(
приведу полный свой код:
echo $pr1;
не работает(
приведу полный свой код:
while($info1=mysql_fetch_assoc($res1))
{
$mass = explode(",", $info1["products"]); //$info1["products"] =' 22,23,23,23,38,38';
$mas = array_unique($mass);
$line = count($mas);
$pr1='';
for($i=0;$i<$line;$i++)
{
$product=$mas[$i];
$sql5="SELECT * FROM `product` WHERE `id` = '$product'";
$res5=mysql_query($sql5);
$info5=mysql_fetch_assoc($res5);
$count_pr=substr_count($info1["products"],$mas[$i]);
$count='- '.$count_pr;
$pr1 .=$info5["name"].$count.'<b>|</b>';
}
echo $pr1;
Спустя 5 минут, 55 секунд (7.04.2012 - 14:13) m4a1fox написал(а):
Strannik
Цитата |
не работает( |
Ошибка какая?
Спустя 2 минуты, 13 секунд (7.04.2012 - 14:15) Strannik написал(а):
nugle
все получилось, спасибо
P.S.: неправильно указал массив...
P.P.S.: если не трудно поясни строчку
впервые столкнулся
все получилось, спасибо
P.S.: неправильно указал массив...
P.P.S.: если не трудно поясни строчку
$sql = ($arr[$val] == 1) ? $sql.',"'.$val.'"' : $sql;
впервые столкнулся
Спустя 2 минуты, 7 секунд (7.04.2012 - 14:17) m4a1fox написал(а):
Strannik
Тернарный оператор!
if($arr[$val] == 1)
$sql = $sql.',"'.$val.'"';
else
$sql = $sql;
Тернарный оператор!
$sql = ($arr[$val] == 1) ? $sql.',"'.$val.'"' : $sql;
if($arr[$val] == 1)
$sql = $sql.',"'.$val.'"';
else
$sql = $sql;
Спустя 3 минуты, 51 секунда (7.04.2012 - 14:21) Strannik написал(а):
m4a1fox
Спасибо за разъяснения.
Спасибо за разъяснения.