mit Array mehere SELECT Abfragen

thomsonz

Mitglied
Hallo ich versuche mittels eines Arrays eine variable SQL Abfrage zu erstellen. Um aber die ermitteln Daten zu verwenden benötige ich eine eindeutige query( da diese mehrmals vorkommt)
Habt ihr einen Vorschlage wie ich das hinbekommen kann?
PHP:
$kategorie = array("Architektur/Landschaft", "Geschichte/Religion", "Menschen/Alltag", "Kunst/Kultur");
        $thisgalerie = '';
        foreach ($kategorie as $begriff)
        {
        $query = "SELECT * FROM `bilder` WHERE `stadt_id` = '".$thisstadt['id']."' AND `schlagwort` = '".$begriff."' ORDER BY id ASC";
        $resultbild = mysql_query($query) or die(mysql_error());
        if (mysql_num_rows($resultbild) != "0")
        {
        $thisgalerie .= mysql_num_rows($resultbild).' Bilder in der Kategorie '.$begriff.' gefunden';
        $thisgalerie .= '<table><tr><th>Bildergalerie '.$thisstadt['name'].'</th></tr>';
        $thisgalerie .= '<tr>';
        while ($bild = mysql_fetch_assoc($resultbild))
            {
synonym wäre:
PHP:
//Bilder der Kategorie Architektur/Landschaft ermitteln
$query1 = "SELECT * FROM `bilder` WHERE `stadt_id` = '".$thisstadt['id']."' AND `schlagwort` = 'Architektur/Landschaft' ORDER BY id ASC";
$resultbild1 = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($resultbild1) != "0") {
echo mysql_num_rows($resultbild1).' Bilder in Architektur/Landschaft gefunden';
}

//Bilder der Kategorie Geschichte/Religion ermitteln
$query2 = "SELECT * FROM `bilder` WHERE `stadt_id` = '".$thisstadt['id']."' AND `schlagwort` = 'Geschichte/Religion' ORDER BY id ASC";
$resultbild2 = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($resultbild2) != "0") {
echo mysql_num_rows($resultbild2).' Bilder in Geschichte/Religion gefunden';
}
//Bilder der Kategorie Menschen/Alltag ermitteln
$query3 = "SELECT * FROM `bilder` WHERE `stadt_id` = '".$thisstadt['id']."' AND `schlagwort` = 'Menschen/Alltag' ORDER BY id ASC";
$resultbild3 = mysql_query($query) or die(mysql_error());
//Bilder der Kategorie Kunst/Kultur ermitteln
$query4 = "SELECT * FROM `bilder` WHERE `stadt_id` = '".$thisstadt['id']."' AND `schlagwort` = 'Kunst/Kultur' ORDER BY id ASC";
$resultbild4 = mysql_query($query) or die(mysql_error());
 
Mhh so richtig verständlich ist dein Problem nicht, aber ich vermute du willst eine Abfrage erstellen, mit der du alle Kategorie Abfragen erschlagen kannst.

Hast du die Kategorien in deine DB gespeichert und den Bilder zugeordnet? Wenn ja wie?

Dann könntest du die Kategorie dynamisch deinem Array übergeben, und wenn der Nutzer etwas ausgewählt hat, übergibst du der SQL Anfrage einfach die ID der Kategorie.

PHP:
$query1 = "SELECT * FROM `bilder` WHERE `stadt_id` = '".$thisstadt['id']."' AND `schlagwort` = '".$ID."' ORDER BY id ASC";

Im Enddefekt t es genauso wie mit deiner Stadt!

Gruss
Evo
 
Hallo,

geht da nich vielleicht:

PHP:
$query = "SELECT * FROM `bilder` WHERE `stadt_id` like '".$thisstadt['id']."' OR `bla` = 'blabla' OR `bla` = 'blabla' OR `bla` = 'blabla' ORDER BY id ASC";

oder mit %suchstring%.

Nur mal so als Ansatz.

Gruss Olli
 
Zuletzt bearbeitet:
Ich habe ehrlich gesagt keinen Schimmer, was du umsetzen möchtest.
Wenn ich mir deinen Code anschaue, sehe ich zwei verschiedene Ziele.

Der erste gibt die einzelnen Bilder der derzeitigen Kategorie aus, sprich die Detailseite einer Kategorie.
Der zweite die Anzahl der Bilder pro Kategorie, sprich die Auflistung aller existierenden Kategorien.

Wie man diese beiden Dinge vereinen will ist mir schleiferhaft, da du sicher nicht alle Kategorien und deren Bilder auf einer Seite ausgeben willst?
 
Hi,

Hallo,

geht da nich vielleicht:

PHP:
$query = "SELECT * FROM `bilder` WHERE `stadt_id` like '".$thisstadt['id']."' OR `bla` = 'blabla' OR `bla` = 'blabla' OR `bla` = 'blabla' ORDER BY id ASC";

kürzer wäre die IN()-Syntax. Wenn man dann noch nach der Spalte sortiert, braucht man nur noch einen einfachen Gruppenwechsel in der Schleife und einen Zähler für die Ausgabe der jeweiligen Treffer.

PHP:
$query = "SELECT * FROM `bilder` WHERE `stadt_id` like '".$thisstadt['id']."' OR `bla` IN('blabla', 'blabla','blabla') ORDER BY `bla` ASC, id ASC";

LG
 
erstmal vielen Dank für die vielen Antworten ich war leider gestern nicht mehr in der Lage zu antworten. Aber die letzte Variante entspricht genau das was ich suche. um die Ergebnisse nacheinander auszugeben, sie dabei nach dem schlagwort zu sortieren und jeweils den Kategorienamen einmal auszugeben.

Ihr seit spitze
Vielen vielen Dank
 
Zurück