Здравствуйте,не могли бы подсказать,у меня есть БД,и есть таблица,со следующим содержанием: Как сделать,чтобы выводился сгруппированный запрос,и в результате на странице получилось вот так? Очень буду благодарен за подсказку.
Код (Text): $res=mysqli_query('select vendor, item from table1'); while ($row = mysqli_fetch_assoc($res)) { $out[$row['vendor']][] = $row['item']; } foreach ($out as $key => &$arr) $arr = implode(', ', $arr);
Код (Text): SELECT t.vendor, GROUP_CONCAT(DISTINCT t.item ORDER BY t.item DESC SEPARATOR ', ') AS items FROM `table1` t GROUP BY t.vendor;
Добавлено спустя 2 минуты 49 секунд: Содержимое кода: Код (Text): <?php // данные доступа к базе данных ................................................ //Соединяемся с базой данных. $link = mysql_connect($mysql_host, $mysql_user, $mysql_password) or die("Could not connect : " . mysql_error()); //mysql_query("SET NAMES 'utf8';"); mysql_query("SET NAMES 'cp1251';"); //mysql_query("SET NAMES 'utf8';"); mysql_select_db($my_database) or die("Could not select database"); $res=mysql_query('select nazvanie, id_fio from plat'); while ($row = mysql_query_fetch_assoc($res)) { $out[$row['nazvanie']][] = $row['id_fio']; } foreach ($out as $key => &$arr) $arr = implode(', ', $arr); //implode(',', $plats)."-".implode(',', $nazv)."-".implode(',', $names); //Запускаем команду $result = mysql_query($query) or die("Query failed : " . mysql_error()); mysql_close($link); ?>
прочитать документацию по функции mysql_query() чтобы понять почему сервер возвращает ошибку вместо совершения запроса.
нет нет,с совершением вашего sql запроса ошибки php не выдает,просто пустая страница,как теперь вывести результат в echo?
не хочет выводить правильно(( Код (Text): $query="SELECT t.nazvanie, GROUP_CONCAT(DISTINCT t.id_fio ORDER BY t.id_fio DESC SEPARATOR ', ') AS items FROM `plat` t GROUP BY t.nazvanie"; $result = mysql_query($query); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { printf("ID: %s Имя: %s", $row["nazvanie"], $row["id_fio"]); } В итоге такое получилось: А должно быть хотя бы так:
Сделайте вывод var_dump($row); в теле цикла чтобы понять как выглядят данные в этом массиве, если это вам не понятно из результата выполнения запроса в phpmyadmin, если конечно запрос из php у вас выполняется. Добавлено спустя 50 секунд: printf("ID: %s Имя: %s", $row["nazvanie"], $row["id_fio"]); Также внимательно посмотрите на сам запрос, если не наступило прозрение.
да,я вижу что в списке массива то что надо появилось. Добавлено спустя 13 минут 55 секунд: попробовал дописать,но результат не тот(( Код (Text): $query="SELECT t.nazvanie, GROUP_CONCAT(DISTINCT t.id_fio ORDER BY t.id_fio DESC SEPARATOR ', ') AS items FROM `plat` t GROUP BY t.nazvanie"; $result = mysql_query($query); $names = array(); $nazv = array(); while ($reslevel = mysql_fetch_array($result, MYSQL_ASSOC)) { $names[] = $reslevel['nazvanie']; $nazv[] = $reslevel['id_fio']; } $length = count($names); for ($i=0;$i<$length;$i++){ echo '<pre>'; echo $names[$i]."".$nazv[$i]; echo '</pre>'; }
Бросайте заниматься программированием или не отступайте и включайте голову. Код (PHP): while ($reslevel = mysql_fetch_array($result, MYSQL_ASSOC)) { // если нужны итемы по отдельности, делаем для $reslevel['items'] explode() по маркеру ', ' print $reslevel['nazvanie'] . ':' . $reslevel['items']; }