SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Entwicklung und Softwaredesign

PHP Entwicklung und Softwaredesign Hier können strukturelle (Programmier-) Konzepte diskutiert und Projekte vorgestellt werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 25.02.2006, 12:53:36
daf555 daf555 ist offline
Anfänger
 
Registriert seit: Feb 2006
Beiträge: 9
Menüstruktur aus Datenbank rekursiv auslesen

Hallo!

Arbeite gerade an einer Vereinsverwaltung. Die Menüpunkte werden dabei dynamisch aus einer Datenbank ausgelesen. Da auch verschachtelte Menüstrukturen verarbeitet werden sollen, habe ich eine rekursive Funktion für die Auflistung aller Menüpunkte geschrieben. Sie funktioniert auch bis auf die Tatsache, dass 3 Menüpunkte doppelt aufgelistet werden (Spielart, Saison und Liga), obwohl sie nur einmal in der Datenbank vorhanden sind. Habe leider keinen Debugger, um festzustellen, wo der Fehler liegt und hoffe deshalb auf eure Hilfe.
Hier die entsprechende Tabelle der Datenbank:

#
# Tabellenstruktur für Tabelle `ansicht`
#
CREATE TABLE `ansicht` (
`Nummer` int(5) NOT NULL auto_increment,
`Name` varchar(30) NOT NULL default '',
`Link` varchar(255) NOT NULL default '',
`Sort` int(5) default NULL,
`Submenue` varchar(30) NOT NULL default '',
`Beschreibung` varchar(255) NOT NULL default '',
PRIMARY KEY (`Nummer`)
) TYPE=MyISAM AUTO_INCREMENT=60 ;
#
# Daten für Tabelle `ansicht`
#
INSERT INTO `ansicht` VALUES (3, 'Spiele', 'table.php?ansicht=Spiele', 3, 'Standards', 'Informationen zu den einzelnen Spielen');
INSERT INTO `ansicht` VALUES (4, 'Spieltag', 'table.php?ansicht=Spieltag', 4, 'Standards', 'Alle Informationen zu den einzelnen Spieltagen');
INSERT INTO `ansicht` VALUES (5, 'Ansichten', 'table.php?ansicht=Ansichten&sort=Sort&sortdir=ASC', 97, 'XAdmin', '');
INSERT INTO `ansicht` VALUES (6, 'Filter', 'table.php?ansicht=Filter', 98, 'XAdmin', '');
INSERT INTO `ansicht` VALUES (7, 'Parameter', 'table.php?ansicht=Parameter', 99, 'XAdmin', '');
INSERT INTO `ansicht` VALUES (15, 'Spielart', 'table.php?ansicht=Spielart', 5, 'Standards', 'Diese Tabelle enthält die Spielarten.');
INSERT INTO `ansicht` VALUES (22, 'Liga', 'table.php?ansicht=Liga', 7, 'Standards', 'die Namen der verfügbaren Ligen');
INSERT INTO `ansicht` VALUES (21, 'Saison', 'table.php?ansicht=Saison', 6, 'Standards', 'die wählbaren Saisons, z.B. 2005/2006');
INSERT INTO `ansicht` VALUES (23, 'Tabelle', 'table.php?ansicht=Tabelle', 10, '', '');
INSERT INTO `ansicht` VALUES (24, 'Einzelrangliste', 'table.php?ansicht=Einzelrangliste', 20, '', '');
INSERT INTO `ansicht` VALUES (59, 'SaisonLigaSpieltag', 'table.php?ansicht=SaisonLigaSpieltag', 90, 'Zuordnungen', 'Zuordnung, welche Spieltage es pro Liga und Saison gibt');
INSERT INTO `ansicht` VALUES (26, 'Spiel eintragen', 'formular.php', 25, 'Admin', '');
INSERT INTO `ansicht` VALUES (27, 'SaisonLigaMannschaft', 'table.php?ansicht=SaisonLigaMannschaft', 20, 'Zuordnungen', 'Zuordnung, welche Mannschaft in welcher Saison in welcher Liga spielt');
INSERT INTO `ansicht` VALUES (29, 'SaisonSpieler', 'table.php?ansicht=SaisonSpieler', 23, 'Zuordnungen', 'Zuordnung, welcher Spieler in welcher Saison spielt');
INSERT INTO `ansicht` VALUES (50, 'Spieler', 'table.php?ansicht=Spieler', 2, 'Standards', '');
INSERT INTO `ansicht` VALUES (54, 'Admin', '', 30, '', '');
INSERT INTO `ansicht` VALUES (55, 'SuperAdmin', '', 40, '', '');
INSERT INTO `ansicht` VALUES (56, 'Standards', '', 115, 'SuperAdmin', '');
INSERT INTO `ansicht` VALUES (57, 'Zuordnungen', '', 120, 'SuperAdmin', '');
INSERT INTO `ansicht` VALUES (58, 'XAdmin', '', 50, '', '');

Und hier das Skript:

PHP-Code:
<?
Main();
exit;

function SqlConnect() {
    $dbHost = "host";
    $dbName = "verein2";
    $dbUser = "user";
    $dbPass = "password";
    $connect = @mysql_connect($dbHost, $dbUser, $dbPass);
    $selectDB = @mysql_select_db($dbName, $connect);
}

function Main() {
    SqlConnect();
    $select   = "SELECT Name, Link, Submenue FROM ansicht WHERE Submenue='' ORDER BY Sort";
    $qselect  = mysql_query($select);
    $zaehler  = 0;
    while ($qselect_row=mysql_fetch_array($qselect)) {
        $menuA[$zaehler]['Name']=$qselect_row['Name'];
        $menuA[$zaehler]['Link']=$qselect_row['Link'];
        $menuA[$zaehler]['Submenue']=$qselect_row['Submenu'];
        $zaehler++;
    }
    echo ParseMenu($menuA);
}

function ParseMenu($array) {
    foreach ($array AS $ansichtA) {
        if ($ansichtA['Link']=='' && $ansichtA['Name']<>'') {
            $inhalt  .= "\n<br /><tr><td><a href=\"menu.php?Submenue=".$ansichtA['Name']."\" target=\"Menue\">".$ansichtA['Name']."</a></td></tr>";
            $select   = "SELECT Name, Link, Submenue FROM ansicht WHERE Submenue='".$ansichtA['Name']."' ORDER BY Sort";
            $qselect  = mysql_query($select);
            $zaehler  = 0;
            while ($qselect_row=mysql_fetch_array($qselect)) {
                $menuA[$zaehler]['Name']=$qselect_row['Name'];
                $menuA[$zaehler]['Link']=$qselect_row['Link'];
                $menuA[$zaehler]['Submenue']=$qselect_row['Submenu'];
                $zaehler++;
            }
            $inhalt.=ParseMenu($menuA);
        } else {
            $inhalt.="\n<br /><tr><td><a href=\"".$ansichtA['Link']."\" target=\"Main\">".$ansichtA['Name']."</a></td></tr>";
        }
    }
    return $inhalt;
}
?>
Die Parameter für den Datenbank-Zugriff (Funktion SqlConnect) müsstet ihr natürlich anpassen.
Folgender Hinweis noch zur Datenbank-Tabelle 'ansicht':
Die Spalte 'Submenue' enthält den Namen des ÜBERGEORDNETEN Menüpunktes. Ist die Spalte leer, handelt es sich um das Hauptmenü. Beispiel:
Menüstruktur:
-a
-b
--d
--e
---f
-c
Tabelle 'ansicht':
Name | Link | Submenue
a | http... |
b | |
c | http... |
d | http... | b
e | | b
f | http... | e
Mit Zitat antworten
  #2  
Alt 25.02.2006, 18:18:29
daf555 daf555 ist offline
Anfänger
 
Registriert seit: Feb 2006
Beiträge: 9
AW: Menüstruktur aus Datenbank rekursiv auslesen

Ihr braucht euch nicht mehr zu bemühen. Habe den Fehler selbst ausfindig machen können :)
Mit Zitat antworten
  #3  
Alt 26.02.2006, 00:43:36
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
AW: Menüstruktur aus Datenbank rekursiv auslesen

Zitat:
Zitat von daf555
Ihr braucht euch nicht mehr zu bemühen. Habe den Fehler selbst ausfindig machen können :)
schön, dass du ihn für dich behälst und jeder, der ein ähnliches problem hat und hierauf stößt, sich richtig freuen wird, weil ihm das wirklich hilfreich sein wird.
Mit Zitat antworten
  #4  
Alt 26.02.2006, 14:04:25
daf555 daf555 ist offline
Anfänger
 
Registriert seit: Feb 2006
Beiträge: 9
AW: Menüstruktur aus Datenbank rekursiv auslesen

Es fehlte noch ein
PHP-Code:
$menuA=array(); 
über der while-Schleife in der Funktion ParseMenu()
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bilddatei aus Datenbank auslesen jopoint PHP Grundlagen 5 20.02.2009 14:54:01
Suchfeld + Datenbank auslesen und "umkopieren" Morethir PHP Grundlagen 1 19.02.2006 13:38:06
Text & Variable aus Datenbank auslesen und ausgeben Don Stefano PHP Grundlagen 6 29.09.2005 00:47:18
Datenbank Tabellen Zeilen auslesen ? Blade PHP Grundlagen 11 03.01.2005 11:32:05
mysql datenbank für google auslesen Didi65de MySQLi/PDO/(MySQL) 4 16.08.2004 12:55:44


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:29:07 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt