tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
229
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von suntrop
    suntrop suntrop ist offline Mitglied Brokat
    Registriert seit
    Dec 2001
    Ort
    Köln
    Beiträge
    452
    Hi.

    Ich möchte ein Skript schreiben, mit dem ich den Überblick über alle meine Websites behalte kann. Statt einer Kategorisierung möchte ich lieber handelsübliche Tags wie bei delicious.com benutzen (eine Tag-Cloud brauche ich nicht).

    Ich habe drei Tabellen, domains, tags und tags_domains. (Idee von hier) Und hier komme ich schon nicht weiter.
    Wie ordne ich Tags den Domains zu? Was wann eine Domain mehrere Tags haben soll? Wie kann ich jetzt weiter machen?
    Freue mich über jeden Ratschlag und jede Hilfe!

    Grüße
    suntrop

    P.S.
    Fremde Skripte habe ich auch schon gesucht, aber nichts passendes gefunden. Bei Blogs wie Word-Press und Serendipity finde ich im Quellcode nicht die entsprechenden Stellen.
     

  2. #2
    Avatar von EvilO
    EvilO EvilO ist offline Mitglied Gold
    Registriert seit
    Feb 2004
    Ort
    Wuppertal (NRW)
    Beiträge
    172
    Hi, also im Prinzip steht ja schon fast alles dazu im von dir verlinkten Thread im letzten Post drin. Du erstellst also wie dort vorgeschlagen deine 3 Tabellen, trägst zunächst in die 1. deine Websites ein und danach in die 2. die Tags, die du verwenden willst. Die beiden Tabellen müssen jeweils ein PRIMARY KEY oder zumindestens ein UNIQUE INDEX Feld enthalten, damit du jede Zeile in der Tabelle eindeutig identifizieren kannst. Meistens verwendet man dazu einfach eine Spalte namens id, vom Typ INT UNSIGNED NOT NULL auto_increment, die man dann als Primärschlüssel verwendet.

    Die Zuordnung der Tags zu den Websites erfolgt dann durch die 3. Tabelle, diese braucht im Prinzip nur 2 Spalten, eine für die id der Website und eine für die id des Tags. Dann musst du eben die id der Website kennen, und die ids der tags, die du zuordnen willst, und machst für jedes Tag einen Eintrag in die Tabelle. Hier mal ein kleines Beispiel:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
    Pages:
    +----+------------+
    | id | name       |
    +----+------------+
    |  1 | Homepage 1 |
    |  2 | Homepage 2 |
    +----+------------+
     
    Tags:
    +----+-------+
    | id | tag   |
    +----+-------+ 
    |  7 | Hallo |
    |  8 | Welt  |
    |  9 | Test  |
    +----+-------+
     
    Zuordnung:
    +---------+--------+
    | page_id | tag_id |
    +---------+--------+
    |       1 |      7 |
    |       1 |      8 |
    |       2 |      7 |
    |       2 |      9 |
    +---------+--------+
    Das wären z.B. Tabelleninhalte, die "Homepage 1" die Tags "Hallo" und "Welt", sowie "Homepage 2" die Tags "Hallo" und "Test" zuordnet.

    Ich hoffe das verdeutlicht das Prinzip nochmal ein wenig.
    Geändert von EvilO (02.11.08 um 17:26 Uhr)
     
    "Die Deutsche Rechtschreibung ist Freeware, dass heisst jeder kann sie benutzen wann er will, ohne dafür zu zahlen. Sie ist aber nicht Open Source, also darf sie ohne Zustimmung der Entwickler nicht verändert und weiterverbreitet werden."

  3. #3
    Avatar von suntrop
    suntrop suntrop ist offline Mitglied Brokat
    Registriert seit
    Dec 2001
    Ort
    Köln
    Beiträge
    452
    Ich hoffe das verdeutlicht das Prinzip nochmal ein wenig.
    Das tut es! Vielen Dank für deine Antwort. Ich glaube damit komme ich schon ein ganzes Stück weiter. Ich werde es morgen testen.

    Eine Sache verstehe ich jedoch noch nicht ganz. Wie lese ich die Tabelle "Zuordnung" aus?
    Ich habe bisher immer nur nach einer Übereinstimmung in einer Tabelle gesucht und das Ergebnis ausgegeben.
    Aber jetzt muss ich ja … darüber nachzudenken macht mir knoten in den Kopf. Sorry, komme einfach nicht drauf. Vielleicht nochmal ein kurzer Tipp dazu?
     

  4. #4
    Avatar von EvilO
    EvilO EvilO ist offline Mitglied Gold
    Registriert seit
    Feb 2004
    Ort
    Wuppertal (NRW)
    Beiträge
    172
    Wasman dafür braucht sind sogenannte JOINS, diese bieten die Möglichkeit Tabellen zu verknüpfen. Was genau du in SQL abfragen musst ist natürlich davon abhängig, was du machen willst.

    Wenn du zum Beispiel alle Websites suchst, die das Tag "Hallo" haben, dann geht es mit folgender SQL-Abfrage
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    SELECT
      pages.*
    FROM
      pages,
      zuordnung,
      tags
    WHERE
      pages.id = zuordnung.page_id
    AND
      zuordnung.tag_id = tags.id
    AND
      tags.tag = 'Hallo'
    Geändert von EvilO (02.11.08 um 21:19 Uhr)
     
    "Die Deutsche Rechtschreibung ist Freeware, dass heisst jeder kann sie benutzen wann er will, ohne dafür zu zahlen. Sie ist aber nicht Open Source, also darf sie ohne Zustimmung der Entwickler nicht verändert und weiterverbreitet werden."

  5. #5
    Avatar von suntrop
    suntrop suntrop ist offline Mitglied Brokat
    Registriert seit
    Dec 2001
    Ort
    Köln
    Beiträge
    452
    Hallo EvilO.

    Großen Dank für deine Hilfe! Das mit den JOINS habe ich mal gelesen, hatte aber bislang nicht das Vergnügen sie zu nutzen
    Jetzt kann ich es testen.


    Grüße
    suntrop
     

  6. #6
    Avatar von suntrop
    suntrop suntrop ist offline Mitglied Brokat
    Registriert seit
    Dec 2001
    Ort
    Köln
    Beiträge
    452
    Jetzt hängt mein Programm an anderer Stelle.

    Ich möchte nebst Domain, alle Tags die der Domain zugeordnet sind ausgeben. Das wird die Übersichtsseite mit allen Domains.

    Dazu habe ich verschiedene SQL-Abfragen getestet und bin jetzt hier angelangt:
    PHP-Code:
    $sql 'SELECT
                domains.*
            FROM
                domains,
                tags_domains,
                tags
            WHERE
                domains.id = tags_domains.domain_id
            AND
                tags_domains.tag_id = tags.id
            GROUP BY
                domain
            ORDER BY
                id'

    So bekomme ich alle Domains, aber ich erhalte nicht die Tags, die den Domains zugeordnet sind.
    Ich kann mir nicht mal ins deutsche Übersetzt die SQL-Abfrage zusammenbasteln.

    Bislang habe ich es so gemacht, dass ich in einer ersten Abfrage alle Domains auswähle, diese in einer while-Schleife ausgebe und in dieser Schleife bei jedem Durchgang eine weitere SQL-Abfrage nach den Tags mache.

    Aber das muss doch auch effizienter gehen, oder nicht?
     

  7. #7
    Avatar von suntrop
    suntrop suntrop ist offline Mitglied Brokat
    Registriert seit
    Dec 2001
    Ort
    Köln
    Beiträge
    452
    Ich glaube ich bin einen Schritt weiter gekommen, aber noch funktioniert es nicht ganz.
    Ich habe jetzt mit einen UNION SELECT noch die Tags ausgewählt, aber jetzt erhalte ich (glaube ich) zu viele Datensätze bzw. sind die recht durcheinander.

    PHP-Code:
    $sql '
        SELECT
            td.id id_td,
            td.domain_id domain_id,
            td.tag_id tag_id,
            d.id id_d,
            d.domain domain
        FROM
            tags_domains td,
            domains d
        UNION
            SELECT
                td.id id_td2,
                td.domain_id domain_id2,
                td.tag_id tag_id2,
                t.id id_t,
                t.tag tag
            FROM
                tags_domains td,
                tags t
            WHERE
                t.id = td.tag_id
            GROUP BY
                td.domain_id'

     

Ähnliche Themen

  1. JavaScript-basierte Bildergalerie
    Von DerTrin im Forum Javascript & Ajax
    Antworten: 6
    Letzter Beitrag: 19.02.10, 10:45
  2. Javascript-basierte Bildergalerie
    Von Ranger 1281 im Forum CSS
    Antworten: 4
    Letzter Beitrag: 11.02.10, 21:08
  3. JavaScript-basierte Bildergalerie
    Von -GS-Master im Forum Javascript & Ajax
    Antworten: 16
    Letzter Beitrag: 04.05.07, 23:38
  4. XML-basierte Tabellen in InDesign
    Von deudok im Forum Desktop Publishing (DTP)
    Antworten: 2
    Letzter Beitrag: 02.02.05, 16:42
  5. S: Tutorial für DB basierte Hierarchie
    Von bumbam im Forum PHP
    Antworten: 2
    Letzter Beitrag: 13.11.01, 10:50