cybton.com
Über uns | Jobs | Werbung | Sitemap | AGB | Impressum | Hilfe ?
 Kostenlos anmelden)
Forum
Aktuellste Beiträge
Forenregeln

Community
BB-Codes
Tags
Chat
Suche (Web)
Wer ist online?
Top-User

Basar


Statistik
Mitglieder gesamt: 68142
Mitglieder online: 0
Gäste online: 0
mehr...

Anzeige
Forum » Forum: Website & Webprogrammierung » Thread: [gelöst]php menü aus db

Thread: [gelöst]php menü aus db

Tags: MySQL , menü

22.03.2008 16:01 Uhr

 

Status: offline
hi!
ich hab mal ein kleines skript geschrieben, welches ein menü aus einer mysqldatenbank auslesen soll und dies dann natürlich auch ausgibt.
nun habe ich folgendes skript:
+ php:
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
27
28
29
30
31
32
33
34
35
36
37
<?php
    include "db.php";
    $title = "SELECT * FROM `menutitle`";
    $titles = mysql_query($title) or die("Zeile 8!");
    $anztitle = mysql_num_rows($titles);
    if($anztitle == 0) { print "Zeile 10!"; }
    $i = "0";
    while($row = mysql_fetch_assoc($titles)) {
        $titelid[$i] = $row['id'];
        $titel[$i] = $row['name'];
        $i++;
    }
    for($j="0";$j<$anztitle;$j++) {
        $menup{$j} = "SELECT * FROM `menupunkt`
                  WHERE `pid` = '$titleid[$j]'";
        $menups{$j} = mysql_query($menu{$j}) or die(mysql_error());
        $anzmenup{$j} = mysql_num_rows($menups{$j});
        if($anzmenup{$j} == 0) { print "Zeile 22! j=$j"; }
        
        for($k="0";$k<$anzmenup;$k++) {
            $menupid{$j}[$k] = $row['id'];
            $menuppid{$j}[$k] = $row['pid'];
            $menupname{$j}[$k] = $row['name'];
            $menupurl{$j}[$k] = $row['url'];
         }
    }
 
    print '<table border="1px" cellspacing="0px">';
    $i = "0";
    while($i<$anztitle) {
        print "<tr><th>$titel[$i]</th></tr>\n";
        for($l="0";$l<$anzmenup{$i};$l++) {
            print "<tr><td><a href=\"$menupurl{$i}[$l]\">$menupname{$i}[$l]</a></td></tr>\n";        
        }
        $i++;
    }
?>
als ausgabe bekomme ich nur "Query was empty"... in der datenbank sind aber zum test je zwei einträge in jeder tabelle vorhanden... sieht jemand den fehler?
und kann dieses skript überhaupt funktionieren, oder habe ich irgend einen denkfehler drin gemacht?

cYa kJ'
2 mal bearbeitet
___________________________
Faulheit ist wenn man mit einem Glas Milch in der Hand auf das nächste Erdbeben wartet um einen Milchshake zu trinken.
Chuck Norris hat mehr Kreditkarten als Max Mustermann!
Sido fragte mal "Wer ist Chuck Norris?". Seitdem trägt er eine Maske.
22.03.2008 16:12 Uhr

 

Status: offline
Hallo,

ich denke, der Fehler liegt hier:
PHP:
1
2
$menup{$j} = "SELECT * FROM `menupunkt`WHERE `pid` = '$titleid[$j]'";
$menups{$j} = mysql_query($menu{$j}) or die(mysql_error());
Der Inhalt von $menu{$j} sollte nämlich leer sein, da nu $menup{$j} die Query zuweist. Versuche also mal, den Ausdruck $menu{$j} durch $menup{$j} zu ersetzen.

Gruß,

Robert
22.03.2008 16:15 Uhr

 

Status: offline
^^ klingt unnett... die fehlermeldung hatte ich noch nie:
Fatal error: Allowed memory size of 167772160 bytes exhausted (tried to allocate 35 bytes) in ...
$menupid{$j}[$k] = $row['id'];
ist scheinbar falsch... zeile 21
1 mal bearbeitet
___________________________
Faulheit ist wenn man mit einem Glas Milch in der Hand auf das nächste Erdbeben wartet um einen Milchshake zu trinken.
Chuck Norris hat mehr Kreditkarten als Max Mustermann!
Sido fragte mal "Wer ist Chuck Norris?". Seitdem trägt er eine Maske.
22.03.2008 16:26 Uhr

 

Status: offline
Mir fällt auf, das du die Menuepunkte gar nicht richtig ausliest, also nach
PHP:
1
2
3
4
5
<?php
        $menup{$j} = "SELECT * FROM `menupunkt`
                  WHERE `pid` = '$titleid[$j]'";
        $menups{$j} = mysql_query($menu{$j}) or die(mysql_error())
