Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Объеденить повторяющиеся данные

Сообщения:  [1-10] 

 
 автор: 5wordf1sh   (13.10.2006 в 13:25)   письмо автору
 
   для: Trianon   (13.10.2006 в 09:17)
 

Спасибо! Все заработало как и хотелось :-)

   
 
 автор: Trianon   (13.10.2006 в 09:17)   письмо автору
 
   для: 5wordf1sh   (13.10.2006 в 03:27)
 


<?php 
    $QuerySongs 
"SELECT * FROM tablename WHERE album_id='111' ORDER BY singer"
    
$singer ''$i 0;
    
$result mysql_query($QuerySongs) or die("<b>Query failed:</b> " mysql_error()); 
    if (
$result) while ($row mysql_fetch_assoc($result)) 
    { 
        if(
$singer != $row['singer'])
        {
            
$singer $row['singer'];
            echo 
"<br/>Исполнитель: <b>$singer</b><br/><br/>";
        }
        echo ++
$i ". " $row['song_title']. "<br>"); 
    } 
?> 

   
 
 автор: Тиль   (13.10.2006 в 06:24)   письмо автору
 
   для: 5wordf1sh   (13.10.2006 в 03:45)
 

А ешли создать буферную таблицу, первая запись подет "Мадонна", а песни засунешь вторым инсертом, и потом импортнешь куда надо.Просто на Маданну и песни еёшние ключ какой нибудь поставь типа ID.

   
 
 автор: Тиль   (13.10.2006 в 06:24)   письмо автору
 
   для: 5wordf1sh   (13.10.2006 в 03:45)
 

А ешли создать буферную таблицу, первая запись подет "Мадонна", а песни засунешь вторым инсертом, и потом импортнешь куда надо.Просто на Маданну и песни еёшние ключ какой нибудь поставь типа ID.

   
 
 автор: Тиль   (13.10.2006 в 06:23)   письмо автору
 
   для: 5wordf1sh   (13.10.2006 в 03:45)
 

А ешли создать буферную таблицу, первая запись подет "Мадонна", а песни засунешь вторым инсертом, и потом импортнешь куда надо.Просто на Маданну и песни еёшние ключ какой нибудь поставь типа ID.

   
 
 автор: 5wordf1sh   (13.10.2006 в 05:15)   письмо автору
 
   для: slonik   (13.10.2006 в 03:57)
 

заметил интересную особенность:

<?php
    $result 
mysql_query($QuerySongs) or die("<b>Query failed:</b> " mysql_error());
    if (
$result) while ($i mysql_fetch_row($result)) {
        
//print ($i[0] . "|" . $i[1] . "<br>");
        
$var1 "<i>$i[0]</i><br />"
        
$slonik.= "| $i[1] |"
    }
    echo 
$var1;
    echo 
$slonik?>

выводит

Notice: Undefined variable: slonik in E:\www\test\sugar2.php on line 73
Madonna
| The Beast Within |
| Vogue |
| Nobody Knows Me |
| American Life |

то есть когда переменная назначается $var = blabla; выдается один раз (как и надо), когда $var. = blabla; выводятся все значения из цикла, только почему то ругается на Undefined variable (в примере выше ругалось на строчку $slonik.= "| $i[1] |"; )

   
 
 автор: slonik   (13.10.2006 в 03:57)   письмо автору
 
   для: 5wordf1sh   (13.10.2006 в 03:45)
 

ну так и выведи мадонну один раз, а все треки пусти, как и сейчас.


<table>
<?php 
$QuerySongs 
"SELECT * FROM tablename WHERE album_id='111';"
$result mysql_query($QuerySongs) or die("<b>Query failed:</b> " mysql_error()); 
    if (
$result) while ($i mysql_fetch_row($result)) 

$slonik.= "<tr><td>Исполнитель: $i[0]</td>";
$slonik.= "<td>$i[1]</td>";
$slonik.= "</tr>"
}
echo 
$slonik;
echo 
"</table>";
?> 


Код не проверял! Мог анлепить ошибок, атк что извиняй. Пойду спать!

   
 
 автор: 5wordf1sh   (13.10.2006 в 03:45)   письмо автору
 
   для: slonik   (13.10.2006 в 03:37)
 

Должно получиться примерно такое:

Madonna (вывелось один раз)
после чего выводятся песни

The Beast Within
Vogue

Сейчас у меня получается все так:

Madonna|The Beast Within
Madonna|Vogue
Madonna|Nobody Knows Me
Madonna|American Life
Madonna|Hollywood (Remix)

можно конечно реализовать двумя запросами типа
SELECT singer FROM tablename WHERE album_id='1' LIMIT 1;
SELECT song_title FROM tablename WHERE album_id='1' ;

просто интересно можно ли все это реализовать средствами SQL запросов, хотелось бы научиться писать сложные запросы чтобы лишний раз не плодить php код

   
 
 автор: slonik   (13.10.2006 в 03:37)   письмо автору
 
   для: 5wordf1sh   (13.10.2006 в 03:27)
 

Не понятно какой вид ты хочешь сделать? Попробуй нарисовать, что тебе нужно. Где этот артист должен быть? А где названия песен? Может есть пример на каком-нибудь сайте, тогда давай ссылку.

   
 
 автор: 5wordf1sh   (13.10.2006 в 03:27)   письмо автору
 
 

Есть таблица со следующими столбцами
Имя исполнителя | Название песни

к примеру выбираю данные запросом SELECT * FROM tablename WHERE album_id='111';
хочу вывести это через php

<?php
$QuerySongs 
"SELECT * FROM tablename WHERE album_id='111';";
$result mysql_query($QuerySongs) or die("<b>Query failed:</b> " mysql_error());
    if (
$result) while ($i mysql_fetch_row($result)) {
        print (
$i[0] . "|" $i[1] . "<br>");
    }
?>

в этом случае выводятся все песни исполнителя и выводится имя исполнителя причем столько раз сколько треков в альбоме. Если вывести $i[0] за пределы while то ничего не выводится... Подскажите пожалуйста как сделать так чтобы имя исполнителя вывести всего один раз, но при этом вывести все треки? Можно ли каким то образом оптимизировать SQL запрос или эту задача реализуется средствами php? Если это делается с помощью php пните в какую сторону смотреть :)

   

Сообщения:  [1-10] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования