Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: doppio while

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    110

    doppio while

    Volevo sapere xkè una cosa di questo tipo non funziona

    while($row=mysqli_fetch_assoc($query)){
    while($row2=mysqli_fetch_assoc($query2)){

    ......

    }
    }

    come posso trovare un metodo alternativo?
    foreach?come lo imposto?

  2. #2
    Utente di HTML.it L'avatar di Takeno
    Registrato dal
    May 2007
    Messaggi
    146
    E per quale motivo non ti funzionerebbe ?
    Due cicli while annidati... non dovrebbero dare problemi

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    110
    Originariamente inviato da Takeno
    E per quale motivo non ti funzionerebbe ?
    Due cicli while annidati... non dovrebbero dare problemi
    mi da sempre il primo risultato ripetuto tante volte tante quanto sono le righe del secondo while..

    Codice PHP:
     while( $row=mysqli_fetch_assoc($terzi))
        while(
    $row2=mysqli_fetch_assoc($ibl)){
              if( 
    $row[cod_fiscale] != $row2[codfisc_anaa] ){ 

                  
    $ris[]=$row;                 

           }

        

        } 
    devo verificare tutti i codici fiscali che stanno in una lista ma che non sono nell'altra..

  4. #4
    Utente di HTML.it L'avatar di Takeno
    Registrato dal
    May 2007
    Messaggi
    146



    Prova un po' così

    Codice PHP:
    while($row mysqli_fetch_assoc($terzi)) {
      while(
    $row2 mysqli_fetch_assoc($ibl)) {
        if(
    $row['cod_fiscale'] != $row2['codfisc_anaa']){
                  
    $ris[]=$row['cod_fiscale'];                 
        }
      }


  5. #5
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Non puoi far lavorare mysql con una query come questa?

    Codice PHP:
    SELECT TB1.* FROM TB1 LEFT JOIN TB2 ON TB1.CF TB2.CF WHERE (TB2.CF Is Null); 
    Non l'ho provata quindi potrebbe esserci qualche svarione, ma credo vada.

    Ti mostra i codici in TB1 non presenti in TB2

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    110
    Originariamente inviato da Luke70
    Non puoi far lavorare mysql con una query come questa?

    Codice PHP:
    SELECT TB1.* FROM TB1 LEFT JOIN TB2 ON TB1.CF TB2.CF WHERE (TB2.CF Is Null); 
    Non l'ho provata quindi potrebbe esserci qualche svarione, ma credo vada.

    Ti mostra i codici in TB1 non presenti in TB2
    Si parla di velocità db contro velocità di processore..che mi consigli te? qual'è piu veloce?xkè ho sviluppato un programmino..apposito e ad occhio sembra piu veloce..

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    110
    Originariamente inviato da Takeno



    Prova un po' così

    Codice PHP:
    while($row mysqli_fetch_assoc($terzi)) {
      while(
    $row2 mysqli_fetch_assoc($ibl)) {
        if(
    $row['cod_fiscale'] != $row2['codfisc_anaa']){
                  
    $ris[]=$row['cod_fiscale'];                 
        }
      }

    cosi metto solo il codice fiscale mentre a me serve tutta la riga..

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    110
    Originariamente inviato da Luke70
    Non puoi far lavorare mysql con una query come questa?

    Codice PHP:
    SELECT TB1.* 
    FROM TB1 
    LEFT JOIN TB2 ON TB1
    .CF TB2.CF 
    WHERE 
    (TB2.CF Is Null); 
    Non l'ho provata quindi potrebbe esserci qualche svarione, ma credo vada.

    Ti mostra i codici in TB1 non presenti in TB2
    E' sbagliata poichè la tabella 2 non ha un alias e poi cosi prendo tutti quelli che sono uguali alla tab2 nella TB1 a me interessava prendere quelli NUOVI cioè quelli che stanno in TB1 ma non in TB2

  9. #9
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    In genere mysql è più veloce di qualsiasi cosa tu possa fare in php.

    In ogni caso i due cicli annidati restituiscono il risultato che dici tu: tante ripetizioni dei CF della prima tabella.

    Codice PHP:
    while($row mysqli_fetch_assoc($terzi)) { 
      
    i=0;
      while(
    $row2 mysqli_fetch_assoc($ibl)) { 
        if(
    $row['cod_fiscale'] == $row2['codfisc_anaa']) i=1;                 
        } 
      } 
    if (
    i==1$ris[]=$row


  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    110
    Originariamente inviato da Luke70
    In genere mysql è più veloce di qualsiasi cosa tu possa fare in php.

    In ogni caso i due cicli annidati restituiscono il risultato che dici tu: tante ripetizioni dei CF della prima tabella.

    Codice PHP:
    while($row mysqli_fetch_assoc($terzi)) { 
      
    i=0;
      while(
    $row2 mysqli_fetch_assoc($ibl)) { 
        if(
    $row['cod_fiscale'] == $row2['codfisc_anaa']) i=1;                 
        } 
      } 
    if (
    i==1$ris[]=$row

    scusa ma non mi sembra tanto corretto questo ciclo..
    in pratica mette sempre 1 dentro i e prima che esce dal while sarà arrivato all'ultima posizione (anzi esce con 0 alla fine) ...non me li prende tutti..

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.