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 ::

TYPO3 Kochbuch

TYPO3 Kochbuch 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 für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 20.03.2010, 23:47:59
knight1 knight1 ist offline
Junior Member
 
Registriert seit: May 2003
Ort: Trier
Alter: 47
Beiträge: 310
knight1 eine Nachricht über MSN schicken knight1 eine Nachricht über Skype™ schicken
Dynamisches erstellen eines Navigationsmenüs

Hi SELFPHP-Com,
ich habe momentan ein Problem mit dem dynamischen erstellen eines Navigationsmenüs.
Die Tabellen-Struktur sieht folgendermaßen aus:
Code:
id bigint(20) UNSIGNED auto_increment               
name varchar(255)
site varchar(255)
parent_id bigint(20) UNSIGNED
year_disposal enum('0','1')
order int(11)
active enum('0','1')
Der Inhalt der Tabelle sieht folgendermaßen aus:
Code:
id|name|site|parent_id|year_disposal|order|active
1|Home|home|0|0|1|1
2|Über mich|about_me|0|0|2|1
3|Projekte/Referenzen|projects|0|0|3|1
4|Kontakt|contact|0|0|4|1
5|Impressum|imprint|0|0|5|1
6|Nützliches/Dies und Das|usefull|0|0|6|1
7|Smilies|smilies|6|0|1|1
8|Feiertage und Ereignisse|holidays|6|1|2|1
Ich habe mir eine rekursive Funktion geschrieben welche mir die Darstellung des Menüs übernehmen soll.
Hier mal den Code der Funktion:
PHP-Code:
function navigation ($parent_id,$level,$mysqli)
{
$return = array();
$query $mysqli->query("
SELECT
*,
`id` AS `sub_id`,
(SELECT COUNT(*) FROM `"
.MYSQL_TABLE_PAGES."` WHERE (`parent_id` = `sub_id`)) AS `count`
FROM
`"
.MYSQL_TABLE_PAGES."`
WHERE
(
    (
        (`parent_id` = '0') ||
        (`parent_id` = '{$parent_id}')
    ) &&
    (`active` = '1')
)
ORDER BY
`order` ASC
"
);
$rows $query->num_rows;
 while (
$result $query->fetch_array(MYSQL_ASSOC))
 {
 
$hyphens "";
  for (
$x=1;$x<=$level;$x++) { $hyphens .= "-"; }
 
$year "";
  if (
$result['count'] == 0)
  {
   if (
$result['year_disposal'] == 1) { $year "&amp;year=".CURRENT_YEAR; }
  
$return[] = "{$hyphens} <a href=\"content.php?site={$result['site']}{$year}\" target=\"content_frame\">{$result['name']}</a><br>";
  }
  if (
$result['count'] >= 1)
  {
  
$return[] = "{$hyphens} <a href=\"navigation.php?cat={$result['id']}\" target=\"_self\">{$result['name']}</a><br>";
  }
  if (
$parent_id == $result['id'])
  {
  
$return[] = navigation($result['id'],$level+1,$mysqli);
  }
 }
RETURN 
implode($return);

Der initiative Aufruf der Funktion erfolgt folgendermaßen
PHP-Code:
echo navigation($_GET['cat'],1,$mysqli); 
an der Stelle wo das Menü hinkommen soll.
Wenn ich keinen der Unterpunkte anzeigen lasse, dann wird das Menü korrekt dargestellt und es werden keine Fehler ausgegeben.
Wenn ich mir aber die Unterpunkte des Menpunkts "Nützliches/Dies und Das" (Ist momentan der einzige mit Unterpunkten) anzeigen lassen möchte kommt die Fehlermeldung
Code:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 523800 bytes) in Pfad zur Datei/navigation.php on line 45
Die Zeile 45 ist folgende:
PHP-Code:
$return[] = navigation($result['id'],$level+1,$mysqli); 
Ich kann mir nicht erklären worauf sich der Fehler beziehen soll. Ich habe schon den Parent-ID-Parameter als Zahl manuell definiert und auch die $mysqli-Methode per GLOBAL in die Funktion importiert. Es kommt aber jedesmal erneut der Fehler.

Vielleicht sehe ich ja vor lauter Bäumen den Wald nicht mehr.


Für Tipps wäre ich dankbar.


Kai aka Knight1
Mit Zitat antworten
  #2  
Alt 22.03.2010, 09:44:53
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
AW: Dynamisches erstellen eines Navigationsmenüs

ohne jetzt deinen quelltext genauer anzuschauen: die fehlermeldung deutet darauf hin, dass die rekursion ins unendliche läuft. ich würde zum debuggen mal die übergebenen variablen (result und level?) ausgeben.

cx
Mit Zitat antworten
  #3  
Alt 22.03.2010, 20:36:27
knight1 knight1 ist offline
Junior Member
 
Registriert seit: May 2003
Ort: Trier
Alter: 47
Beiträge: 310
knight1 eine Nachricht über MSN schicken knight1 eine Nachricht über Skype™ schicken
AW: Dynamisches erstellen eines Navigationsmenüs

Danke cortex für Deine Antwort,
Zitat:
Zitat von cortex Beitrag anzeigen
...die fehlermeldung deutet darauf hin, dass die rekursion ins unendliche läuft. ...
Der gedanke kam mir auch schon. Ich hatte aber keine Idee wie ich das testen kann.

Zitat:
Zitat von cortex Beitrag anzeigen
...ich würde zum debuggen mal die übergebenen variablen (result und level?) ausgeben.

cx
Ich habe mal die Variable $level innerhalb der Funktion ausgegeben, und siehe da, diese Variable läuft bis auf 1004 hoch bevor das Script in das Speicherlimit reinläuft.

Ich stelle mir schon länger die Frage warum der PHP-Interpreter bei einem (teilweise deutlich) geringeren Wert als dem der in der php.ini eingetragen ist in der Error läuft.

Ich habe mich dazu entschlossen eine einfachere Variante des Menüs ohne Unterkategorien zu bauen.

Trotzdem Danke für die Antwort.

Ich werde mit Sicherheit irgendwann nochmal auf das Thema zurückkommen.



Kai aka Knight1
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
Objekte über Klassennamen erstellen stevieswebsite PHP Grundlagen 2 19.11.2009 15:40:29
Kundennummer erstellen golfer69 MySQLi/PDO/(MySQL) 8 22.01.2006 12:38:11
Erstellen einer Datei durch einen Script LLlypa PHP Grundlagen 3 05.06.2004 11:26:14
Variablenname dynamisch erstellen?! s4int PHP für Fortgeschrittene und Experten 2 25.05.2003 13:26:45
.htaccess mit php erstellen DeMaephis PHP Grundlagen 4 16.01.2003 22:33:06


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:53:17 Uhr.


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


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