Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    confrontare data da form con una data presente nel database

    Sono giunto quasi alla fine del percoso, mi manca l'ultima fase !!

    Devo controllare se una data digitata in un form e' minore di una data presente nel database in un determinato campo.

    La data " da form " e' sotto forma di year-mm-gg.
    Idem per la data presente nel database : year-mm-gg ( campo date ovviamente )

    Codice PHP:
    <?php
    include ("config.php");
    session_start(); 


    $giornoarrivo $_POST['giornoarrivo']; //parte della data digitata
    $mesearrivo $_POST['mesearrivo']; //parte della data digitata
    $annoarrivo $_POST['annoarrivo']; //parte della data digitata

    // Trasformo in data l'intervallo di tempo scelto

    $dataarrivo =(date("$annoarrivo-$mesearrivo-$giornoarrivo"));


    // Seleziono la data che mi interessa confrontare nel database

    $apertura "SELECT dataapertura FROM alloggi WHERE id_hotel='$id_hotel'";

    $controlloapertura = (date("$apertura"));

    //Cerco di confrontare le due date

    if ($dataarrivo $controlloapertura  ) {
    header ("location: ../conferma_prenotazione.php?er=3");
    exit;
    }

    ?>
    In questo modo non funziona : mi da sempre che la data di arrivo e' minore di quella di apertura .. molto probabilmente il problema sta nel fatto che $controlloapertura non e' trasformato nella forma data .. pero' ho usato " date " come nel caso precedente.


    Quando ho dovuto confrontare due date immesse da un form, ho usato questa procedura ( mettendo ovviamente $data1 =(date("$anno1-$mese1-$giorno1")) ed idem per la seconda ).


    Come posso fare a risolvere il problema ?

  2. #2
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    l'uso che fai della funzione date non è corretto: se passi una stringa e basta, la funzione la considera come i parametri per formattare la data corrente. Vedi http://www.php.net/date

    Io di solito utilizzo strtotime() per fare confronti.

    Luca

  3. #3
    Ma da quel che ne so io..neanche la data dal DB viene letta correttamente...

  4. #4
    Dunque dovrei usare strtotime() ?

    in questo caso, il campo che tiro fuori dal database come lo " trasformo " ?

    E poi il confronto lo faccio semplicemente con un " >=< " ?

  5. #5
    Utente di HTML.it L'avatar di dararag
    Registrato dal
    Jan 2008
    Messaggi
    434
    Per me invece il tuo va benissimo, basta modificarlo così:
    codice:
    <?php
    include ("config.php");
    session_start();
    
    
    $giornoarrivo = $_POST['giornoarrivo']; //parte della data digitata
    $mesearrivo = $_POST['mesearrivo']; //parte della data digitata
    $annoarrivo = $_POST['annoarrivo']; //parte della data digitata
    
    // Trasformo in data l'intervallo di tempo scelto
    $dataarrivo = $annoarrivo . $mesearrivo . $giornoarrivo;
    $dataarrivo =(date($dataarrivo,"Y-m-d"));
    
    
    // Seleziono la data che mi interessa confrontare nel database
    
    $apertura = "SELECT dataapertura FROM alloggi WHERE id_hotel='$id_hotel'";
    
    $controlloapertura = (date($apertura,"Y-m-d"));
    
    //Cerco di confrontare le due date
    
    if ($dataarrivo < $controlloapertura  ) {
    header ("location: ../conferma_prenotazione.php?er=3");
    exit;
    }
    
    ?>

  6. #6
    Originariamente inviato da dararag
    codice:
    // Trasformo in data l'intervallo di tempo scelto
    $dataarrivo =(date($dataarrivo,"Y-m-d"));
    $controlloapertura = (date($apertura,"Y-m-d"));
    date($format, $timestamp), hai passato i parametri al contrario.

    @ezechiele: Puoi tranquillamente confrontare le date così come sono nel formato yyyy-mm-gg

    Es.
    Codice PHP:
    <?php
    $data1 
    "2007-12-29";
    $data2 "2007-12-30";

    if(
    $data1 $data2) echo "OK";
    else echo 
    "NO";
    ?>

  7. #7
    Utente di HTML.it L'avatar di dararag
    Registrato dal
    Jan 2008
    Messaggi
    434
    ops! distrazione... scusa

  8. #8
    Originariamente inviato da dararag
    Per me invece il tuo va benissimo, basta modificarlo così:
    codice:
    <?php
    include ("config.php");
    session_start();
    
    
    $giornoarrivo = $_POST['giornoarrivo']; //parte della data digitata
    $mesearrivo = $_POST['mesearrivo']; //parte della data digitata
    $annoarrivo = $_POST['annoarrivo']; //parte della data digitata
    
    // Trasformo in data l'intervallo di tempo scelto
    $dataarrivo = $annoarrivo . $mesearrivo . $giornoarrivo;
    $dataarrivo =(date($dataarrivo,"Y-m-d"));
    
    
    // Seleziono la data che mi interessa confrontare nel database
    
    $apertura = "SELECT dataapertura FROM alloggi WHERE id_hotel='$id_hotel'";
    
    $controlloapertura = (date($apertura,"Y-m-d"));
    
    //Cerco di confrontare le due date
    
    if ($dataarrivo < $controlloapertura  ) {
    header ("location: ../conferma_prenotazione.php?er=3");
    exit;
    }
    
    ?>
    Scusa eh ma unendo anno mese e giorno non si ottiene un timestamp.

    E poi:
    codice:
    $apertura = "SELECT dataapertura FROM alloggi WHERE id_hotel='$id_hotel'";
    ???
    Le query adesso si fanno cosi'?

    Inoltre se (e dico se) hai dei timestamp perche' trasformarli con date? Sono numeri interi, si possono usare direttamente in una disuguaglianza.

  9. #9
    Utente di HTML.it L'avatar di dararag
    Registrato dal
    Jan 2008
    Messaggi
    434
    per il fatto del timestamp già mi hanno fatto notare l'errore, ero mezzo addormentato, tanto che non avevo nemmeno notato la query sbagliata, per il confronto tra timestamp, questa è l'idea migliore di tutto il topic

  10. #10
    Grazie a tutti per i suggerimenti, adesso provo ad applicare qualche modifica alla mia pagina e posto i risultati ..


    Non capisco pero' come mai la query dovrebbe essere sbagliata ..

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.