Ankündigung

Einklappen
Keine Ankündigung bisher.

Undefined offset / verschachtelte For-Schleifen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Undefined offset / verschachtelte For-Schleifen

    Hallo,

    ich hoffe meine Problembeschreibung wird verständlich, ich bin gerade am überlegen wie ich mein Problem am besten rüber bringe ... aber, ich versuche es einfach mal

    Ich habe 3 For-Schleifen die jeweils anzeigen: Hauptkategorie, Subkategorie, Menüpunkte.

    Die äußere For-Schleife läuft Perfekt durch, die mittlere läuft 1x durch und die ganz innen auch 1x = Danach kommt der Fehler, ich sehe den Fehler aber einfach nicht ....

    Beispiel:

    Hauptkategorie1
    - Subkategorie
    - Menüpunkt
    - Menüpunkt
    - Menüpunkt
    - "Subkategorie 2 ... Fehler ... Undefined offset ..
    - Menüpunkt ... Undefined offset ..
    - Menüpunkt ... Undefined offset ..
    Hauptkategorie2 (funktioniert)
    Hauptkategorie3 (funktioniert)

    Lasse ich die 3te For-Schleife weg Funktionieren Hauptkategorie und Subkategorie Anzeige perfekt nur sobald ich die 3te Schleife für Menüounkte einfüge ....

    Ich hoffe ich habe den Fehler einigermaßen verständlich rüber gebracht ansonsten sagt mir bitte kurz was ich besser erklären soll und ich werde versuchen es nachzubessern.

    Genaue Fehlermeldung: Notice: Undefined offset: 1 in inc_kategorien_verwalten.php on line 68

    ... Theoretisch ... sollte die Variable definitiv gefüllt sein (funktioniert ja wie gesagt mit zwei Schleifen) ... der Fehler wiederholt sich nach dem zweiten Durchgang ziemlich oft ... habe jetzt aber nur den ersten hier rein geschrieben, bei den weiteren unterscheidet sich lediglich die Zeile.

    Ich habe die Stelle im Code markiert wo (ab dem zweiten durchlauf) der erste Fehler auftritt:

    PHP-Code:
    ///////////////////////////////////////////////////////////
    // Funktion: Echo Uebersicht
    // Zeigt die Übersicht von Kategorien verwalten an
    ///////////////////////////////////////////////////////////

    function echo_uebersicht()
    {

    echo 
    '<div class="Content">
          <div class="Content-Head">
            <h2><strong>Grundeinstellungen:</strong></h2>
          </div>
          <div class="Content-umrandung">
            <div class="Content-Inhalt">'
    ;

    // Hauptkategorien aus der Datenbank holen und zählen

    $sql "SELECT * FROM `navi_hauptkategorien` ORDER BY OrderBy ASC";
    $db_erg mysql_query$sql ); if ( ! $db_erg ) {die('Funktion: Echo_Navigation Abfrage #1 - MySQL Error ... ' mysql_error());}
    $subkategorie = array(array());
    $a 0; while($feldhauptkategorie mysql_fetch_array($db_erg))
    {
       
    $hauptkategorie[$a]['id']       = $feldhauptkategorie['ID'];
       
    $hauptkategorie[$a]['name']     = $feldhauptkategorie['Name'];
       
    $a++;
    }
    mysql_free_result$db_erg );

    $hauptkategoriecount count($hauptkategorie);

    // Hauptkategorien Anzeigen

    for($hauptkategorienr 0$hauptkategorienr $hauptkategoriecount $hauptkategorienr++)
    {
    echo 
    '<fieldset>';

    echo 
    '<legend>'$hauptkategorie[$hauptkategorienr]['name'] .'
    <a href=""><img class="adminimg" src="http://www.php.de/_img/delete-page-green.gif" width="14" height="14" /></a>
    <a href=""><img class="adminimg" src="http://www.php.de/_img/edit-page-green.gif" width="14" height="14" /></a>
    <a href=""><img class="adminimg" src="http://www.php.de/_img/add-page-green.gif" width="14" height="14" /></a>
     </legend><div class="admin_spacer1"></div>'
    ;

    // Subkategorien aus der Datenbank holen und zählen

    $sql "SELECT * FROM `navi_subkategorien` WHERE Hauptkategorie = '"$hauptkategorie[$hauptkategorienr]['id'] ."' ORDER BY OrderBy ASC";
    $db_erg mysql_query$sql ); if ( ! $db_erg ) {die('Funktion: Echo_Navigation Abfrage #1 - MySQL Error ... ' mysql_error());}
    $subkategorie = array(array());
    $b 0; while($feldsubkategorie mysql_fetch_array($db_erg))
    {
       
    $subkategorie[$b]['id']       = $feldsubkategorie['ID'];
       
    $subkategorie[$b]['name']     = $feldsubkategorie['Name'];
       
    $b++;
    }
    mysql_free_result$db_erg );

    $subkategoriecount count($subkategorie);

    // Subkategorien Anzeigen

    if(!empty($subkategorie[0]['name']))
    {
    for(
    $subkategorienr 0$subkategorienr $subkategoriecount $subkategorienr++)
    {

    /// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    /// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // Bei der nächsten Variable kommt der Fehler
    // '.$subkategorie[$subkategorienr]['name'].'
    /// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    /// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    echo '<hr /><div class="admin_punkt">

    <span class="admin_kat">'
    .$subkategorie[$subkategorienr]['name'].'
    <a href=""><img class="adminimg" src="http://www.php.de/_img/delete-page-green.gif" width="14" height="14" /></a>
    <a href=""><img class="adminimg" src="http://www.php.de/_img/edit-page-green.gif" width="14" height="14" /></a>
    <a href=""><img class="adminimg" src="http://www.php.de/_img/add-page-green.gif" width="14" height="14" /></a>'
    ;
    $letztesubkategorie $subkategoriecount 1;
    if (
    $subkategoriecount '1' and $subkategorienr != $letztesubkategorie ){echo'<a href=""><img class="adminimg" src="http://www.php.de/_img/down-green.gif" width="14" height="14" /></a>';}
    if (
    $subkategoriecount '1' and $subkategorienr != '0' ){echo'<a href=""><img class="adminimg" src="http://www.php.de/_img/up-green.gif" width="14" height="14" /></a>';}
    echo 
    '</span></div><hr />';

    // Menüpunkte aus der Datenbank holen

    $sql "SELECT * FROM `navi_menuepunkte` WHERE Subkategorie = '"$subkategorie[$subkategorienr]['id'] ."' ORDER BY OrderBy ASC";
    $db_erg mysql_query$sql ); if ( ! $db_erg ) {die('Funktion: Echo_Navigation Abfrage #1 - MySQL Error ... ' mysql_error());}
    $subkategorie = array(array());
    $c 0; while($feldmenuepunkte mysql_fetch_array($db_erg))
    {
       
    $menuepunkte[$c]['id']       = $feldmenuepunkte['ID'];
       
    $menuepunkte[$c]['name']     = $feldmenuepunkte['Name'];
       
    $c++;
    }
    mysql_free_result$db_erg );

    $menuepunktecount count($menuepunkte);

    // Menüpunkte anzeigen Anzeigen

    if(!empty($menuepunkte[0]['name']))
    {
    for(
    $menuepunktenr 0$menuepunktenr $menuepunktecount $menuepunktenr++)
    {
    echo 
    '<div class="admin_punkt">
    <span class="admin_subkat">'
    .$menuepunkte[$menuepunktenr]['name'].'
    <a href=""><img class="adminimg" src="http://www.php.de/_img/delete-page-green.gif" width="14" height="14" /></a>
    <a href=""><img class="adminimg" src="http://www.php.de/_img/edit-page-green.gif" width="14" height="14" /></a>
    <a href=""><img class="adminimg" src="http://www.php.de/_img/down-green.gif" width="14" height="14" /></a>
    <a href=""><img class="adminimg" src="http://www.php.de/_img/up-green.gif" width="14" height="14" /></a>
    </span></div>'
    ;



    }}}}
    echo 
    '</fieldset><div class="admin_spacer2"></div>';


  • #2
    Bahhh, hier ist der Fehler ... hatte bei allen 3 Arrays $subkategorie = array(array()); ...

    Kommentar


    • #3
      Was hälst du davon eine Funktion zu bauen, die du Rekursiv aufrufst und dir die Daten als Baum anzeigt. Das sollte vermutlich am einfachsten sein. Dann läuft es auch beliebig vielen Ebenen.

      Kommentar


      • #4
        Wie man an meinem Code wahrscheinlich sieht bin ich jetzt echt nicht der PHP-Freak sondern eigne mir nach und nach immer mehr Sachen an ...

        Also ich habe schon "einen Baum" aber ich muss gestehen dass ich meinen Code selbst etwas unübersichtlich finde und mich freuen würde wenn es eine bessere Technik geben würde (bzw. gibt es bestimmt ^^)

        Kannst DU mir vielleicht ein Beispiel geben für "die du Rekursiv aufrufst"? Weil ich glaube ehrlich gesagt ich werde in einem Jahr oder so Probleme haben wenn ich vor habe was an der Funktion zu ändern

        Kommentar

        Lädt...
        X