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

    Confrontare elementi diversi di un ciclo while restituito da query MySql

    Ciao, devo confrontare elementi diversi restituiti da una query MySql in un ciclo while .

    Mi spiego: una query mi restituisce due date (gg-mm-aaaa arrivo, partenza) per ogni tupla (ogni riga del db, non so come si chiama ) ma ho necessità di confrontarle con quelle di altre tuple, per esempio: data_partenza1 confronto data_arrivo2 dove il numero è la tupla.

    vi incollo il codice
    Codice PHP:

    $slq 
    "SELECT * FROM prenotazioni WHERE (
        (data_arrivo > '"
    .$data_arrivo."' AND data_arrivo <=  '".$data_partenza."') OR 
        (data_partenza < '"
    .$data_partenza."' AND data_partenza >=  '".$data_arrivo."')
        ) AND fila = '
    $f' AND colonna = $c AND id_bagno = $_POST[id_bagno] ORDER BY data_partenza";
    $rse mysql_query($slq);
    while(
    $rowmysql_fetch_array($rse)){
        
    $dal_pd $rwo["data_arrivo"];
        
    $al_pd $rwo["data_partenza"]; 

    Non ho la minima idea di come fare . Qualcuno può aiutarmi?
    THX

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Ok, non ho capito niente di cosa vuoi fare

    Fa un esempio pratico, magari è più facile da capire.

    PS: tupla va bene, ma se vuoi un nome alternativo: record, o entry

  3. #3
    ok, nella tabella del db ogni record è composto da pià campi (id, data_arrivo, data_partenza), con la query che ho fatto mi vengono restituiti più record 'in ordine' cioè:
    record1 = id1, data_arrivo, data_partenza
    record2 = id2, data_arrivo, data_partenza
    record3 = id3, data_arrivo, data_partenza
    ecc...

    io devo confrontare i dati di record diversi cioè:

    data_arrivo2 -(meno) data_partenza1
    data_arrivo3 - data_partenza2
    ecc...
    (i numeri indicano a quale record si riferisce)

    il problema è che il ciclo while che mi serve per visualizzare TUTTI i dati mi fa lavorare solo sui dati di un record per volta, quindi al primo 'giro' del while potrò lavorare solo su i dati record1
    al secondo giro sui dati record2 e così via

    come faccio a lavorare sui dati di record diversi?
    esempio, al SECONDO giro confrontare i dati del record2 con quelli del PRIMO giro (record1) ecc...

  4. #4
    per correttezza ho scritto meglio il problema, ma mentre lo facevo credo di aver trovato la soluzione, che tra l'altro è molto banale, mannaggia a me!

    prima di fare il while, assegno una varriabile dp1
    al primo giro del while confronto la dp1 con la data_arrivo del record1 poi la dp1 = data_partenza del record1
    al secondo giro confronto dp1 con data_partenza record2 e poi dp2 = data_partenza record2

    Codice PHP:

    dp1
    =$data_arrivo (impostata da un form in post)
    while(
    $row mysql_fetch_array){
       
    $data_arrivo $row["data_arrivo"];
       
    $data_partenza $row["data_partenza"];
     
      
    $data_arrivo $dp1 ;

       
    $dp1 $data_partenza;



  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Usa una variabile che ti tenga i dati del ciclo precedente.
    Codice PHP:
    $temp = array();

    $i 0;
    while(
    $row mysql_fetch_array($result))
    {
        if(
    $i == 0//se è il primo giro non c'è niente da confrontare
        
    {
            
    $temp $row//salvo solo il record attuale nella variabile temporanea
        
    }
        else
        {
            
    //confronti come vuoi i dati di $row (record attuale) con quelli di $temp (record precedente)

            //dopo i confronti
            
    $temp $row//aggiorno $temp con il record attuale
        
    }
        
    $i++;

    Edit: ho visto ora la tua soluzione, l'hai provata?

  6. #6
    si così funziona!

    il $i era esatto.

    Grazie

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.