call_user_func sempre null.

IImanuII

Utente Attivo
10 Giu 2012
390
0
16
Salve ragazzi (bello il restile del forum :P)

Ho come sempre un problema:

In base a questa discussione ho gestito gli errori di facebook in questo modo:

PHP:
function eliminaApplicazione()
{
	global $HOST, $DB_USER_NAME, $DB_USER_PWD, $DB;
	$link=mysql_pconnect($HOST, $DB_USER_NAME, $DB_USER_PWD); 
	mysql_select_db ($DB);
	
	//Svuota tabella utenti
	$sql="truncate table utenti";
	$result=mysql_query($sql) or die(mysql_error()." ".$sql);
	
	//Elimina app
	$sql="select id from apps order by id asc limit 1";
	$result=mysql_query($sql) or die(mysql_error()." ".$sql);
	$row=mysql_fetch_array($result);
	
	if(mysql_num_rows($result)==1)
	{
	  $sql="delete from apps where id=".$row['id']." limit 1";
	  $result=mysql_query($sql) or die(mysql_error()." ".$sql);
	}
	echo "</br>Elimino App!</br>";
	return $condizione=false;
}

$array = array(
    "messaggio1" => "eliminaUtente",
    "messaggio2" => "eliminaApplicazione",
    "messaggio3" => "eliminaUtente"
);  

$condizione=true;

while($row=mysql_fetch_array($result) and $condizione){

//faccio delle operazioni

//al comparire di un errore lo gestisco così
$stringa_Facebook = "messaggio2";

//gestisco gli errori
var_dump(call_user_func($array[$stringa_Facebook],$id)); 
var_dump($condizione);

}

Come vedete la gestione dell'errore è in un ciclo, nel momento in cui c'è l'errore "messaggio2" viene richiamata la funzione eliminaApplicazione() e fin qui tutto bene, il problema sorge nel momento in cui la funzione non interrompe il ciclo while, poichè la condizione return $condizione=false; non viene restituita:
call_user_func con il var_dum è NULL
$condizione è true.

non riesco a fare in modo che al ritorno della funzione questa setti $condizione=false.
 
scusa è troppo banale per cui non ci credo ma, condizione non è nel global della funzione ....
ciao
Marino
 
In realtà non è proprio così, comunque la condizione è al di fuori del while.

$condizione la setto così in realtà:

PHP:
if($tokenconfigurati=true)
{
	$config = array(
      'appId' => $appId,
      'secret' => $appSecret,
      'fileUpload' => false, // optional
      'allowSignedRequest' => false // optional, but should be set to false for non-canvas apps
    );

	$facebook = new Facebook($config);
	$condizione=true;
}
else $condizione=false;
 
pensavo prendessi la condizione dal return
PHP:
    echo "</br>Elimino App!</br>"; 
    return $condizione=false;
se così è, è sufficiente che aggiungi condizione al global della funzione
altrimenti quel valore è inutilizzato
 
Ho provato a cambiare la funzione così

$appsettata=false;
global $appsettata;

Ma non è cambiato nulla
 
pensavo prendessi la condizione dal return
PHP:
    echo "</br>Elimino App!</br>"; 
    return $condizione=false;
se così è, è sufficiente che aggiungi condizione al global della funzione
altrimenti quel valore è inutilizzato

Effettivamente ero molto stanco. Ho fatto una pausa di un'oretta, mi sono riletto tutto ed ha funzionato tutto alla grande grazie!
 
bene, ottimo,
ora mi prendo quest'idea dell'array che mi piace un ... casino
e la applico nello sviluppo che sto facendo, vi ho seguito nella discussione, veramente interessante
grazie anche a te
ciao
Marino
 

Discussioni simili