variabile globale

Ciao a tutti,

devo risolvere un problema con una variabile globale.

All'interno di un ciclo if faccio una chimata ad una funzione mysql e ne salvo il valore in una variabile.

Questa variabile ho necessità di usarla cnhe in un altro punto del codice e precisamente fuori dell'if.

            
if (@mysql_query($sql) ) {
   $id = mysql_insert_id();
   echo "$id";
} else {
   exit('<p>Errore: ' . mysql_error() . '</p>');
}

....
if(trim(.......) {

 .......
    $pippo = "UPDATE ......WHERE id_file='$id'"; 


      
}

come recupero il valore di $id per poterlo usare anche nel secondo if???

inviato 11 anni fa
stellina
modificato 11 anni fa
X 0 X

Il problema non si pone se il secondo if è nella stessa scatola del primo if.

In pratica ogni funzione è da considerarsi come una scatola e lo stesso dicasi per il corpo del programma, ogni variabile definita nella scatola è visibile all'interno di essa e di tutte le scatole che contiene. Ad es:

<?php
//scatola 0
$var0 = .... ;

function prima(){
//scatola 1
$var1 = ....;

}

function seconda(){
//scatola 2

  function terza (){
  //scatola 3
  $var3 = .... ;
  }
  
  $var2 = ... ;
}

?>
  • $var0 è visibile ovunque (la scatola è la più esterna);
  • $var1 è visibile solo all'interno della funzione prima;
  • $var3 è visibile solo all'interno della funzione terza;
  • $var2 è visibile all'interno della funzione seconda e all'interno della funzione terza (scatola 3 contenuta in scatola 2);

Spero di essere stato chiaro.  ???

 :bye:

risposto 11 anni fa
Nico Colonna
X 0 X

nel tuo caso particolare basta che dichiari la variabile all'esterno del controllo if, così da renderla visibile anche in altri cotrutti esterni

$id;

if (@mysql_query($sql) ) {

   $id = mysql_insert_id();

   echo "$id";

} else {

   exit('<p>Errore: ' . mysql_error() . '</p>');

}

....

if(trim(.......) {

 .......

    $pippo = "UPDATE ......WHERE id_file='$id'"; 

}

in questo modo il valore di $id viene conservato

 :bye:

risposto 10 anni fa
shawn
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda