php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.11.2005, 18:16  
Benutzer
 
Registriert seit: 12.05.2004
Beiträge: 86
ThaRider
Standard 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 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 21.11.2005, 18:45  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

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.
Zergling-new ist offline  
Alt 21.11.2005, 18:51  
Benutzer
 
Registriert seit: 12.05.2004
Beiträge: 86
ThaRider
Standard

Zitat:
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?
ThaRider ist offline  
Alt 21.11.2005, 18:54  
Gast
 
Beiträge: n/a
Standard

http://www.php.net/manual/de/functions.php



/edit:

Zitat:
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?
 
Alt 21.11.2005, 19:02  
Benutzer
 
Registriert seit: 12.05.2004
Beiträge: 86
ThaRider
Standard

Zitat:
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.
ThaRider ist offline  
Alt 21.11.2005, 19:51  
Benutzer
 
Registriert seit: 12.05.2004
Beiträge: 86
ThaRider
Standard

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;  
}  
?>
ThaRider ist offline  
Alt 21.11.2005, 21:16  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

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.
Zergling-new ist offline  
Alt 21.11.2005, 21:47  
Benutzer
 
Registriert seit: 12.05.2004
Beiträge: 86
ThaRider
Standard

Zitat:
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
ThaRider ist offline  
Alt 21.11.2005, 21:48  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Und wie rufst du die Funktion auf?
xabbuh ist offline  
Alt 21.11.2005, 21:54  
Benutzer
 
Registriert seit: 12.05.2004
Beiträge: 86
ThaRider
Standard

Zitat:
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
ThaRider ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
JS: Einführung - Javascript im Schichtenmodell nikosch Tutorials 4 11.04.2009 17:06
Probleme mit der Funktion - ImageTTFText() Hawk PHP Tipps 2008 1 01.10.2007 10:57
Probleme mit der Funktion - ImageTTFText() Hawk PHP Tipps 2008 9 26.09.2007 20:59
probleme mit max() funktion Crypi Datenbanken 4 09.01.2007 14:37
Probleme mit der mail() Funktion Kein Genie PHP Tipps 2006 2 22.10.2006 16:37
Funktion macht Probleme mokus PHP Tipps 2006 19 20.06.2006 03:16
Probleme mit einer Funktion ThaRider PHP Tipps 2006 3 06.04.2006 15:01
PHP-GTK Tutorial Beitragsarchiv 9 02.11.2005 21:07
[Erledigt] probleme mit Funktion PHP Tipps 2005-2 3 06.10.2005 23:53
Rückgabewert einer rekrusiven Funktion PHP-Fortgeschrittene 7 06.10.2005 18:44
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
probleme mit date funktion PHP Tipps 2005-2 8 02.08.2005 18:51
Funktion in einer Funktion aufrufen? PHP Tipps 2005-2 11 14.06.2005 15:14
[Erledigt] Array-Übergabe in Funktion PHP Tipps 2005 1 08.05.2005 21:05
[Erledigt] Wie kann ich beliebig viele Werte an eine Funktion übergeben PHP Tipps 2005 11 25.01.2005 10:44

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
cat_id funktion, getsubcats, led-lichtschlauch mitfunktion, rekursive datenbankabfrage mit parentid

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:46 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.