SQL und PHP und Kategorien einer Gallery

deintag85

Erfahrenes Mitglied
Hallo,
ich hab folgende Datenbanktabellen mir erstellt

Code:
-- 
-- Tabellenstruktur für Tabelle `fa_img`
-- 

CREATE TABLE `fa_img` (
  `id` int(11) NOT NULL auto_increment,
  `dateiname` varchar(255) NOT NULL,
  `bildbeschreibung` varchar(255) NOT NULL,
  `fotograf` varchar(255) NOT NULL,
  `datum` varchar(50) NOT NULL,
  `category` varchar(50) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;



-- 
-- Tabellenstruktur für Tabelle `fa_user`
-- 

CREATE TABLE `fa_user` (
  `id` int(11) NOT NULL auto_increment,
  `userfoto` varchar(255) NOT NULL,
  `username` varchar(255) NOT NULL,
  `geburtsjahr` varchar(255) NOT NULL,
  `beruf` varchar(255) NOT NULL,
  `beschreibung` varchar(50) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;



-- 
-- Tabellenstruktur für Tabelle `fa_kategorie`
-- 

CREATE TABLE `fa_kategorie` (
  `id` int(11) NOT NULL auto_increment,
  `category` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Ich code an einer Seite bei der Fotografen Bilder hochladen können und diese noch in Kategorien gliedern können. Wenn der besucher nun auf das Portfolio eines Fotografen klickt, sollen in erster Linie aber nicht "sämtliche" bilder angezeigt werden sondern die kategorien in denen der fotograf auch bilder drin hat.

Die Datei heisst also z.B. portfolio.php?id=1

id=1 steht für den fotografen mit der nummer 1.

nun will ich eine SQL Abfrage die mir alle Kategorien ausgibt bei denen der Fotograf Fotos drin hat. Wie stelle ich das an?

Code:
SELECT * FROM `fa_img` WHERE fotograf='$id' ORDER BY `id` DESC LIMIT $start, $eintraege_pro_seite
so hatte ich es vorher, aber dann spuckt er alle bilder aus. hmm, kann mir da einer weiterhelfen?

LG

P.S.: Ich hatte vergessen anzumerken. Die Kategorien sollen nicht als Text erscheinen, also dass sie als klickbare Links aufgelistet werden,
sondern dass aus jeder Kategorie ein Bild angezeigt wird auf das man klicken kann worauf man dann auf die kategory letztendlich stösst. hmm
 
Zuletzt bearbeitet:
Heute ist Tag der skurrilen Fehler.

Damit er dir nur die Bilder zeigt, lass dir vielleicht nur die Dateinamen ausgeben. Du kannst die Felder frei wählen, die Ausgegeben werden sollen:

Code:
SELECT `dateiname` FROM `fa_img` WHERE `fotograf` = '$id' ORDER BY `id` DESC LIMIT $start, $eintraege_pro_seite

Den Query an sich finde ich richtig, damit nur Bilder von fotograf = id ausgegeben werden. Natürlich musst du register_globals (glaube ich) aktiviert haben in PHP.
Die ist aber auch eine Sicherheitslücke also verwende lieber $_GET["id"] wenn die id über die Adresszeile geliefert wird.
 
Wie ich Bilder anzeige stellt ja nicht das Problem dar, sondern wie ich folgendes mache :

- portfolio?id=1
- id=1 ist der fotograf nummer 1 aus der tabelle "fa_user"

nun soll eine art auflistung der kategorien erscheinen,
er soll also schauen fotograf hat ID 1 ok,
welche bilder in der tabelle haben die username-id ="1"
und von diesen bilder möchte ich die kategorien aufgelistet haben

die kategorie soll dann aber nicht als text ausgegeben werden in etwa

<a href ="link">$categoryname</a>

sondern als ein random bild der kategorie JEDOCH sollte es von dem fotografen sein

<a href="link zur kategorie mit NUR den bildern des fotografen"><img src="randombild der kategorie"></a>

ich hoffe das war verständlicher?

LG
 
Hallo!

Nun, um die Bilder auch nach Kategorien auswählen zu können, musst Du diesen erstmal eine Kategorie zuweisen.
Davon sehe ich in der Tabelle "fa_img" aber nichts. ;)

Da Du ja eine Tabelle für die Kategorien hast, sollte es langen wenn Du den Bildern nur die jeweilige Kategorien-ID zuweist.

Gruss Dr Dau
 
Sorry, das war ein Fehler meiner Seits. Ich hab die SQL-Datei hier gepostet, hab aber die Tabelle manuell nachträglich verändert.

Ja klar, bei "fa_img" ist noch ein feld "category" in der die category drin steht. ^^
 
Dann versuche es mal mit:
SQL:
SELECT * FROM `fa_img` WHERE `fotograf`='$id' AND `category`='$cat' ORDER BY `id` DESC LIMIT $start, $eintraege_pro_seite
$cat muss natürlich die gewünschte Kategorie enthalten. ;)
 
ich versteh nicht wo das problem liegt meine frage zu beantworten. alle antworten sind schön und gut, aber wie man $_GET benutzt und speziell auf etwas damit in einer sql-tabelle zugreift ist mir auch klar.

meine frage war aber was völlig anderes.

jemand öffnet das portfolio eines fotografen mit der ID=1
es wird also eine sql-abfrage erstellt, welche fotos vom fotografen mit der ID=1 existieren.

anstatt mir aber sämtliche bilder sofort auszugeben, soll er mir nur die kategorien einmalig ausgeben. ich kann nicht sagen "where fotograf =1 AND kategory = $variable" weil ich die kategory zu dem zeitpunkt nicht weiss! die will ich doch erfahren^^

jetzt verständlicher? :-(
 
Ich würde zwar die DB-Struktur und die Felder anders machen, aber versuche es mal mit diesem Befehl:
PHP:
$sql = mysql_query("SELECT a.* FROM fa_kategorie a LEFT JOIN fa_img b ON a.category='b.category' WHERE b.fotograf='$id'");
 
Zurück