Visualizzazione dei risultati da 1 a 7 su 7

Discussione: If mai verificato

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590

    If mai verificato

    salve, questo è il codice che uso per scorrere il risultato di una query

    dalla query ricevo diversi record, alcuni dei quali hanno stesso id ma diverso massima_id.
    Io devo fare in modo di riconoscere un id già inserito nell'array $cc (l'inserimento è effettuato nell'ELSE) e fare delle operazioni
    ma quell'IF non si verifica mai

    codice:
    $cc['mNodes']=array();
    $index=0;
        while($row=$res->fetch(PDO::FETCH_ASSOC | PDO::FETCH_GROUP)){
                if(in_array($row['id'],$cc['mNodes'])) {
                    $numMassime++;
                    $cc['mNodes'][$index]['massima'][$numMassime]=$row['massima_id'];
                } else {
                    $numMassime=0;
                    $cc['mNodes'][$index]['id']=$row['id'];
                    $cc['mNodes'][$index]['testata']=$row['numero_pronuncia'].'/'.$row['anno_pronuncia'].'-->'.$row['numero'];
                    $cc['mNodes'][$index]['massima'][$numMassime]=$row['massima_id'];
                    }
            $index++;
        }
    Ultima modifica di jimbo0; 25-06-2014 a 17:46

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,452
    Perché controlli il punto sbagliato di $cc

    $cc['mNodes'] non contiene l'id, l'id è in $cc['mNodes'][$index]['id'] e la funzione in_array non va a cercare sulle chiavi "interne".

    Per vedere se c'è l'id dovrai fare qualche ciclo e scandire l'array.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    si scusa ho postato il tentativo più sbagliato che ho provato
    codice:
    $cc['mNodes']=array();        $index=0;
        while($row=$res->fetch(PDO::FETCH_ASSOC | PDO::FETCH_GROUP)){
                $in_array=false;
                for($x=0;$x<$index;$x++){
                    if($row['id']==$cc['mNodes'][$x]['id']){
                        $in_array=true;break;
                    }
                }
                
                if($in_array==true) {
                    $numMassime++;
                    $cc['mNodes'][$index]['massima'][$numMassime]=$row['massima_id'];
                } else {
                    $numMassime=0;
                    $cc['mNodes'][$index]['id']=$row['id'];
                    $cc['mNodes'][$index]['testata']=$row['numero_pronuncia'].'/'.$row['anno_pronuncia'].'-->'.$row['numero'];
                    $cc['mNodes'][$index]['massima'][$numMassime]=$row['massima_id'];
                    }
            $index++;
        }
    questo qui è -leggermente- più corretto ma cmq non risolvo la questione..

    in pratica quando trovo lo stesso id ($in_array==true) devo andare a popolare l'array interno
    $cc['mNodes'][$index]['massima'][$numMassime]
    con massima_id
    Ultima modifica di jimbo0; 25-06-2014 a 18:21

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    ok ho risolto era solo $index++ messo al posto sbagliato.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    mi correggo, l'array $cc ancora non è formato bene, probabilmente quel $in_array è falso qualche volta di troppo
    codice:
    $cc['mNodes']=array();        $index=0;
        while($row=$res->fetch(PDO::FETCH_ASSOC | PDO::FETCH_GROUP)){
                $in_array=false;
                for($x=0;$x<$index;$x++){
                    if($row['id']==$cc['mNodes'][$x]['id']){
                        $in_array=true;break;
                    }
                }
                
                if($in_array==true) {
                    $numMassime++;
                    $cc['mNodes'][$index]['massima'][$numMassime]=$row['massima_id'];
                } else {
                    $numMassime=0;
                    $cc['mNodes'][$index]['id']=$row['id'];
                    $cc['mNodes'][$index]['testata']=$row['numero_pronuncia'].'/'.$row['anno_pronuncia'];
                    $cc['mNodes'][$index]['massima']=array();
                    $cc['mNodes'][$index]['massima'][$numMassime]=$row['massima_id'];
                    $index++;
                    }
            
        }

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,452
    Cerca di capire in quale situazione non si comporta come dovrebbe e stampa a video $cc così vedi come è fatto in tale situazione, magari capisci cosa c'è che non va.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    si, con un po' di debugging ho risolto

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 © 2024 vBulletin Solutions, Inc. All rights reserved.