Ergebnis 1 bis 9 von 9

Thema: [PHP] Kategorien und beliebig viele Unterkategorien

  1. #1
    HTML Newbie
    Registriert seit
    02.08.2006
    Beiträge
    4
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard [PHP] Kategorien und beliebig viele Unterkategorien

    Hi Leute!

    Ich versuche gerade mir ein kleines Archiv zu erstellen,
    dieses braucht eben natürlich Kategorien und sogar Unterkategorien!
    Soweit so gut, nur ich will eben auch, dass ich unbegrenzt Unterkategorien machen kann.

    So nun das Problem:
    Eine ewig Schleife! Warum is mir klar... da ich die Funktion in die selbige Funktion eingesetzt habe.
    Aber wenn die IF-Abfrage in der Funktion ungültig wird, müsste doch diese Schleife unterbrochen werden, und ein Ende finden.... ???

    Hab alles versucht im PHP-Code zu erklären... dürfte evtl verständlich sein ^^
    Falls nicht fragt mich! Danke im Voraus!


    Mfg me =)

    Hier der code (hoffe ihr könnt was damit anfangen ) ^^


    Code:
    <?php
    # Zur DB connecten
    # include "db_connect.php"
    /// DB - Install ////////////////////////////
    //////////// Kategorien /////////////////////
    $table = 'Kategorien';
    $sql = "CREATE TABLE IF NOT EXISTS `". $table ."`
            &#40;
                `ID` INT AUTO_INCREMENT PRIMARY KEY,
                `Name` TEXT,
                `Parent` INT
            &#41;; ";
    mysql_query&#40;$sql&#41; OR die&#40;mysql_error&#40;&#41;&#41;;
    /////////////////////////////////////////////
    /////////////////////////////////////////////
    ?>
    <h1>Archiv</h1>
    <table width="100%" border="0" cellspacing="5" cellpadding="0">
    <?php
    /// Funktion erstellen um herauszufinden, ob es noch Unterkategorien gibt,
    /// falls ja hinschreiben, dann checken ob es in diesen Unterkategorien
    /// nochmal Unter-unter-Kategorien gibt, 
    /// falls ja.......... usw....
    /// falls nein &#40;irgendwann sollte es keine Unterkategorien geben außer DB is unendlich&#41;
    /// schließen sich die Schleifen und fertig. 
    function check_and_post&#40;&#41;
    &#123;
        $parent = $&#123;"row".$i&#125;&#91;'ID'&#93;;
        $i++;
        $&#123;"sql".$i&#125; = "SELECT * FROM    Kategorien 
                    WHERE     Parent = '". $parent ."'
                    ORDER BY ID ASC";
        $&#123;"result".$i&#125; = mysql_query&#40;$&#123;"sql".$i&#125;&#41; OR die&#40;mysql_error&#40;&#41;&#41;;
        $&#123;"row".$i&#125; = mysql_fetch_assoc&#40;$&#123;"result".$i&#125;&#41;;        
        if&#40; $&#123;"row".$i&#125; !== false &#41; 
        &#123; 
        ?>
            <tr>
                <td>
                    <table width="100%" border="0" cellspacing="0" cellpadding="0">
                    <?php
                    do &#123; 
                    ?>
                        <tr>
                            <td width="15" align="right">
                                -
                            </td>
                            <td align="left">
                                <?php echo $&#123;"row".$i&#125;&#91;'Name'&#93;; ?>                        
                            </td>
                        </tr>
                        <?php
                        check_and_post&#40;&#41;;
                        ?>
                    <?php
                    &#125; while&#40;$&#123;"row".$i&#125; = mysql_fetch_assoc&#40;$&#123;"result".$i&#125;&#41;&#41;;
                    ?> 
                    </table>
                </td>
            </tr>
        <?php
        &#125;
        $i = $i - 1;
    &#125;
    /// Start ////
    $i = 0; 
    $&#123;"sql".$i&#125; = "SELECT
                    ID,
                    Name,
                    Parent
             FROM
                    Kategorien 
            WHERE     Parent = 'false'
            ORDER BY
                    ID ASC";
    $&#123;"result".$i&#125; = mysql_query&#40;$&#123;"sql".$i&#125;&#41; OR die&#40;mysql_error&#40;&#41;&#41;;
    $&#123;"row".$i&#125; = mysql_fetch_assoc&#40;$&#123;"result".$i&#125;&#41;;
    do &#123; 
        ?>        
        <tr>
            <td width="100%" align="left">
                <?php echo $&#123;"row".$i&#125;&#91;'Name'&#93;; ?>        
            </td>
          </tr>
        <?php
        check_and_post&#40;&#41;;
        ?>
    <?php
        &#125; 
    while&#40;$&#123;"row".$i&#125; = mysql_fetch_assoc&#40;$&#123;"result".$i&#125;&#41;&#41;;
    ?> 
    </table>
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    ~~~ Mfg Jack Daniels ~~~

  2. #2
    Großmeister(in)
    Registriert seit
    31.10.2005
    Ort
    Bei Muddi, wo sonst
    Beiträge
    524
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Erstmal finde ich, dass das ein sehr komischer Variablen NAme ist.
    Normaler Weise nennt man soetwas $counter oder sowas.
    Das Problem liegt am vergleichsoperator. Wenn du wissen willst, ob etwas nicht, dem entspricht machst du nicht !== sondern !=
    Du könntest natürlich auch einfach machen.
    Code:
    if&#40;$variable == true&#41;
    &#123;
    bla
    &#125;
    Viele Grüße

    Mir nicht

  3. #3
    Forum Guru
    Registriert seit
    28.12.2004
    Ort
    Ringgenberg(bei Interlaken) / Schweiz
    Beiträge
    4.787
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    was bringt den das ${"row".$i} im while auser eine speicher verschendung erster güteklasse ?!



    PS $row[] währe ähnlich aber effectiver und strukturierter...

    was soll

    while(${"row".$i} = mysql_fetch_assoc(${"result".$i}));

    am ende der datei...


    also im großen und ganzen wegschmeissen und neu überlegen und nochmal versuchen...

    da es bei einer rekursuvien funktion nätig währe die parnt id zu übergeben..

    und dann bloß noch das ding mittels:

    check_and_post(0)
    starten

  4. #4
    HTML Newbie
    Themenstarter

    Registriert seit
    02.08.2006
    Beiträge
    4
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Hi nochmal
    Danke für die Antworten!

    @Mir nicht:
    Danke für die Richtigstellung des Vergleichesoperator =)
    Warum ich diese komischen Variablen nehme?
    Folgendes: wenn ich nun einfach $row nehme,
    funzt das schon, nur sobald das script dann eine 2.te 3.te oder 4.te schleife benutzt, die auch mit $row, $sql und $result arbeiten, überschreiben die sich gegenseitig und es funzt nich mehr, daher brauch ich so iene dynamische Variabel, die automatisch bei jeden Durchgang ($i) eben den Namen ändert.

    @GreenRover:
    also im großen und ganzen wegschmeissen und neu überlegen und nochmal versuchen...
    Das warn schon meine größten Geisteserzeugnisse, die ich bisher nur irgendwie zusammen kriege :-/.... bin noch nicht so gut und da steh ich vor ein Prob, das noch zu groß für mich ist.
    Kapier nicht warum das nicht läuft...

    Verstehe nicht wie man das mit Arrays bewerkstelligen soll,
    vorallem dass das richtige benutzt wird? Meisnt du so:
    $row['$i'] ? Warum verbraucht das dann weniger Speicher als die dynamische Variabel?

    da es bei einer rekursuvien funktion nätig währe die parnt id zu übergeben..
    Ich hab überhaupt keine Ahnung wie man mit rekursiven Funktionen umgeht,...das ist meine erste lol ^^

    was soll
    while(${"row".$i} = mysql_fetch_assoc(${"result".$i}));
    am ende der datei...
    Naja, das ist eben das Ende der Do-While-Schleife um die Kategorie in diesem Bereich anzuzeigen.
    Ich kenne keine bessere Möglichkeit um alle Array-Elemente auslesen zu lassen :-/
    While weil es ja irgendwann aufhören muss solang nix mehr gibt =)

    Hoffe ihr könnt mir weiterhelfen!
    Mfg JackDaniels!

    EDIT:
    wollte ez ma die dynamischen Variablen in arrays umschrieben...
    aber bei sowas wie
    ${"row".$i}['Name'] geht das nicht mehr oder?
    Oder wie schreibt man Arrays in Arrays?
    $row['$i['Name']'] ? so?
    ~~~ Mfg Jack Daniels ~~~

  5. #5
    Forum Guru
    Registriert seit
    28.12.2004
    Ort
    Ringgenberg(bei Interlaken) / Schweiz
    Beiträge
    4.787
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    so fabnge mal hinten an

    $row[$i['Name']] das braucht net weniger speicher aber währe zumindest strukturierter...

    und nun nochmal ein kleienr anstoß...

    Code:
    <h1>Archiv</h1>
    <?php
    /// Funktion erstellen um herauszufinden, ob es noch Unterkategorien gibt,
    /// falls ja hinschreiben, dann checken ob es in diesen Unterkategorien
    /// nochmal Unter-unter-Kategorien gibt,
    /// falls ja.......... usw....
    /// falls nein &#40;irgendwann sollte es keine Unterkategorien geben außer DB is unendlich&#41;
    /// schließen sich die Schleifen und fertig.
    function check_and_post&#40;$parent, $start=TRUE&#41;
    &#123;
    
     $sql = 'SELECT * FROM `Kategorien` WHERE `Parent`="'. $parent .'" ORDER BY `ID` ASC';
     $res = mysql_query&#40;$sql&#41; OR die&#40;mysql_error&#40;&#41;&#41;;
    
     if &#40;mysql_num_rows&#40;$res&#41;==0&#41;
      return false;
     
     if &#40;$start!=TRUE&#41;
      echo '<tr><td colspan="2">';
     echo '<table width="100%" border="0" cellspacing="5" cellpadding="0">';
    
     while&#40;$row=mysql_fetch_assoc&#40;$res&#41;&#41;
     &#123;
        ?>
     <tr>
      <td width="15" align="right">
       -
      </td>
      <td align="left">
        <?=$row&#91;'Name'&#93;; ?>
      </td>
     </tr>
    <?php
      check_and_post&#40;$row&#91;'ID'&#93;, FALSE&#41;;
     &#125;
     
     echo '</table>';
     
     if &#40;$start!=TRUE&#41;
      echo '</td></tr>';
    &#125;
    
    check_and_post&#40;0&#41;;
    
    ?>

  6. #6
    HTML Newbie
    Themenstarter

    Registriert seit
    02.08.2006
    Beiträge
    4
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Wow!
    Das funzt =)
    Tausend dank!!!!!
    Du bnsit für mich der größte *g*


    Um das Verständnis zu vervollständigen:
    Warum benutzt du keine Klammern bei den If-Abfragen?
    Woher weiß man dann wann die IF-Abfrage aufhört?
    Und das <?=$row['Name']; ?> kann man anstatt <? echo ... ?> benutzen?

    EDIT:
    zur ersten und zweiten frage:
    Kann das sein, dass es dann nur auf die nexte zeile sich auswirkt?
    ~~~ Mfg Jack Daniels ~~~

  7. #7
    Fortgeschrittene/r
    Registriert seit
    03.03.2006
    Beiträge
    195
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Zitat Zitat von Jack Daniels
    EDIT:
    zur ersten und zweiten frage:
    Kann das sein, dass es dann nur auf die nexte zeile sich auswirkt?
    jepp
    Für die nächste Zeit erstmal inaktiv.

  8. #8
    Forum Guru
    Registriert seit
    28.12.2004
    Ort
    Ringgenberg(bei Interlaken) / Schweiz
    Beiträge
    4.787
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    wen man beim if keien klammern setzt gilt es nur für den nächsten befehl..

    fenn man if ();
    mach also mit ; dann erwartet es ein

    endif;

  9. #9
    HTML Newbie
    Themenstarter

    Registriert seit
    02.08.2006
    Beiträge
    4
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Danke Junx & MädLs!
    ohne euch hätt ichs net geschafft ^^
    mfg
    ~~~ Mfg Jack Daniels ~~~

Ähnliche Themen

  1. Kategorien mehrer Bilder gleichzeitig ändern
    Von Gizzy im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 05.05.2008, 15:01
  2. Frage zum Erstellen von Kategorien beim Rapidforum
    Von Maldini im Forum HTML & CSS Forum
    Antworten: 1
    Letzter Beitrag: 11.11.2007, 14:03
  3. Einzelne Kategorien mit Passwort versehen
    Von FIL im Forum Webanwendungen - Webapplikationen
    Antworten: 1
    Letzter Beitrag: 06.09.2007, 23:12
  4. Unterkategorien in den Google Suchresultaten
    Von Sojo im Forum Promotion - SEO - Suchmaschine (Google & Co) – Mitarbeiter & Linkpartnersuche
    Antworten: 7
    Letzter Beitrag: 12.04.2007, 00:07
  5. Viele gäste
    Von Lion im Forum Off Topic und Quasselbox
    Antworten: 19
    Letzter Beitrag: 24.02.2005, 14:51

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •