Newsgroup: it.comp.www.php
Titolo: register_globals OFF

Salve,
Ho un problema.
Tre anni fa creai uno script in php in cui creavo un menu dinamico con
query a DB.
Adesso cambiato server e il menu non funziona.
Scoperto che la causa è register_globals OFF.
Letto documentazione su 
www.php.net
, ma non riesco a risolvere questo
problema:
while ($riga=mysql_fetch_array($risultati))
       {
          $nome=$riga["nome"];
          $id=$riga["id"];
          $numArt1=$riga["num_art"];
ecc....
Se prima nella variabile $riga inserivo i dati che chiedevo al Database
e poi li assegavo alle variabili $nome, $id... Adesso cosa metto al
posto di $riga?
Forse:
while ($_POST=mysql_fetch_array($risultati))
       {
          $nome=$_POST["nome"];
          $id=$_POST["id"];
          $numArt1=$_POST["num_art"];
Vorrei una conferma, non sono riuscito a trovare esempi pratici
attraverso ricerche nel web.
Se oltre a darmi un parere su questo problema ci fosse chi mi indicasse
una fonte dove potermi documentare meglio su questo specifico problema.
Grazie,
Vincenzo

 ecc....
posta l'errore .. perchè non credo che qui ci sia errore ... :)
--
!!! OFFERTA IRRIPETIBILE !!!
Muori oggi avrai uno sconto del 50%.
[CapoBecchino] - hotmail/msn: capobecchino [@] hotmail [.] com

Errore è che il menu non compare, non viene generato in modo dinamico.
Amministratore del server mi ha consigliato di fare un debug su parti
dello script per scoprire cosa non funziona.
Ma come faccio il debug: con delle echo?
Sono ancora in alto mare.
Grazie dlla risposta,
Vincenzo

 Ma come faccio il debug: con delle echo?
beh| mi sembra il minimo .. ma attiva anche la visualizzazione degli 
errori ..
	ini_set("display_errors",1);
	error_reporting(E_ALL);
cosi vedi eventuali errori ..
Dalle poche notizie che dai sembra essere qualche variabile non passata 
e quindi non carica qualcosa (visto che hai specificato che ti sei reso 
conto che č il register_globals) .. ma se non posti qualche pezzo di 
codice mi sa che in alto mare ci resti per un bel pezzo .. :D
Posta almeno come stampi il menů, come lo richiami ..
--
SEZIONE PICCOLI ACCORGIMENTI: "Chiamami un tassě", mi disse prima di 
morire e sulla sua lapide ho scritto: "Qui riposa in pace Untassě".


Ottimo consiglio quello di attivare la visualizzazione degli errori:
infatti come è come hai intuito qualche variabile non viene passata e
quindi non carca qualcosa.
Non so cosa fare, cmq posto errori, come stampo il menu e come lo
richiamo.
GRAZIE!!!
Riporto errori:
Notice: Undefined variable: p in /www/database/treemenu.php on line 198
Notice: Undefined variable: explevels in /www/database/treemenu.php on
line 201
Notice: Undefined variable: explevels in /www/database/treemenu.php on
line 240
Notice: Undefined offset: 2 in /www/database/treemenu.php on line 349
Quando chiamo il file menu.php aggiungo menu.php?p=0|#0
Il file menu.php è composto da un require:
<?php
  /*********************************************/
  /*  Include tree code                        */
  /*********************************************/
  require "treemenu.php";
?>
Tutto il menu viene generato dal file treemenu.php che riporto di
seguito.
Riporto il codice che ho usato per creare menu dinamico (adattai il
codice da uno script in javascript)
<?php
  /*********************************************/
  /*  PHP TreeMenu 1.1                         */
  /*                                           */
  /*  Author: Bjorge Dijkstra                  */
  /*  email : 
bjo...@gmx.net
                   */
  /*                                           */
  /*  Placed in Public Domain                  */
  /*                                           */
  /*********************************************/
  /*********************************************/
  /*  Settings                                 */
  /*********************************************/
  /*                                           */
  /*  $treefile variable needs to be set in    */
  /*  main file                                */
  /*                                           */
  /*********************************************/
  /*********************************************/
  /*                                           */
  /* - Multiple root node fix by Dan Howard    */
  /*                                           */
  /*********************************************/
  if(isset($PATH_INFO)) {
	  $script       =  $PATH_INFO;
  } else {
	  $script	=  $SCRIPT_NAME;
  }
ini_set("display_errors",1);
error_reporting(E_ALL);
  $img_expand   = "cartella_chiusa_17_15.gif";
  $img_collapse = "cartella_aperta_18_15.gif";
  $img_line     = "tree_vertline.gif";
  $img_split	= "tree_split.gif";
  $img_end      = "tree_end.gif";
  $img_leaf     = "tree_leaf.gif";
  $img_spc      = "tree_space.gif";
  $maxlevel=0;
  $cnt=0;
   #------------------------------------------
   # Inclusione del file ConnessioneDB.php
   # Permette la connessione al db
   # connessione = "connessione"
   #------------------------------------------
   include ("ConnessioneDB.php");
   #------------------------------------------
   # Query1
   #------------------------------------------
   $sql="SELECT id_malattia1,nome_malattia1,num_art FROM malattie1
WHERE categoria = 'Cane-Gatto';";
   #------------------------------------------
   # Esecuzione Query
   #------------------------------------------
   $risultati=mysql_query($sql,$connessione);
   #echo "Il titolo selezionato : $titolo";
   #echo $sql;
   #------------------------------------------
   # Controllo numero di record Query!
   #------------------------------------------
   $num_righe=mysql_num_rows($risultati);
   if ($num_righe==0)
   {
      #echo "Spiacente, non ci sono informazioni";
   }
   else
   {
       #abbiamo dei risultati
   $tree[$cnt][0]= 1;
   $tree[$cnt][1]= "<b> CANE-GATTO</b>";
   $cnt++;
       #fetch
       while ($riga=mysql_fetch_array($risultati))
       {
          $nomeMalattia1=$riga["nome_malattia1"];
          $idMalattia1=$riga["id_malattia1"];
          $numArt1=$riga["num_art"];
          $tree[$cnt][0]= 2;
          $tree[$cnt][1]= "-$nomeMalattia1";
          #echo "Malattia :  $nomeMalattia1 nume art: $numArt1";
      	  if ($numArt1!=0)
      		{
      			$tree[$cnt][1]= "$nomeMalattia1($numArt1)";
      	    	$tree[$cnt][2]=
"ListaArticoliliv1.php?malattia1=$idMalattia1";
      	    	$tree[$cnt][3]= "centrale";
      	    }
      	  if ($tree[$cnt][0] > $maxlevel)
      	  	$maxlevel=$tree[$cnt][0];
   	   	  $cnt++;
 		  $sql2="SELECT id_malattia2,nome_malattia2,num_art FROM malattie2
WHERE id_malattia1_fk = '$idMalattia1';";
		  $risultati2=mysql_query($sql2,$connessione);
   		  $num_righe2=mysql_num_rows($risultati2);
   		  #echo "Trovate $num_righe2 malattie2 ";
          if ($num_righe2==0)
   			{
      		#echo "Spiacente, non ci sono informazioni";
   			}
   		  else
   			{
	       	  #abbiamo dei risultati
    	      #Preparazione Tabella di Output
        	  #fetch
       	  	  while ($riga2=mysql_fetch_array($risultati2))
          	  {
          		$nomeMalattia2=$riga2["nome_malattia2"];
          		$idMalattia2=$riga2["id_malattia2"];
          		$numArt=$riga2["num_art"];
          		$tree[$cnt][0]= 3;
                $tree[$cnt][1]= "-$nomeMalattia2";
          		#echo "dentro seconda query tree[$cnt][1] = $nomeMalattia2
<br>";
          		if ($numArt!=0)
          		{
          		$tree[$cnt][1]= "$nomeMalattia2($numArt)";
   	      	    	$tree[$cnt][2]=
"ListaArticoliliv2.php?malattia2=$idMalattia2";
   	      	    	$tree[$cnt][3]= "centrale";
   	      	    }
          		if ($tree[$cnt][0] > $maxlevel)
      	  		$maxlevel=$tree[$cnt][0];
   	   	  		$cnt++;
		          $sql3="SELECT id_malattia3,nome_malattia3,num_articoli FROM
malattie3 WHERE id_malattia2_fk = '$idMalattia2';";
				  $risultati3=mysql_query($sql3,$connessione);
		   		  $num_righe3=mysql_num_rows($risultati3);
		   		  #echo "Trovate $num_righe3 malattie3 ";
		          if ($num_righe3==0)
		   			{
		      		#echo "Spiacente, non ci sono informazioni idmalattia2 =
$idMalattia2";
		   			}
		   		  else
		   			{
			       	  #abbiamo dei risultati
		    	      #Preparazione Tabella di Output
		        	  #fetch
		       	  	  while ($riga3=mysql_fetch_array($risultati3))
		          	  {
		          		$nomeMalattia3=$riga3["nome_malattia3"];
		          		$idMalattia3=$riga3["id_malattia3"];
		          		$numArt=$riga3["num_articoli"];
		          		$tree[$cnt][0]= 4;
		                $tree[$cnt][1]= $nomeMalattia3;
   	                    if ($numArt!=0)
   	                    {
   	                    	$tree[$cnt][1]= "$nomeMalattia3($numArt)";
   	      	            	$tree[$cnt][2]=
"ListaArticoli.php?malattia3=$idMalattia3";
   	      	            	$tree[$cnt][3]= "centrale";
   	      	            }
		          		#echo " tree[$cnt][1] = $nomeMalattia3 <br>";
		          		if ($tree[$cnt][0] > $maxlevel)
		      	  		$maxlevel=$tree[$cnt][0];
		   	   	  		$cnt++;
		          	  }
		            }
		        }
		      }
       }
   }
  for ($i=0; $i<count($tree); $i++) {
     $expand[$i]=0;
     $visible[$i]=0;
     $levels[$i]=0;
  }
  /*********************************************/
  /*  Get Node numbers to expand               */
  /*********************************************/
  if ($p!="") $explevels = explode("|",$p);
  $i=0;
  while($i<count($explevels))
  {
    $expand[$explevels[$i]]=1;
    $i++;
  }
  /*********************************************/
  /*  Find last nodes of subtrees              */
  /*********************************************/
  $lastlevel=$maxlevel;
  for ($i=count($tree)-1; $i>=0; $i--)
  {
     if ( $tree[$i][0] < $lastlevel )
     {
       for ($j=$tree[$i][0]+1; $j <= $maxlevel; $j++)
       {
          $levels[$j]=0;
       }
     }
     if ( $levels[$tree[$i][0]]==0 )
     {
       $levels[$tree[$i][0]]=1;
       $tree[$i][4]=1;
     }
     else
       $tree[$i][4]=0;
     $lastlevel=$tree[$i][0];
  }
  /*********************************************/
  /*  Determine visible nodes                  */
  /*********************************************/
// all root nodes are always visible
  for ($i=0; $i < count($tree); $i++) if ($tree[$i][0]==1)
$visible[$i]=1;
  for ($i=0; $i < count($explevels); $i++)
  {
    $n=$explevels[$i];
    if ( ($visible[$n]==1) && ($expand[$n]==1) )
    {
       $j=$n+1;
       while ( $tree[$j][0] > $tree[$n][0] )
       {
         if ($tree[$j][0]==$tree[$n][0]+1) $visible[$j]=1;
         $j++;
       }
    }
  }
  /*********************************************/
  /*  Output nicely formatted tree             */
  /*********************************************/
  for ($i=0; $i<$maxlevel; $i++) $levels[$i]=1;
  $maxlevel++;
  echo "<table cellspacing=0 cellpadding=0 border=0
cols=".($maxlevel+3)." width=100%>\n";
  echo "<tr>";
  for ($i=0; $i<$maxlevel; $i++) echo "<td width=16></td>";
  echo "<td width=100%>&nbsp;</td></tr>\n";
  $cnt=0;
  while ($cnt<count($tree))
  {
    if ($visible[$cnt])
    {
      /****************************************/
      /* start new row                        */
      /****************************************/
      echo "<tr>";
      /****************************************/
      /* vertical lines from higher levels    */
      /****************************************/
      $i=0;
      while ($i<$tree[$cnt][0]-1)
      {
        if ($levels[$i]==1)
            echo "<td><a name='$cnt'></a><img
src=\"".$img_line."\"></td>";
        else
            echo "<td><a name='$cnt'></a><img
src=\"".$img_spc."\"></td>";
        $i++;
      }
      /****************************************/
      /* corner at end of subtree or t-split  */
      /****************************************/
      /* Pacth by Vincenzo 10/05/2003 :       */
      /* Aded check to eliminate the img_end  */
      /* before the root of the tree.         */
      /****************************************/
      if ($tree[$cnt][4]==1)
      {
        if ($cnt!=0)
        	echo "<td><img src=\"".$img_end."\"></td>";
        else
        	echo "<td><img src=\"".$img_spc."\"></td>";
        $levels[$tree[$cnt][0]-1]=0;
      }
      else
      {
        echo "<td><img src=\"".$img_split."\"></td>";
        $levels[$tree[$cnt][0]-1]=1;
      }
      /********************************************/
      /* Node (with subtree) or Leaf (no subtree) */
      /********************************************/
      if ($tree[$cnt+1][0]>$tree[$cnt][0])
      {
        /****************************************/
        /* Create expand/collapse parameters    */
        /****************************************/
        $i=0; $params="?p=";
        while($i<count($expand))
        {
          if ( ($expand[$i]==1) && ($cnt!=$i) || ($expand[$i]==0 &&
$cnt==$i))
          {
            $params=$params.$i;
            $params=$params."|";
          }
          $i++;
        }
        if ($expand[$cnt]==0)
            echo "<td><a href=\"".$script.$params."#$cnt\"><img
src=\"".$img_expand."\" border=no></a></td>";
        else
            echo "<td><a href=\"".$script.$params."#$cnt\"><img
src=\"".$img_collapse."\" border=no></a></td>";
      }
      else
      {
        /*************************/
        /* Tree Leaf             */
        /*************************/
        echo "<td><img src=\"".$img_leaf."\"></td>";
      }
      /****************************************/
      /* output item text                     */
      /****************************************/
      if ($tree[$cnt][2]=="")
          echo "<td
colspan=".($maxlevel-$tree[$cnt][0]).">".$tree[$cnt][1]."</td>";
      else
          echo "<td colspan=".($maxlevel-$tree[$cnt][0])."><a
href=\"".$tree[$cnt][2]."\"
target=\"".$tree[$cnt][3]."\">".$tree[$cnt][1]."</a></td>";
      /****************************************/
      /* end row                              */
      /****************************************/
      echo "</tr>\n";
    }
    $cnt++;    
  }
  echo "</table>\n";
?>

 Notice: Undefined variable: p in /www/database/treemenu.php on line 198
Come viene passata la variabile in questione?? cosi risolvi anche gli 
altri .. ;) dai provaci che è facile .. :)
--
!!! SODDISFATTI O RIMBORSATI !!!
Nessuno si è mai lamentato della nostra offerta 2x1. Morire in 2 e 
pagare per 1.
