[SQL] Problem bei Menüdarstellung aus DB

Dieses Thema im Forum "Webentwicklung" wurde erstellt von ROKE, 18. Oktober 2012 .

  1. 18. Oktober 2012
    Problem bei Menüdarstellung aus DB

    Servus RR,

    ich bin momentan dabei ein dynamisches menü mit perl/html zu schreiben. Nur glaub' ich, dass da etwas mit dem sql code tierisch falsch läuft.

    zunächst erst etwas zum code:

    benutze für perl das Template Toolkit und template DBI um eine html seite als layout zu verwenden. Das Menü hat lediglich 2 Ebenen; die erste Ebene soll alle Projekte darstellen, die in der Datenbank vorhanden sind (soweit läuft auch alles problemlos). Mein Problem tritt aber bei der nächsten Ebene auf. Dort sollen alle zu dem Projekt zugehörigen Teilprojekte angezeigt werden.

    Code:
    <div class="ebene1">
    
     [% USE DBI( database = 'dbi:mysql:datenbank',
     username = 'root',
     password = '' ) %]
     [% FOREACH projekt = DBI.query('SELECT * FROM projekte') %]
    
     <div class="file-box">
     <div class="file-head"><a class="plus btn-file-box-2" href="#"><img src="/img/transparent-5x5.png" width="20px" height="20px" /></a><a href="http://localhost/cgi-bin/a.01.06.cgi"><span class="folder-yellow">[% projekt.Titel %]</span></a></div>
     <div class="ebene2">
     [% FOREACH teilprojekt = DBI.query('SELECT teilprojekte.titel FROM teilprojekte ') %]
     <span class="folder-green"><a href="#" onMouseOver="navTooltipEinblenden(event)">[% teilprojekt.titel %]</a></span>
     [% END %]
     </div>
     </div>
    
     [% END %]
    so bekomm' ich momentan bei jedem Projekt als Untermenü alle Teilprojekte. Meine Frage wäre nun, wie ich die SQL Abfrage (ich denke der teil der WHERE klausel) gestalten müsste um nur die Teilprojekte des einen Projektes dargestellt bekomme.

    Danke schoneinmal im vorraus und BW ist ehrensache

    Gruß ROKE
     
  2. 18. Oktober 2012
    AW: Problem bei Menüdarstellung aus DB

    Wow, es gibt echt noch Entwickler die mit Perl anfangen Projekte umzusetzen?
    Respekt. Darf man Fragen wie du zu dieser Entscheidung gekommen bist?

    Zum Problem:
    Du musst im zweiten Query natürlich mittels WHERE entsprechend nur die Einträge selektieren die für das aktuelle Projekt gelten.

    Ohne dein Datenbank-Layout zu kennen kann man dir da aber keine weiteren Tipps geben.
     
  3. 18. Oktober 2012
    AW: Problem bei Menüdarstellung aus DB

    leider siehts so aus Murdoc, ist nicht mein Wille der mich dazu bringt. Fange demnächst ein Praktikum an und Arbeitgeber sagte, dass ich mich unter anderem auch damit auseinander setzten soll und nun steh ich hier

    also das mit der Where Klausel war mir ja auch schon klar, jedoch fehlt mir die bedingung einfach

    Datenbank besteht aus 2 tables (schreibe nun nur notwendiges für den code):

    Projekte:

    ProjektNr | Titel
    -----------------
    (auto inc.)| varchar

    Teilprojekte:

    TProjektnr | ProjektNr | Titel
    -------------------------------
    varchar | projektnummer aus Projekte | varchar

    wenn ich schreibe

    Code:
    SELECT teilprojekte.titel FROM projekte, teilprojekte WHERE Projekte.projektnr = Teilprojekte.projektnr 
    bekomm' ich gar keine Untermenüs mehr angezeigt. Es geht mir halt drum, dass ich genau die passenden Teilprojekte dort selektiere. aber ich glaube dass ich die where Klausel auch dynamisch mit einer variable befüllen müsste damit ich für die mehreren Durchläufe jeweils die passenden Ausgaben fürs Menü bekomme oder? hab leider jahrelang schon wieder nichts mehr mit sql gemacht
     
  4. 18. Oktober 2012
    AW: Problem bei Menüdarstellung aus DB

    Oh, du tust mir fast schon Leid ^^

    Code:
    [% FOREACH teilprojekt = DBI.query('SELECT teilprojekte.titel FROM teilprojekte WHERE ProjektNr = ' . project.ProjektNr) %]
     
  5. 19. Oktober 2012
    AW: Problem bei Menüdarstellung aus DB

    danke für dein mitleid

    leider hatte dein Code nicht direkt funktioniert aber das lag an dem Template, ich weiß nicht wer auf diese glorreiche Idee kam anstelle des Punktes für eine Verknüpfung einen " _ " zu verwenden -.-

    Code:
    [% FOREACH teilprojekt = DBI.query('SELECT teilprojekte.titel FROM teilprojekte WHERE ProjektNr = ' [color=red]_[/color] project.ProjektNr) %]
    
    aber das Menü steht nun, vielen dank!
     
  6. 29. Oktober 2012
    AW: Problem bei Menüdarstellung aus DB

    leider muss ich dieses thema nochmal zum leben erwecken.

    bekomme eine DBI syntax fehlermeldung bei folgendem code (minimal erweitert als der code im letzten post; habe eine order by klausel versucht dazu zu schreiben)

    Code:
    [% FOREACH teilprojekt = DBI.query('SELECT titel FROM teilprojekte WHERE ProjektNr = ' _ Projekt.ProjektNr _ 'ORDER BY ***') %]
    irgendwie gefällts den template nicht wenn ich hinten wieder etwas an die sql anweisung anfügen möchte. kann da jemand weiterhelfen?

    Grüße ROKE
     
  7. 29. Oktober 2012
    Zuletzt bearbeitet: 29. Oktober 2012
    AW: Problem bei Menüdarstellung aus DB

    Ich rate mal: Leerzeichen vergessen:

    Code:
    WHERE ProjektNr = ' _ Projekt.ProjektNr _ 'ORDER BY ***'
    Sollte sein:

    Code:
    WHERE ProjektNr = ' _ Projekt.ProjektNr _ ' ORDER BY ***'
    Mit Fehler sieht die Qry nämlich so aus:
    Code:
    WHERE ProjektNr = [COLOR="Red"]123[/COLOR]ORDER BY ***
     
    1 Person gefällt das.
  8. 29. Oktober 2012
    AW: Problem bei Menüdarstellung aus DB

    verdammt gut geraten badloader, das leerzeichen hatte die fehlermedlung verursacht, bw ist raus!
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.