Ciao a tutti.
Non riesco a effettuare dei semplicissimi confronti tra i dati estratti da alcune tabelle di MySql. Come spiego meglio nei commenti al codice, in un caso ottengo sempre TRUE, in un altro ottengo risultati discordanti. Ho provato anche con il Type Casting sui dati estratti da MySql, ma il risultato non cambia: dov'è l'errore?
Codice:
Risultato:Codice PHP:// preparazione dati
$sezionemadre=0;
$elenco=mysql_query("SELECT ID FROM sezioni WHERE area=0", $connessione);
$sezioniperarea = array();
while(($row = mysql_fetch_array($elenco))) {
$sezioniperarea[] = (int) $row['ID']; //inizialmente senza Type Casting, stesso risultato - Da Mysql può arrivare 0-9
}
foreach ($sezioniperarea as $ID) {
$datisezioni=mysql_query("SELECT sezione , figli FROM sezioni WHERE ID='$ID'", $connessione);
$buffer=mysql_fetch_array($datisezioni);
$sezione= (int) $buffer["sezione"]; //inizialmente senza Type Casting, stesso risultato - Da Mysql può arrivare 0-9
$figli= (boolean) $buffer["figli"]; //inizialmente senza Type Casting, stesso risultato - Da Mysql può arrivare 1 o NULL
$tipofigli=gettype($figli);
$tiposezione=gettype($sezionemadre);
$tipoid=gettype($ID);
//ERRORE 1: sempre vero, anche quando $figli è NULL
if ($figli) { //provato pure "$figli==TRUE e ==1", stessi risultati
$checkfigli="- individuati figli";
}
//ERRORE 2: nel quarto caso dà esito TRUE, ma 0 è diverso da 3!
if ($ID===$sezionemadre) {
$checksezione="- sezione corrente";
}
//output
echo "
Figli: $figli $tipofigli $checkfigli
Sezione madre: $sezionemadre, $tiposezione - ID sezione: $ID, $tipoid $checksezione</P>";
Figli: 1 boolean - individuati figli
Sezione madre: 0, integer - ID sezione: 1, integer
Figli: boolean - individuati figli
Sezione madre: 0, integer - ID sezione: 2, integer
Figli: 1 boolean - individuati figli
Sezione madre: 0, integer - ID sezione: 0, integer - sezione corrente
Figli: 1 boolean - individuati figli
Sezione madre: 0, integer - ID sezione: 3, integer - sezione corrente

Rispondi quotando
