#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 + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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) %] + Multi-Zitat Zitieren
#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! + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#8 29. Oktober 2012 AW: Problem bei Menüdarstellung aus DB verdammt gut geraten badloader, das leerzeichen hatte die fehlermedlung verursacht, bw ist raus! + Multi-Zitat Zitieren