ARRAY für PHP Menü

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

  • ARRAY für PHP Menü

    Hallo,
    ich habe ein kleines Problem und nach Stundenlangen im Kreis drehen fällt mir nichts mehr dazu ein.

    Ich habe alles aus google rausgepresst aber nichts passendes gefunden, vlt bin ich ja nur zu dumm zum googeln.

    Ich möchte ein Menü programmieren,
    welches erkennt zu welchem Menüpunkt welche unterpunkte gehören.
    Weil es sehr umfangreich ist habe ich mich dafür entschieden es mit einer MySQL Datenbank festzuhalten.

    Soweit sogut, funktioniert auch alles,
    aber jetzt zum eigentlichen Problem,
    weil ich mir nicht wirklich viel Arbeit gespart habe wenn ich jetzt doch jeden Array per Hand eingeben muss habe ich nach einer Lösung gesucht, und auch gefunden,
    nur funktioniert diese ja mal garnicht, hier ein Auszug:
    while (list($id,$bezeichnung, $branche) = mysql_fetch_row($erg_branchen))
    while ($nav_ary_branchen = array("$bezeichnung", "branchen.php", 0))

    $nav_ary = array
    (
    array("Branchen", "branchen.php", 0),
    array("Lösungen", "loesungen.php", 0),
    );

    $ary = array_combine($nav_ary_branchen, $nav_ary);

    foreach ($ary as $key => $value)
    {
    echo insert_link($value[0], $value[1], $current, $value[2]);
    }


    function insert_link($key, $value, $current, $ebene=0)
    Der Fehler liegt eindeutig in der 2. Zeile,
    while ($nav_ary = array("$bezeichnung", "branchen.php", 0))
    Aber auf diese Weise habe ich nur eine schier Enloskette "ARRAY" bekommen.

    Und mit einer anderen änderung die ich im Momment leider nichtmehr nachvollziehen kann
    erhielt ich eine Endloskette große und kleine "B" und als link wurde ein "r" oder "a" angegeben.

    Ich hoffe ich habe niemand verwirrt und alles ausreichend beschrieben,
    danke schonmal das ihr euch mein Problem durchgelesen habt und mir vlt helft, freundliche Grüße, tschüss.

  • #2
    Hi,

    dein Code ist ziemlich dirty :-D

    zu deinem Code:

    PHP-Code:
    // irgendwie fehlen geschweifte Klammern?

    // entsteht hier kein Fehler?
    // sobald keine Reihe da ist, gibt mysql_fetch_row NULL zurück und PHP veruscht das auf die list-Elemente aufzuteilen... dirty dirty :-D
    while (list($id,$bezeichnung$branche) = mysql_fetch_row($erg_branchen))

    // naja das $nav_ary_branchen Array wird jede Schleife neu zugewiesen -> Unendlichschleife
    // was du suchst ist foreach( $arry as $key => $element) bzw. foreach( $arry as $element)...
    while ($nav_ary_branchen = array("$bezeichnung""branchen.php"0)) 

    // dieses Array könnte man außerhalb der Schleifen definieren, damit es nicht immer neu gesetzt werden muss
    $nav_ary = array
    (
    array(
    "Branchen""branchen.php"0), 
    array(
    "Lösungen""loesungen.php"0),
    );

    $ary array_combine($nav_ary_branchen$nav_ary);

    // was auch immer du damit machen möchtest... ich verstehs auf Anhieb nicht
    foreach ($ary as $key => $value)
    {
    echo 
    insert_link($value[0], $value[1], $current$value[2]);
    }

    // das hier genauso wenig
    function insert_link($key$value$current$ebene=0
    mach's doch einfach so:

    PHP-Code:
    $obj NULL;
    while (
    $obj mysql_fetch_object($erg_branchen))
    {
    $id $obj -> id;
    $bezeichnung $obj -> bezeichnung;
    $branche $obj -> branche;

    $datenArray = array("$bezeichnung""branchen.php");
    foreach (
    $datenArray as $nav_ary_branchen
    {
      
    // something...
    }

    Hoffe ich konnte die helfen!
    Sieht allerdings aus, als ob deine inner while Schleife nie beendet wird!

    - Philipp
    Find Parties?
    Partysuche

    Kommentar


    • #3
      Hey danke ..

      Sieht schonmal übersichtlicher aus =)
      Ja mein quelltext ist wirr, weil ich mir das alles aus Toturials zusammen suche,
      ich habe leider noch nicht eine Stunde Programmier Untericht,
      aber man wächst an seinen Aufgaben.

      Leider gibt das WWW kein vergleichbares Toturial,
      aso ich habe grade den Codeschnipsel eingefügt,
      aber habe dafür andere Fehlermeldungen erhalten, so das mir klar wurde, um das ihr mir besser helfen könnt fehlt der Rest des Quelltextes, aber jetzt bitte nicht lachen =)

      PHP-Code:
      <? 
      $server = "Server"; 
          $user = "User"; 
          $pass = "mypassword";
          $database = "database" ; 
          $table_brancheuloesungen="Table";
          
          $verbindung = @mysql_connect("$server","$user","$pass");

          if (!$verbindung) 
          {
              echo "Keine Verbindung m&ouml;glich!\n";
              exit;
          }
          
          $abfrage_branche = "SELECT * from $table_brancheuloesungen WHERE branche=1 ORDER BY bezeichnung";
          $erg_branchen = mysql_db_query("$database",$abfrage_branche,$verbindung);

          
          list($id, $bezeichnung, $branche) = mysql_fetch_row($erg_branchen);

          while (list($id,$bezeichnung, $branche) = mysql_fetch_row($erg_branchen)) 
          while ($nav_ary_branchen = array("$bezeichnung", "branchen.php", 0))     
          
              $nav_ary = array
              (
              array("Branchen", "branchen.php", 0),
              array("$bezeichnung", "branchen.php", 1),
              array("$produkt", "$link", 2),
              array("L&ouml;sungen", "loesungen.php", 0),
              array("$loesung", "loesungen.php", 1),
              array("$produkt", "$link", 2),
              );
              
              $ary = array_combine($nav_ary_branchen, $nav_ary);
          
          foreach ($ary as $key => $value)
              {
                  echo insert_link($value[0], $value[1], $current, $value[2]);
              }


      function insert_link($key, $value, $current, $ebene=0)
      {
        $menuclass = "menu";
        if ($ebene > 0)
          {
              $menuclass = "submenu";
          }
          $result = '<div class="'.$menuclass;
          if ($ebene > 0)
              {
                  $result .= ', indent'.$ebene.'">';
              } 
          else 
              {
                  $result .= '">';
              }
          if ($key == $current)
              {
                  $result .= $key;
              } 
          else 
          {
              $result .= '<a href="' . $value. '" class="'.$menuclass.'">' .
              $key .'</a>';
          }
          $result .= '</div>';
          return $result;

          mysql_close($verbindung);    
      }
      function zeige_navigation($current){};

      ?>
      Also Heute habe ich sowieso keine Zeit mehr mich näher dazu zu beschäfftigen, damit warte ich bis zum Wochenende,
      darum danke schonal vorneweg für eure Bemühungen ..

      mfg. Frank

      Kommentar

      Lädt...
      X