Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme mit einer Funktion

Einklappen

Neue Werbung 2019

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

  • ThaRider
    hat ein Thema erstellt Probleme mit einer Funktion.

    Probleme mit einer Funktion

    Brauch ma wieder etwas Hilfe, da ich anscheinend total auf dem Schlauch stehe.


    Und zwar habe ich eine Datenbank-Tabelle in der Kategorien gespeichert sind.

    Nun m�chte ich wenn ich auf eine Seite gehe, alle Kategorien die �ber der momentan ausgew�hlten liegen, durch eine Datenbankabfrage ermitteln, in ein Array schreiben und anschlie�end auch ausgeben lassen.


    Mein bisheriger Ansatz:

    PHP-Code:
     
    $cat_id
    =18;  
    $cat_name=check_sub_cats($cat_id);  
     
    function 
    check_sub_cats($cat_id)  
    {  
    $cat_name=array();  
     
    $sql="select cat_id,cat_parent_id,cat_name from shop_categories where cat_parent_id='$cat_id' ";  
    $res=mysql_query($sql);  
     
      while(
    $category=mysql_fetch_array($res))  
      {  
      
    $cat_name[]=$category['cat_name'];  
     
        if(
    mysql_num_rows($res)>0)  
        {  
        
    $cat_name=check_sub_cats($category['cat_id']);  
        }  
      }  



    Vielleicht ist jemand von euch so lieb und sagt mir wo die Fehler liegen.

  • ThaRider
    antwortet
    Zitat von xabbuh
    Und wie rufst du die Funktion auf?
    mittels
    PHP-Code:
    <?
    getSubCats(18, &$categories);
    ?>

    Hab's jetzt aber hinbekommen!

    Code:
    PHP-Code:
    <?
    function getSubCats($cat_id, $categories)
    {
      $sql = "SELECT cat_parent_id, cat_name FROM shop_categories WHERE cat_id = '$cat_id' LIMIT 1";
      $res = mysql_query($sql);
      $cur = mysql_fetch_array($res);
      if (mysql_num_rows($res) == 1) {
        $categories[] = $cur['cat_name'];
        getSubCats($cur['cat_parent_id'], &$categories);
      }
    }
    $categories = array(); // hier stehen gleich deine Kategorie-Namen drin
    getSubCats(18, &$categories);
    ?>
    Nochmals DANKE für die Hilfe

    Einen Kommentar schreiben:


  • xabbuh
    antwortet
    Und wie rufst du die Funktion auf?

    Einen Kommentar schreiben:


  • ThaRider
    antwortet
    Zitat von Zergling
    Hallo,

    du hast das Prinzip von Rekursion nicht verstanden. Du musst dir die Ergebnisse alle merken, das machst du mit einem

    Code:
    check_sub_cats(..)
    nicht. Du fängst den return-Wert nicht auf.

    Code:
     
    function getSubCats($cat_id, $categories)
    {
      $sql = "SELECT cat_parent_id, cat_name FROM shop_categories WHERE cat_id = '$cat_id' LIMIT 1";
      $res = mysql_query($sql);
      if (mysql_num_rows($res) == 1) {
        $categories[] = $cur['cat_name'];
        getSubCats($cur['cat_parent_id']);
      }
    }
    $categories = array(); // hier stehen gleich deine Kategorie-Namen drin
    getSubCats(6, &$categories);
    Irgendwie hat grad mein Kopf gestreikt, deshalb Lösung mit Referenz.
    Danke für deine Hilfe!

    Wenn ich die Funktion aufrufe, erhalte ich jedoch folgende Fehlermeldung:
    Code:
    Warning: Missing argument 2 for getSubCats() in C:\Programme\xampp\htdocs\test.php on line 52

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Hallo,

    du hast das Prinzip von Rekursion nicht verstanden. Du musst dir die Ergebnisse alle merken, das machst du mit einem

    Code:
    check_sub_cats(..)
    nicht. Du fängst den return-Wert nicht auf.

    Code:
     
    function getSubCats($cat_id, $categories)
    {
      $sql = "SELECT cat_parent_id, cat_name FROM shop_categories WHERE cat_id = '$cat_id' LIMIT 1";
      $res = mysql_query($sql);
      if (mysql_num_rows($res) == 1) {
        $categories[] = $cur['cat_name'];
        getSubCats($cur['cat_parent_id']);
      }
    }
    $categories = array(); // hier stehen gleich deine Kategorie-Namen drin
    getSubCats(6, &$categories);
    Irgendwie hat grad mein Kopf gestreikt, deshalb Lösung mit Referenz.

    Einen Kommentar schreiben:


  • ThaRider
    antwortet
    Hat denn niemand eine Idee?


    So sieht mein aktueller Code nun aus:

    PHP-Code:
    <?  
    function check_sub_cats($cat_id)  
    {  
    //$cat_name=array();  
     
    $sql="select cat_id,cat_parent_id,cat_name from shop_categories where cat_id='$cat_id' ";  
    $res=mysql_query($sql);  
     
      while($category=mysql_fetch_array($res))  
      {  
      $cat_name[]=$category['cat_name'];  
     
        $sql2="select cat_id,cat_parent_id,cat_name from shop_categories where cat_id='".$category['cat_parent_id']."' ";  
        $res2=mysql_query($sql2);  
        $cat2=mysql_fetch_array($res2);  
        if(mysql_num_rows($res2)>0)  
        {  
        check_sub_cats($cat2['cat_parent_id']);  
        }  
      }  
      return $cat_name;  
    }  
    ?>

    Einen Kommentar schreiben:


  • ThaRider
    antwortet
    Zitat von karl-150
    Wie definierst Du funktionieren? Was soll die Funktion machen, was sie nicht tut? Welche Fehlermeldung erhältst Du?
    Also, ich möchte anhand der aktuellen Kategorie-ID alle Namen der darüber liegenden Kategorien ermitteln und in ein Array schreiben, damit ich Sie dann ausgeben kann.

    Nehmen wir mal an, ich bin gerade in der Kategorie mit der ID 18, dann sollte mittels Datenbankabfrage ermittelt werden, ob eine weitere Kategorie überhalb der Kategorie 18 liegt ( anhand der Parent ID der Kategorie 18 ).
    Sollte über der soeben ermittelten Oberkategorie wiederrum eine weitere Kategorie liegen, soll die Funktion solange ausgeführt werden, bis keine weiteren Oberkategorien mehr vorhanden sind ( Parent ID = 0 ).

    Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    http://www.php.net/manual/de/functions.php



    /edit:

    Zitat von ThaRider
    Vielleicht kannst du mir ja sagen, wie ich die Funktion zum funktionieren bringe?
    Wie definierst Du funktionieren? Was soll die Funktion machen, was sie nicht tut? Welche Fehlermeldung erhältst Du?

    Einen Kommentar schreiben:


  • ThaRider
    antwortet
    Zitat von Zergling
    Du must den Fehler schon nennen.
    Als Hinweis trotzdem: Deine rekursive Funktion gibt nichts zurück (void). Da macht die Zuweisung $cat_name = check_sub_cats($cat_id); keinen Sinn.
    Danke erstmal für deine Antwort!

    Ich weiß, dass Sie nichts zurückgibt und genau da liegt ja das Problem an der ganzen Sache.
    Vielleicht kannst du mir ja sagen, wie ich die Funktion zum funktionieren bringe?

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Du must den Fehler schon nennen.
    Als Hinweis trotzdem: Deine rekursive Funktion gibt nichts zurück (void). Da macht die Zuweisung $cat_name = check_sub_cats($cat_id); keinen Sinn.

    Einen Kommentar schreiben:

Lädt...
X