2012-04-02 21 views
0

Ich habe 3 Kategorie Seiten für eine Fotografie-Website, die dynamisch aus einer MySQL-Datenbank geladen werden, und das funktioniert gut, aber ich möchte Unterkategorien oder "Alben" hinzufügen jede Kategorie. Dies muss auch dynamisch funktionieren, da die Website für jemanden ist, der technisch nicht interessiert ist.Erstellen dynamischer Kategorien und Unterkategorien mit mysql Abfragen

Also ich denke, ich habe eine Idee, nur nicht ganz sicher, wie es auszuführen. In diesem ersten Codeabschnitt wird beschrieben, wie die Bilder gerade geladen werden (abzüglich einer Menge HTML-Gumpf in $ dynamicList, die zu diesem Zeitpunkt nicht benötigt wird). Im zweiten Block von Code, den ich habe es bearbeitet der Lage sein, Bilder in separate ‚Alben‘ zu laden. Wie auch immer, es wird jedes Bild in jedes Album laden.

Gibt es eine Möglichkeit, "GROUP BY" zu verwenden, um dynamicLists zu laden, die nur Bilder enthalten, die denselben Wert für die Zeile "album_name" in der Datenbank haben?

Entschuldigt, wenn ich mich nicht sehr gut erklärt haben. Jede Hilfe wird sehr geschätzt.

<?php 
include "connect_to_mysql.php"; 
$dynamicList = ""; 
$sql = mysql_query("SELECT * FROM images WHERE category = 'People' ORDER BY date_added DESC"); 
    while($row = mysql_fetch_array($sql)){ 
     $image = $row["image_name"]; 
     $src_img=imagecreatefromjpeg("photos/thumbs/thumb_".$image); 
     $date_added = strftime("%b %d, %Y", strtotime($row["date_added"])); 
     $dynamicList .= '<img class="item" src="photos/thumbs/thumb_'.$image.'"/>'; 
    } 
mysql_close(); 
?> 
<div id="image_gallery"> 
<?php echo $dynamicList; ?> 
</div> 





<?php 
include "connect_to_mysql.php"; 
$dynamicList = ""; 
$sql = mysql_query("SELECT * FROM images WHERE category = 'People' ORDER BY date_added DESC"); 
    while($row = mysql_fetch_array($sql)){ 
     $image = $row["image_name"]; 
     $src_img=imagecreatefromjpeg("photos/thumbs/thumb_".$image); 
     $date_added = strftime("%b %d, %Y", strtotime($row["date_added"])); 
     $dynamicList .= '<img class="item" src="photos/thumbs/thumb_'.$image.'"/>'; 

     $album = $row["album_name"]; 
     $albumList .= '<div class="album"><div class="album_title"><h2>'.$album.'</h2></div>'.$dynamicList.'</div>'; 
    } 
mysql_close(); 
?> 
<div id="image_gallery"> 
<?php echo $albumList; ?> 
</div> 

Antwort

0

Etwas wie das? (Ungetestet)

<?php 
include "connect_to_mysql.php"; 
$sql = mysql_query("SELECT * FROM images WHERE category = 'People' ORDER BY date_added DESC"); 
$albums = array(); 
    while($row = mysql_fetch_array($sql)){ 
     $image = $row["image_name"]; 
     $src_img=imagecreatefromjpeg("photos/thumbs/thumb_".$image); 
     $date_added = strftime("%b %d, %Y", strtotime($row["date_added"])); 
     $listElement = '<img class="item" src="photos/thumbs/thumb_'.$image.'"/>'; 

     $albums["album_name"][]=$listElement; 
    } 
    $anames = array_keys($albums); 
    $albumList = ""; 
    foreach($anames as $albumName){ 
      $albumList .= '<div class="album"><div class="album_title"><h2>'.$albumName.'</h2></div>'.implode($albums[$albumName]).'</div>'; 
    }    
mysql_close(); 
?> 
<div id="image_gallery"> 
<?php echo $albumList; ?> 
</div> 

Ich glaube nicht eine GROUP BY-Klausel Sie tatsächlich hilft, wenn Sie eine andere Lösung implementieren können, wenn man sie in Album Reihenfolge kannten, waren - man müsste nur überprüfen, wenn es Übergänge das nächste Album ... nun, da ich darüber nachdenke, ist das vielleicht etwas einfacher ...

Verwandte Themen