Newsgroup: it.comp.www.php
Titolo: Problema Funzione

Ciao a tutti
Premetto che ho iniziato oggi con php e mysql, quindi scusatemi se il mio
problema è banale...
allora
ho fatto una tabella in mysql (category) così strutturata:
category
    id
    name
    description
    parent _id
il parent id mi serve per gestire le sottocategorie.
a questo punto ho compilato la tabella con alcuni valori
id: 1 -> name: categoria1 -> parent_id:0
id: 2 -> name: categoria2 -> parent_id:1
id: 3 -> name: categoria3 -> parent_id:2
id: 4 -> name: categoria4 -> parent_id:3
id: 5 -> name: categoria5 -> parent_id:4
dove se il parent_id è 0, vuol dire che non è figlia di nessuna categoria
e fin quà tutto bene
a questo punto voglio creare una funzione che dato l'id della categoria mi
scriva tutte le categorie figlie.
ad esempio se la funzione è: generalistacategorie, passandogli:
    generalistacategorie(5)
deve scrivermi:
    Categoria5->Categoria4->Categoria3->Categoria2-Categiria1
per fare questo ho fatto le funzioni che vi riporto di seguito:
<?php
mysql_select_db($database_MyConnection, $MyConnection);
$query_categorie = "select * from category";
$categorie = mysql_query($query_categorie, $MyConnection) or
die(mysql_error());
$row_categorie = mysql_fetch_assoc($categorie);
$totalRows_categorie = mysql_num_rows($categorie);
function scrivicategoria($f)
{
$padre_catp = $f;
//if (isset(0)) {
//  $padre_catp = (get_magic_quotes_gpc()) ? 0 : addslashes(0);
//}
mysql_select_db($database_MyConnection, $MyConnection);
$query_catp = sprintf("select * from category where id=%s", $padre_catp);
$catp = mysql_query($query_catp, $MyConnection) or die(mysql_error());
$row_catp = mysql_fetch_assoc($catp);
$totalRows_catp = mysql_num_rows($catp);
print $row_catp['name'];
//$parent=$row_catp['parent_id'];
//$f2=$parent;
//echo "     parente: $f2";
}
function trovapadre($f)
{
$padre_catp = $f;
mysql_select_db($database_MyConnection, $MyConnection);
$query_catp = sprintf("select * from category where id=%s", $padre_catp);
print "<font color=green>query trovapadre: $query_catp </font><br>";
$catp = mysql_query($query_catp, $MyConnection) or die(mysql_error());
$row_catp = mysql_fetch_assoc($catp);
$totalRows_catp = mysql_num_rows($catp);
$parent=$row_catp['parent_id'];
if ($parent!=0)
 {
 $query_catp = sprintf("select * from category where id=%s", $parent);
 print "<font color=#9900FF#>query scrivipadre: $query_catp </font><br>";
 $catp = mysql_query($query_catp, $MyConnection) or die(mysql_error());
 $row_catp = mysql_fetch_assoc($catp);
 $totalRows_catp = mysql_num_rows($catp);
 print $row_catp['name'];
 $parent=$row_catp['parent_id'];
 $f2=$parent;
  echo "<font color=blue> parente: $parent / f2: $f2 </font>";
 }
}
function generalistacategorie($f2)
{
$conta=0;
scrivicategoria($f2);
print "<b> -> </b>";
while ($f2 != 0)
 {
  trovapadre($f2);
  print "<b> -> </b><br>";
  $conta=$conta+1;
  if ($conta == 20)
   {
   break;
   }
 }
}
?>
il problema è che richiamando la funzione:
<?
 generalistacategorie(5);
?>
nel momento in cui entra nel ciclo while non mi aggiorna la variabile per il
nuovo calcolo della categoria padre (almeno credo)
chi mi aiuta a risolvere il problema?
Grazie a tutti
Roberto

 {
--  	trovapadre($f2);
++	$f2 = trovapadre($f2);
...e forse la stessa cosa dovrebbe fare scrivicategoria().
Leonardo

 Leonardo
grazie !
hai ragione, ora funziona :)
Roberto