2015-01-25 4 views
0

У меня проблема с SQL-запросом в PHP. Я пробовал все, но он не хочет играть в мяч. Выходной сигнал следующий:Как связать связанные записи MySQL в PHP?

Pat48 
48 
47 
47 
46 
46 
Jana47 
Luc46 

Мне нужно, чтобы оно было в группах, например.

Pat48 
48 
48 
Jana47 
47 
47 
Luc46 
46 
46 

Код выглядит следующим образом:

<?php 
//Let's connect 
$conn = mysql_connect("localhost", "username", "password"); 
mysql_select_db("the database"); 
$get_albums = "SELECT album_id, album_title FROM albums ORDER BY album_id DESC"; 
$get_pictures = "SELECT picture_id, picture_title, picture_link, album FROM pictures WHERE album=album ORDER BY picture_id DESC LIMIT 1, 18446744073709551615"; 
$albums = mysql_query($album); 
$first_row = mysql_fetch_assoc($first); 
$picture_result = mysql_query($get_pictures); 

$album_result = mysql_query($get_albums); 
while($first_row = mysql_fetch_array($album_result)) 
{ 
    echo "<p>{$first_row['album_title']}{$first_row['album_id']} 
    </p>"; 
    { 
     while(list($picture_id, $picture_title, $picture_link, $album) =  mysql_fetch_row($picture_result)) 
     { 
     echo "<p>{$album}</p>"; 
     } 
    } 
} 
?> 

Это похоже на работу благодаря вам, ребята

$get_albums = "SELECT album_id, album_title FROM albums ORDER BY album_id DESC"; 
$album_result = mysql_query($get_albums); 

while($first_row = mysql_fetch_assoc($album_result)) 
{ 
    echo "<p>{$first_row['album_title']}</p>"; 

    $get_pictures = "SELECT picture_id, picture_title, picture_link, album FROM pictures WHERE album={$first_row['album_id']} ORDER BY album DESC LIMIT 1, 18446744073709551615"; 
    $picture_result = mysql_query($get_pictures); 

    while($picture_row = mysql_fetch_assoc ($picture_result)) 
    { 
     echo "<p>{$picture_row['picture_title']}</p>"; 
    } 
} 

Теперь у меня есть следующая проблема.

Я пытаюсь совместить это с colorbox, но теперь, когда я нажимаю на ссылку, он выводит все те же 4 первых страницы в каждом слайд-шоу. Код соблюден.

$get_albums = "SELECT album_id, album_title FROM albums ORDER BY album_id DESC"; 
$album_result = mysql_query($get_albums); 

while($first_row = mysql_fetch_assoc($album_result)) 
{ 
    $first = mysql_query("SELECT picture_id, picture_title, picture_link, album FROM pictures WHERE album={$first_row['album_id']} ORDER BY album DESC LIMIT 1"); 
    $first_picture = mysql_fetch_assoc($first); 

    echo "<p><a class='group1' title=\"{$first_picture['picture_title']}\" href={$first_picture['picture_link']}>{$first_row['album_title']}</a></p>"; 

    $get_pictures = "SELECT picture_id, picture_title, picture_link, album FROM pictures WHERE album={$first_row['album_id']} ORDER BY album DESC LIMIT 1, 18446744073709551615"; 
    $picture_result = mysql_query($get_pictures); 

    while($picture_row = mysql_fetch_assoc ($picture_result)) 
    { 
     echo "<p><a class='group1' title=\"{$picture_result['picture_title']}\"  href={$picture_result['picture_link']}>{$first_row['album_title']}</a></p>"; 
    } 
} 
?> 
+3

* "Мне это нужно, чтобы быть в группах" * => [** GROUP BY **] (http://dev.mysql.com/doc/refman/ 5.0/ru/group-by-functions.html) –

+0

Вы также можете выполнить группировку вручную, обнаружив изменения в 'album_id'. – halfer

+0

Это дает мне правильную головную боль, пробовал уже 2 дня –

ответ

0

Запрос на фотографии должен быть внутри цикла каждого альбома MySQL автоматически не объединить два запроса, вам нужно передать идентификатор альбома на второй запрос, используя значение PHP, возвращенное из первых но внутри цикла, где вы зацикливаете альбомы.

Что-то вроде этого:

<?php 
//Let's connect 
$conn = mysql_connect("localhost", "username", "password"); 
mysql_select_db("the database"); 
$get_albums = "SELECT album_id, album_title FROM albums ORDER BY album_id DESC"; 
$album_result = mysql_query($get_albums); 

while($first_row = mysql_fetch_assoc($album_result)){ 
    echo "<p>{$first_row['album_title']}{$first_row['album_id']}</p>"; 

    $get_pictures = "SELECT picture_id, picture_title, picture_link, album FROM pictures WHERE album_id={$first_row['album_id']} ORDER BY picture_id DESC"; 
    $picture_result = mysql_query($get_pictures); 

    while(list($picture_id, $picture_title, $picture_link, $album) =  mysql_fetch_row($picture_result)){ 
     echo "<p>{$picture_id}</p>"; 
    } 

} 
?> 
+0

No Joy, теперь он просто выводит альбомы –

+0

Кажется, что работает $ get_albums = "SELECT album_id, album_title FROM albums ORDER BY album_id DESC"; $ album_result = mysql_query ($ get_albums); в то время как ($ FIRST_ROW = mysql_fetch_assoc ($ album_result)) { эхо "

{$ FIRST_ROW [ 'ALBUM_TITLE']}

"; $ get_pictures = "SELECT picture_id, picture_title, picture_link, album FROM pictures WHERE album = {$ first_row ['album_id']} ORDER BY album DESC LIMIT 1, 18446744073709551615"; $ picture_result = mysql_query ($ get_pictures); в то время как ($ picture_row = mysql_fetch_assoc ($ picture_result)) { эхо "

{$ picture_row [ 'picture_title']}

"; } } –

Смежные вопросы