Sto utilizzando questa funzione
Codice PHP:
function category_list($category_parent_id = 0 , $visualizzazione = 0 , $level = 0 , $id_cat = "" ) {
//mi connetto a MySQL
include_once ("../connessione.php");
//Dichiaro la variabile
static $cats;
//Evito di ripetere la query
if ( ! is_array( $cats ) ) {
$sql ="SELECT * FROM ".$_CONFIG['table_categorie'];
$res = mysql_query( $sql );
$cats = array();
//salvo i valori in un array
while ( $cat = mysql_fetch_assoc( $res ) ) {
$cats[] = $cat;
}
}
// creo l'array
$list_items = array();
if ($visualizzazione==0){
//Foreach array
foreach ( $cats as $cat ) {
// se non corrispondono va avanti
if ( ( int ) $cat['id_parent'] !== ( int ) $category_parent_id ) {
continue;
}
// apro la lista
$list_items[] = '[*]';
// creo i link della categoria
$list_items[] = '<a href="#' . $cat['id_cat'] . '">';
$list_items[] = $cat['categoria'];
$list_items[] = '</a>';
// richiamo la funzione con il nuovo id
$list_items[] = category_list( $cat['id_cat'] );
// chiudo la lista
$list_items[] = '';
}
}elseif($visualizzazione==1){
//Foreach array
foreach ( $cats as $cat ) {
//indentazione
$indentazione=str_repeat('——',$level);
// se non corrispondono va avanti
if ( ( int ) $cat['id_parent'] !== ( int ) $category_parent_id ) {
continue;
}
// creo i link della categoria
//mostro selected se corrisponde all'id passato come parametro
if ($id_cat==$cat['id_cat']){
$list_items[] = '<option selected=\"selected\" value="'.$cat['categoria'].'">';
}else{
$list_items[] = '<option value="'.$cat['categoria'].'">';
}
$list_items[] = $indentazione."".$cat['categoria'];
$list_items[] = '</option>';
// richiamo la funzione con il nuovo id
$list_items[] = category_list( $cat['id_cat'], 1 , $level+1, $id_cat);
}
}elseif($visualizzazione==2){
//Foreach array
foreach ( $cats as $cat ) {
//indentazione
$indentazione=str_repeat('——',$level);
// se non corrispondono va avanti
if ( ( int ) $cat['id_parent'] !== ( int ) $category_parent_id ) {
continue;
}
// creo i link della categoria
//mostro selected se corrisponde all'id passato come parametro
if ($id_cat==$cat['id_cat']){
$list_items[] = '<option selected=\"selected\" value="'.$cat['id_cat'].'">';
}else{
$list_items[] = '<option value="'.$cat['id_cat'].'">';
}
$list_items[] = $indentazione."".$cat['categoria'];
$list_items[] = '</option>';
// richiamo la funzione con il nuovo id
$list_items[] = category_list( $cat['id_cat'], 2 , $level+1, $id_cat);
}
}
// converto in stringa
$list_items = implode( '', $list_items );
// se la lista è vuota non la mostro
if ( '' == trim( $list_items ) ) {
return '';
}
// altrimenti mostro la lista di link
#echo $list_items;
return $list_items;
}
Il problema è che se la chiamo in questo modo va tutto bene:
Codice PHP:
echo "<select>".category_list(0,1,0,"")."</select>";
Mentre non visualizza nulla se la richiamo dentro ad un' altra funzione, ad esempio
Codice PHP:
function prova(){
.....
.....
echo "<select>".category_list(0,1,0,"")."</select>";
.....
.....
}