Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    2 while con un solo select

    Faccio un select al database, e devo restituire 2 while diversi.
    Riesco a farlo solo facendo 2 volte il SELECT dal db.

    E' possibile fare 1 SELECT e 2 WHILE?
    Voglio evitare di appesantire inutilmente il sito...
    xDOMYx

  2. #2

    Re: 2 while con un solo select

    Originariamente inviato da xDOMYx
    Faccio un select al database, e devo restituire 2 while diversi.
    Riesco a farlo solo facendo 2 volte il SELECT dal db.

    E' possibile fare 1 SELECT e 2 WHILE?
    Voglio evitare di appesantire inutilmente il sito...
    ...che tradotto in italiano significa?

    "restituire 2 while diversi" ...questa non l'avevo mai sentita!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Attualmente uso questo:
    codice:
    $result = mysql_query("................");
    while($row = mysql_fetch_array( $result )) {
    ................
    }
    
    $result2 = mysql_query("................");
    while($row = mysql_fetch_array( $result2 )) {
    ................
    }
    Vorrei fare qualcosa qualcosa del genere:
    codice:
    $result = mysql_query("................");
    while($row = mysql_fetch_array( $result )) {
    ................
    }
    
    while($row = mysql_fetch_array( $result )) {
    ................
    }
    Ma non funge...

    Penso sia inutile eseguire 2 volte la stessa query per prelevare le stesse informazioni dal database...
    xDOMYx

  4. #4
    Originariamente inviato da xDOMYx


    Vorrei fare qualcosa qualcosa del genere:
    Codice PHP:
    $result mysql_query("................");
    while(
    $row mysql_fetch_array$result )) {
    ................
    }

    while(
    $row mysql_fetch_array$result )) {
    ................

    Ma non funge...
    Non funge perché il mysql_fetch_array( $result ) si consuma tutto il resultset nel primo while e quando lo chiami nel secondo while di nuovo sei già alla fine...

    tra un while e l'altro devi riportare il puntatore del resultset sul primo record con:
    Codice PHP:
    mysql_data_seek($result0); 

  5. #5
    Originariamente inviato da xDOMYx
    Attualmente uso questo:
    codice:
    $result = mysql_query("................");
    while($row = mysql_fetch_array( $result )) {
    ................
    }
    
    $result2 = mysql_query("................");
    while($row = mysql_fetch_array( $result2 )) {
    ................
    }
    Vorrei fare qualcosa qualcosa del genere:
    codice:
    $result = mysql_query("................");
    while($row = mysql_fetch_array( $result )) {
    ................
    }
    
    while($row = mysql_fetch_array( $result )) {
    ................
    }
    Ma non funge...

    Penso sia inutile eseguire 2 volte la stessa query per prelevare le stesse informazioni dal database...
    Perdonami, ma non riesco a comprendere il senso e l'utilità di ciò che vuoi fare. Perchè eseguire 2 volte la stessa query? quando basta eseguirla una sola volta e fare tutto nell'unico while!
    Fammi un esempio pratico del perchè ti è venuto in mente una simile idea. Cosa vuoi ottenere?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Originariamente inviato da philbert
    Non funge perché il mysql_fetch_array( $result ) si consuma tutto il resultset nel primo while e quando lo chiami nel secondo while di nuovo sei già alla fine...

    tra un while e l'altro devi riportare il puntatore del resultset sul primo record con:
    Codice PHP:
    mysql_data_seek($result0); 
    Il problema non è far funzionare il secondo while riazzerando il contatore quanto l'inutilità di ciò che si sta cercando di fare!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Originariamente inviato da satifal
    Fammi un esempio pratico del perchè ti è venuto in mente una simile idea. Cosa vuoi ottenere?
    ....magari uno ha bisogno di stampare 2 tabelle una sotto l'altra con dati che provengono dalla stessa query....questo non si può fare con un solo while

  8. #8
    Fai la query;
    scorri con il while salvando il result set in un array;
    questo array lo puoi scorrere tutte le volte che vuoi con il foreach.
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  9. #9
    Originariamente inviato da philbert
    ....magari uno ha bisogno di stampare 2 tabelle una sotto l'altra con dati che provengono dalla stessa query....questo non si può fare con un solo while
    Si, questo potrebbe essere un caso, ma è sbagliato risolverlo ciclando 2 volte il resultset. In ogni caso, e a maggior ragione quando si ha bisogno più volte degli stessi dati, il metodo corretto è quello di popolare un array con i valori del resultset e riutilizzarlo in base alle necessità. Ciò evita anche di mescolare codice HTML con montagne di codice PHP.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.