Uschi Renziehausen: Problem mit Link-Datenbank

Beitrag lesen

Moin Constantin,

bei deinem Problem führt mehr als ein Weg nach Rom, einer ist dieser:

mach 3 tabellen:

Tabelle 1 ist für die Rubriken da:
tb_rubrik
id = autoincrement
rubrik = VARCHAR 32 oder so für den Titel der Rubrik
reihenfolge = INT 3 (da kannst du die Reihenfolge festlegen, in der die Rubriken anzeigt werden können).

Tabelle 2 speichert die Links
tb_link
id = autoincrement
url = die URL halt
label = Verweistext für die URL

Tabelle 3 verknüpft die Kategorien mit den Links im Verhältnis 1 zu n
tb_assoc
rubrik_id = Fremdschlüssel aus tb_rubrik
link_id = Fremdschlüssel aus tb_link

Nehmen wir an, in tb_rubrik hast du die folgenden drei Datensätze:

id     rubrik              reihenfolge
1      Foren               1
2      Ersatzteilhändler   3
3      Private Seiten      2

In tb_link hast du einen Datensatz für die Seite von Claire Grube, die du sowohl den privaten Seiten als auch den Ersatzteilhändlern zuordnen möchtest.
Außerdem gibt es noch die Seite von Axel Schweiß, die aber rein privat ist.

id    url                          label
34    http://www.claire-grube.de   Claire Grubes Kloschüsselseite
147   http://www.axel-schweiss.de  Axel Schweiß - Die Seite über Deos

In  tb_assoc steht dann

rubrik_id  url_id
2          34
3          34
3          147

Wenn du jetzt die privaten Seiten anzeigen lassen möchtest:

  1. id von private Seiten besorgen:

$q = "SELECT * FROM tb_rubrik WHERE label='Private Seiten'";
$r = mysql_query($q);
$row = mysql_fetch_assoc($r);
$rubrik_id = $row['id'];

In $rubrik_id steht jetzt die 3. Mit der ziehst du jetzt los und sammelst deine zugehörigen Links. Das SQL-Statement dazu müßte ich erstmal testen, auf Anhieb und blind kriege ich das nie hin. Ungefähr geht es glaube ich so:

SELECT tb_assoc.url_id, tb_assoc.rubrik_id, tb_link.url, tb_link.label FROM tb_assoc, tb_url WHERE tb_assoc.rubrik_id='$rubrik_id' AND tb_url.id='$tb_assoc.url_id':

Liebe Grüße, Uschi