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

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 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 Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 24.05.2005, 14:53:20
Tikiwiki Tikiwiki ist offline
Anfänger
 
Registriert seit: Apr 2005
Beiträge: 115
rekursiv bestimmte ebene abbrechen

Hallo zusammen,

ich wende mich wieder einmal hilfesuchend an Euch, da ich mittlerweile schon etwas mürbe bin und ein wenig an mir zweifle und ohne einen Rat scheitere ich kläglich.

Zum eigentlichen Problem was mich beschäftigt. Habe eine Tabelle mit folgenden Aufbau
katid | parent | titel
180| 0 | Budget
200| 180 | Hauptbudget
300| 200 | Rechnung 1995
400| 0 | Interne Mitteilung
420| 400 | Mittelungen
450| 420 | Jahr 2000

Mit folgender Funktion (nicht von mir) wird mir die Baumstruktur erstellt. Funktioniert auch.

PHP-Code:
<?php
Thread
(0);

function 
Thread($parentID)
{
error_reporting(E_ALL);
include 
"config.inc.php";

$sql "SELECT katid, titel FROM $tabellekategorie WHERE parent = $parentID";
$result mysql_query($sql);
If(
mysql_num_rows($result) > 0)
{
  echo 
"<ul>";
    while(
$thread[$parentID]=mysql_fetch_array($result))
    {
    echo 
"<li>".$thread[$parentID]["titel"]."</li>";
    
Thread($thread[$parentID]["katid"]);
    }
    echo 
"</ul>";
}
}
?>
Nun möchte ich nicht alle Ebenen durchlaufen lassen sondern es soll nach der z.B. 2. Ebene Schluss sein.

Beispiel:
- Budget
-Hauptbudget
- Interne Mitteilungen
-Mitteilungen
Wie gehe ich da ran? Geht das überhaupt? Es gibt viele Beiträge hier im Forum und weitergehende Links darüber und auch woanders die ich mittlerweile gelesen habe (teils verstanden, andere wiederum gar nicht) aber keiner hat mir zumindest einen kleinen Ansatz bieten können oder schlichtweg mir fehlt das Grundwissen und bin noch nicht bereit für PHP.

Danke
Dietmar
Mit Zitat antworten
  #2  
Alt 24.05.2005, 14:56:55
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
AW: rekursiv bestimmte ebene abbrechen

Gib einfach als zweiten Parameter noch eine Variable $tiefe mit. Diese hat beim ersten Aufruf der Funktion (also in der obersten Ebene) den Wert eins. Bei jedem erneuten Aufruf erhöhst (inkrementierst) du diesen Wert einfach um eins.
Mit Zitat antworten
  #3  
Alt 24.05.2005, 16:18:44
Tikiwiki Tikiwiki ist offline
Anfänger
 
Registriert seit: Apr 2005
Beiträge: 115
AW: rekursiv bestimmte ebene abbrechen

Hi xabbuh,

danke für Deine Antwort. Wir kennen uns ja mittlerweile :-)

Zugegeben. Habe es nur teilweise verstanden und auch zuwenig Zeit dies jetzt auf die Schnelle auszubrobieren. Und bevor ich mich hier total unbeliebt mache mit meiner Unwissenheit werde ich heut am Abend mich in aller Ruhe daran machen. Werde schon darauf kommen.
Danke nochmals für den Hinweis.

Dietmar
Mit Zitat antworten
  #4  
Alt 25.05.2005, 13:26:09
Tikiwiki Tikiwiki ist offline
Anfänger
 
Registriert seit: Apr 2005
Beiträge: 115
AW: rekursiv bestimmte ebene abbrechen

So es ist geschafft. Bin jetzt wieder zuversichtlich da ich mein Problem selbst lösen konnte. Dank auch dem Hinweis von xabbuh.

Hier meine Lösung (falls es mal jemanden interessieren sollte)

PHP-Code:
<?php

Thread
(0);

function 
Thread($parentID$tiefe=1)
{
error_reporting(E_ALL);
include 
"config.inc.php";
$sql "SELECT katid, titel FROM $tabellekategorie WHERE parent = $parentID";
$result mysql_query($sql);
If(
mysql_num_rows($result) > 0)

  {
   echo 
"<ul>";

      while(
$thread[$parentID]=mysql_fetch_array($result))
      {
      if (
$tiefe>=3) {continue;} else {
         echo 
"<li>".$thread[$parentID]["titel"]."</li>";
         
Thread($thread[$parentID]["katid"], $tiefe+1);
         }
      }
      echo 
"</ul>";
  }
}
?>
So Feedback abgegeben. Wünsche euch ein schönes kommendes Wochenende.
Dietmar
Mit Zitat antworten
  #5  
Alt 25.05.2005, 14:21:47
R. Woitaschik R. Woitaschik ist offline
Anfänger
 
Registriert seit: Nov 2004
Ort: Düsseldorf
Beiträge: 99
AW: rekursiv bestimmte ebene abbrechen

Hi Dietmar,
schreib doch besser am Anfang der Funktion
Code:
if ($tiefe>=3) return;
Bei deinem Quelltext führst Du für die dritte Ebene noch die SQL-Statements aus, was aber nicht notwendig ist (Laufzeit).

Gruß
Richard
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


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:34:47 Uhr.


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


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