Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    4

    problemi con operatori e dati estratti da MySql

    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:
    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>"
    Risultato:
    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

  2. #2
    Scusa, ma non capisco il senso della seconda query. Nella prima selezioni tutti i record per i quali area=0 poi prendi tutti gli ID ed effettui una select per quel particolare ID. In pratica estrai singolarmente tutto ciò che hai già estratto nella prima select?!
    Ti basta fare:

    codice:
    SELECT sezione, figli FROM sezioni WHERE area=0
    e ciclare sul resultset.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    4
    Sì, Satifal, effettivamente era rimasta questa (inutile) struttura da una precedente versione del codice.
    L'ho rimossa, ma purtroppo i risultati sono identici. Questa è la prima parte del codice, modificata:
    Codice PHP:
    $sezionemadre=0
    while((
    $buffer2 mysql_fetch_array($elencosezioni))) {
    $ID =  (int) $buffer2['ID_sez'];
    $sezione= (int) $buffer2["sezione"];
    $figli= (boolean) $buffer2["figli"];
    $tipofigli=gettype($figli);
    $tiposezione=gettype($sezionemadre);
    $tipoid=gettype($ID);

    if (
    $figli==TRUE) {
    $checkfigli="- individuati figli
    "
    ;
    }

    if (
    $ID===$sezionemadre) {
    $checksezione="- sezione corrente
    "
    ;

    Insomma, continuo a ricevere questi risultati assurdi dai confronti sui dati estratti da MySql...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    4
    Ho risolto il secondo errore, mancava un banalissimo else per azzerare la variabile...
    Codice PHP:
    if ($ID===$sezionemadre) {
    $checksezione="- sezione corrente
    "
    ;
    } else {
    $checksezione="";

    Continuo a non capire dov'è l'errore sula variabile boolean...

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    4
    ...stesso errore anche lì. Mi scuso per l'ignoranza, sono un novellino!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.