?>
fehlt die while-Schleife mit der die einzelnen Datensätze aus der DB geholt werden
PHP:
1
2
3
<?php
while($row = mysql_fetch_assoc($menups{$j} )) {
?>
TIP:
PHP:
1
2
3
4
5
<?php
$query = "SELECT `strasse` FROM `tabelle`";
$result = mysql_query($query);
while($haus = mysql_fetch_assoc($result)){ echo $haus['stresse']; }
?>
Das läst sich besser lesen als deine ganzen $title,$titles,$titel,.... und mann weis auch genau was sich in den Variablen befindet  :wink: 

Gruß Dragonl
1 mal bearbeitet
___________________________
Gemeinde Jugend Vertretung Bremen
"Ich will das Rad kein zweites mal erfinden,
ich will nur verstehen wie es funktioniert !"
22.03.2008 16:29 Uhr

 

Status: offline
Das liegt wahrscheinlich daran, dass die Abbruchbedingung der for-Schleife nie eintritt. Ändere mal
PHP:
1
for($k="0";$k<$anzmenup;$k++)
in
PHP:
1
for($k=0;$k<$anzmenup[$j];$k++)
Noch was: Mit geschweifften Klammern auf Arrays zuzugreifen ist ziemlich unüblich und wirkt für mich leicht unübersichtlich.

Gruß,

Robert
22.03.2008 16:41 Uhr

 

Status: offline
da muss ich blutner recht geben
mit geschweiften klammern greift man üblicherweiße nur auf einzelne buchstaben eines strings zu. Es geht zwar beides, aber ich glaube standartmäßig werden [] für arrays verwendet und {} für strings
___________________________
see you on
--> www.moskito-rv.de
--> www.sone-works.de
22.03.2008 17:37 Uhr

 

Status: offline
hi!
wenn $j gleich 4 ist und k gleich 12 dann heißt die variable:
$menupid{$j}[$k] = $menupid4[12] ;-)
so ist das gedacht...

²Topic: Jetzt sieht das ganze so aus:
user-pic
http://nopaste.org/p/avrAZsUXx

cYa
1 mal bearbeitet
___________________________
Faulheit ist wenn man mit einem Glas Milch in der Hand auf das nächste Erdbeben wartet um einen Milchshake zu trinken.
Chuck Norris hat mehr Kreditkarten als Max Mustermann!
Sido fragte mal "Wer ist Chuck Norris?". Seitdem trägt er eine Maske.
23.03.2008 13:40 Uhr

 

Status: offline
hi!
jetzt funktioniert alles. nunja. meine alte idee:
1.)lese den titel aus
2.)lese die menüpunkte aus
3.)gib sie aus

jetzt funktioniert es so:
1.)lese den titel aus
2.)gib ihn aus
3.)lese die passenden menüpunkte aus
4.)gib sie noch in der selben schleife aus

hier der code, wenn es jemanden interessiert:
+ php:
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
<?php 
function menu() {
    print '<ul id="menuliste">';
    
    $anzTitelSQL = mysql_query("SELECT COUNT(*) as anzahl FROM menutitle");
    $anzTitelFetch = mysql_fetch_assoc($anzTitelSQL);
    $anzTitel = $anzTitelFetch['anzahl'];
    for($i="0";$i<$anzTitel;$i++) {
      $titelSQL = "SELECT * FROM menutitle WHERE id = $i";
      $titelRes = mysql_query($titelSQL);
      $titelFetch = mysql_fetch_assoc($titelRes);
      $titel = $titelFetch['name'];
 
      print '<li class="menutitel">'.$titel.'</li>';      
      
      $punktSQL = "SELECT * FROM menupunkt WHERE pid = $i";
      $punktRes = mysql_query($punktSQL);
      while($punktFetch = mysql_fetch_assoc($punktRes)) {
          $punktName = $punktFetch['name'];
          $punktURL = $punktFetch['url'];
          print '<li class="menupunkt"><a href="'.$punktURL.'">'.$punktName.'</a></li>';
      }
    }
    print "</ul>";
}
?>
1 mal bearbeitet
___________________________
Faulheit ist wenn man mit einem Glas Milch in der Hand auf das nächste Erdbeben wartet um einen Milchshake zu trinken.
Chuck Norris hat mehr Kreditkarten als Max Mustermann!
Sido fragte mal "Wer ist Chuck Norris?". Seitdem trägt er eine Maske.
Ähnliche Threads Forum Ähnlichkeitsgrad
 PHP: Dynamisches Drop Down Menü - Auslesen der Datenbank Website & Webprogrammierung 2
 [gelöst]Javascript Mysql connecten Softwareprogrammierung 2
 [gelöst] Fragen bezüglich MySQL Website & Webprogrammierung 1
 [gelöst] Problem: Menü nach best. Zeit ausblenden Website & Webprogrammierung 1
 FTP wo und wie? Fragen zu cybton.com 1
 Mysql zwei Tabellen verbinden Website & Webprogrammierung 1
 [Problem] MySQL mehrere Einträge gleichzeitig verändern geht nicht Website & Webprogrammierung 1
nach obennach oben

Copyright © 2008 cybton-network

Google
Partner: #Musik - Dein Internetradio - nexem. - .wir machen news - Your-Book.net - Dein kostenloses Gästebuch
ANEXIA - PHP Entwicklung - Dockers - s.Oliver Schuhe - Think Schuhe - der eigene Weg - Dorfen - Paul Green Schuhe - Bequeme Geox - Web-Entwicklung