Gestione date per preventivo

Discussione in 'PHP' iniziata da Daniele Rapinesi, 7 Gennaio 2014.

  1. Daniele Rapinesi

    Daniele Rapinesi Utente Attivo

    Registrato:
    7 Gennaio 2014
    Messaggi:
    60
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    Ciao a tutti

    Se su un sito devo inserire un "calcola prezzo" in base ad una data - tipo lascio l'auto il 10 gennaio alle 10,00 e la riprendo il 12 gennaio alle 17,00 - come posso creare un form con inserimento data inizio, data fine e calcolo del prezzo ?

    GRazie a tutti per i suggerimenti ....
     
  2. edin

    edin Utente Attivo

    Registrato:
    7 Novembre 2013
    Messaggi:
    92
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Home Page:
    Nel Form che crei inserisci due campi di tipo input ed a ssoci aciascun elemento un datapiker(calendario) che ti fa selezionare le date.
    Per il calcolo del prezzo hai bisogno di un codice lato server che faccia il calcolo del prezzo.
    Per esempio hai nel db la tariffa oraria di xx euro, in base al rang di ore trascorse fai il calcolo...
    Poi altro fattore,per i giorni festivi bisogna capire se hanno la stessa tariffa oraria etc


    Puoi fare questo con una chiamata ajax che ti fa visualizzare il risutato del calcolo all'interno del form.
     
  3. Daniele Rapinesi

    Daniele Rapinesi Utente Attivo

    Registrato:
    7 Gennaio 2014
    Messaggi:
    60
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    ok grazie.
    La parte del form è chiara.
    Più complicata mi sembra la parte del codice lato server: inserendo le date ho un risultato di quanti giorni/ore dura la sosta giusto? Parto da li per fare il calcolo ?
    Ok, stasera comincio a studiare e poi ti tengo informato....
    Grazie ancora !
     
  4. Daniele Rapinesi

    Daniele Rapinesi Utente Attivo

    Registrato:
    7 Gennaio 2014
    Messaggi:
    60
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    Ok, con date picker creo i campi per l'inserimento della data di arrivo e di ritiro. Ora come faccio a dirgli di fare la sottrazione tra le due date e restituirmi il valore in giorni ? Trovato quello, in php, con la funzione if dovrebbe essere semplice far stampare il preventivo( if valore=1 echo 10€, ecc).
    Dovreste solo dirmi come fare l'operazione tra le date ...... Grazie!!!!
     
  5. edin

    edin Utente Attivo

    Registrato:
    7 Novembre 2013
    Messaggi:
    92
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Home Page:
  6. Daniele Rapinesi

    Daniele Rapinesi Utente Attivo

    Registrato:
    7 Gennaio 2014
    Messaggi:
    60
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    grazie dell'aiuto, ma non riesco a fare quello che voglio:
    una volta creato i datepicker di inizio e fine soggiorno, vorrei ottenere un valore in giorni per poter elaborare un preventivo (es. la differenza fra le date è di 2 giorni, quindi in php gli dico "if giorni=2" echo 20€ ... come posso dire a php che la differenza fra le date inserite è 2??? .... sto diventando matto !!!!
    Aiutami ti prego !!

    Grazieeee
     
  7. flameseeker

    flameseeker Utente Attivo

    Registrato:
    27 Novembre 2013
    Messaggi:
    699
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    Occupazione:
    Web Developer
    Ciao, puoi provare così:

    PHP:
    $data1 '2014-01-05 11:30'#> Ipotetica data di partenza del datepicker
    $data2 '2014-01-07 11:30'#> Ipotetica data di fine del datepicker

    $giorni intval((strtotime($data1)-strtotime($data2))/86400);

    #> Il tuo preventivo sono 10€ al giorno ? Then..
    echo "Il costo per il periodo indicato è di €", (10*$giorni), " .";

    Sostanzialmente ho convertito in timestamp le due date, le ho sottratte fra di loro e poi dividendole per 86400 (il numero di secondi che costituisce una giornata) ottengo il numero di giorni che intercorre tra le due.

    Occhio che se la differenza è meno di una giornata il calcolo $giorni ti dà zero, comunque con qualche altro calcolo puoi ottenere ore, minuti e secondi se ti occorrono.
     
  8. Daniele Rapinesi

    Daniele Rapinesi Utente Attivo

    Registrato:
    7 Gennaio 2014
    Messaggi:
    60
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    Grazie Flameseeker per la risposta,
    il tuo suggerimento è corretto e funziona, ma il problema è:

    -come faccio a far si che quando l'utente digita la data in datepicker quel valore va a finire dentro $data1 ??

    E' questa la cosa che mi fa impazzire !!! qio funziona tutto perche tu hai messo il valore in $data1 e $data2, ma come ce lo mando li quel dato ??

    ... dai ragazzi un'ultimo sforzo !!!!!

    Comunque grazie ancora !!

    $data1 = '2014-01-05 11:30'; #> Ipotetica data di partenza del datepicker
    $data2 = '2014-01-07 11:30'; #> Ipotetica data di fine del datepicker
     
  9. flameseeker

    flameseeker Utente Attivo

    Registrato:
    27 Novembre 2013
    Messaggi:
    699
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    Occupazione:
    Web Developer
    Potresti usare ajax per passare il dato in post allo script e poi stampare il risultato in un contenitore a scelta.
     
  10. Daniele Rapinesi

    Daniele Rapinesi Utente Attivo

    Registrato:
    7 Gennaio 2014
    Messaggi:
    60
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    uhmmm .... ajax non lo conosco proprio .... vado a cercare di capire come funziona girando un po in rete .....
    Grazie lo stesso !!!
     
  11. Monital

    Monital Utente Attivo

    Registrato:
    15 Aprile 2009
    Messaggi:
    778
    Mi Piace Ricevuti:
    2
    Punteggio:
    18

    puoi postarmi il codice del datepicker?
    perchè o ho già una cosa del genere e credo che il tuo problema dipenda da come imposti il codice del datapicker

    p.s non il javasscript ma proprio il codice hphp/html con cui richiami js
     
    Ultima modifica: 9 Gennaio 2014
  12. Daniele Rapinesi

    Daniele Rapinesi Utente Attivo

    Registrato:
    7 Gennaio 2014
    Messaggi:
    60
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    il tuo suggerimento funziona, ma come faccio a convertire le date inserite con il datepicker in $date1 e $date2 ???
    io ajax non lo conosco. Non c'è un metodo piu facile - tipo inserisco data, la passo a php e faccio le operazioni ???

    ... sicuramente c'è ci sono tantissimi siti che gestiscono prenotazioni in base alle date, ma dal sorgente non riesco a capire come avviene il passaggio !!!

    GRAZIE!!!
     
  13. edin

    edin Utente Attivo

    Registrato:
    7 Novembre 2013
    Messaggi:
    92
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Home Page:
    Un' esempio di chiamata ajax per il tuo caso potrebbe essere questo:

    PHP:
    <script type="text/javascript">
    function 
    inviaForm()
    {
    var 
    data_da=$("#data_da").val();
    var 
    data_a=$("#data_a").val();
    $.
    ajax({
        
    type:'POST',
        
    url:'calcolo_preventivo.php',
        
    data:'data_da='+data_da+'&data_a='+data_a,
        
    success: function(response){
          $(
    "#output").html(response);
          }
        });
    }
    </
    script>

    data_da e data_a sono i valori delle date selezionate nei due campi.

    Nel form inserisci un bottone che chiama la funzione javascript inviaform() che ti invia con ajax i dati alla pagina php.

    Nella pagina php recuperi i valori in due variabili:
    PHP:
    $data_da=$_POST['data_da'];
    $data_a=$_POST['data_a'];



    http://www.edinweb.altervista.org
     
  14. Daniele Rapinesi

    Daniele Rapinesi Utente Attivo

    Registrato:
    7 Gennaio 2014
    Messaggi:
    60
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    Questo è un form che ho creato con le date di arrivo e partenza:


    <form name="differenza_date" method="post" action="preventivo.php">
    <table>
    <tr>
    <td>inserire data iniziale:</td>
    <td>
    <select name="giornoinizio">
    <option>giorno</option>
    <option value="1" > 1 </option>
    <option value="2" > 2 </option>
    <option value="3" > 3 </option>
    <option value="4" > 4 </option>
    <option value="5" > 5 </option>
    <option value="6" > 6 </option>
    <option value="7" selected="selected"> 7 </option>
    <option value="8" > 8 </option>
    <option value="9" > 9 </option>
    <option value="10" > 10 </option>
    <option value="11" > 11 </option>
    <option value="12" > 12 </option>
    <option value="13" > 13 </option>
    <option value="14" > 14 </option>
    <option value="15" > 15 </option>
    <option value="16" > 16 </option>
    <option value="17" > 17 </option>
    <option value="18" > 18 </option>
    <option value="19" > 19 </option>
    <option value="20" > 20 </option>
    <option value="21" > 21 </option>
    <option value="22" > 22 </option>
    <option value="23" > 23 </option>
    <option value="24" > 24 </option>
    <option value="25" > 25 </option>
    <option value="26" > 26 </option>
    <option value="27" > 27 </option>
    <option value="28" > 28 </option>
    <option value="29" > 29 </option>
    <option value="30" > 30 </option>
    <option value="31" > 31 </option>
    </select>
    </td><td>
    <select name="meseinizio">
    <option>mese</option>
    <option value="1" selected="selected">Gennaio</option>
    <option value="2" >Febbraio</option>
    <option value="3" >Marzo</option>
    <option value="4" >Aprile</option>
    <option value="5" >Maggio</option>
    <option value="6" >Giugno</option>
    <option value="7" >Luglio</option>
    <option value="8" >Agosto</option>
    <option value="9" >Settembre</option>
    <option value="10" >Ottobre</option>
    <option value="11" >Novembre</option>
    <option value="12" >Dicembre</option>
    </select>
    </td><td>
    <select name="annoinizio">
    <option>Anno</option>
    <option value="2013" > 2013 </option>
    <option value="2014" selected="selected"> 2014 </option>
    <option value="2015" > 2015 </option>
    <option value="2016" > 2016 </option>
    <option value="2017" > 2017 </option>
    <option value="2018" > 2018 </option>
    <option value="2019" > 2019 </option>
    <option value="2020" > 2020 </option>
    <option value="2021" > 2021 </option>
    <option value="2022" > 2022 </option>
    <option value="2023" > 2023 </option>
    <option value="2024" > 2024 </option>
    <option value="2025" > 2025 </option>
    <option value="2026" > 2026 </option>
    <option value="2027" > 2027 </option>
    <option value="2028" > 2028 </option>
    <option value="2029" > 2029 </option>
    <option value="2030" > 2030 </option>
    <option value="2031" > 2031 </option>
    <option value="2032" > 2032 </option>
    <option value="2033" > 2033 </option>
    <option value="2034" > 2034 </option>
    <option value="2035" > 2035 </option>
    <option value="2036" > 2036 </option>
    <option value="2037" > 2037 </option>
    <option value="2038" > 2038 </option>
    <option value="2039" > 2039 </option>
    <option value="2040" > 2040 </option>
    <option value="2041" > 2041 </option>
    <option value="2042" > 2042 </option>
    <option value="2043" > 2043 </option>
    </select>

    </td>
    </tr><tr>
    <td>inserire data finale:</td>
    <td>
    <select name="giornofine">
    <option>giorno</option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
    <option value="13">13</option>
    <option value="14">14</option>
    <option value="15">15</option>
    <option value="16">16</option>
    <option value="17">17</option>
    <option value="18">18</option>
    <option value="19">19</option>
    <option value="20">20</option>
    <option value="21">21</option>
    <option value="22">22</option>
    <option value="23">23</option>
    <option value="24">24</option>
    <option value="25">25</option>
    <option value="26">26</option>
    <option value="27">27</option>
    <option value="28">28</option>
    <option value="29">29</option>
    <option value="30">30</option>
    <option value="31">31</option>

    </select>
    </td><td>
    <select name="mesefine">
    <option>mese</option>
    <option value="1">Gennaio</option>
    <option value="2">Febbraio</option>
    <option value="3">Marzo</option>
    <option value="4">Aprile</option>
    <option value="5">Maggio</option>
    <option value="6">Giugno</option>
    <option value="7">Luglio</option>
    <option value="8">Agosto</option>
    <option value="9">Settembre</option>
    <option value="10">Ottobre</option>
    <option value="11">Novembre</option>
    <option value="12">Dicembre</option>
    </select>
    </td><td>
    <select name="annofine">
    <option>Anno</option>
    <option value="2013">2013</option>
    <option value="2014">2014</option>
    <option value="2015">2015</option>
    <option value="2016">2016</option>
    <option value="2017">2017</option>
    <option value="2018">2018</option>
    <option value="2019">2019</option>
    <option value="2020">2020</option>
    <option value="2021">2021</option>
    <option value="2022">2022</option>
    <option value="2023">2023</option>
    <option value="2024">2024</option>
    <option value="2025">2025</option>
    <option value="2026">2026</option>
    <option value="2027">2027</option>
    <option value="2028">2028</option>
    <option value="2029">2029</option>
    <option value="2030">2030</option>
    <option value="2031">2031</option>
    <option value="2032">2032</option>
    <option value="2033">2033</option>
    <option value="2034">2034</option>
    <option value="2035">2035</option>
    <option value="2036">2036</option>
    <option value="2037">2037</option>
    <option value="2038">2038</option>
    <option value="2039">2039</option>
    <option value="2040">2040</option>
    <option value="2041">2041</option>
    <option value="2042">2042</option>
    <option value="2043">2043</option>
    </select>
    </td>
    </tr><tr>
    <td><input type="submit" name="differenza_date" value="Calcola differenza tra date" style="padding:0 1px;" /></td>
    </tr>
    </table>
    </form>

    Gli ho detto di passare i dati al file preventivo.php, che riporto sotto. Qui sto lavorando per inviarmi le date via email per vedere il formato di arrivo, ma se riesci a moficicare direttamente questo codice per far uscire il risultato a video va benissimo !!

    <?PHP
    // Processo di recupero dei dati
    $giornoinizio = $_POST['giornoinizio'];
    $meseinizio = $_POST['meseinizio'];
    $annoinizio = $_POST['annoinizio'];
    $giornofine = $_POST['giornofine'];
    $mesefine = $_POST['mesefine'];
    $annofine = $_POST['annofine'];

    // [Destinatario, mittente, ecc]
    $mail_to = "dr129@yahoo.com";
    $mail_subject = "Prova preventivo";

    // Intestazioni HTML
    $mail_in_html = "MIME-Version: 1.0\r\n";
    $mail_in_html .= "Content-type: text/html; charset=utf-8\r\n";
    $mail_in_html .= "From: <$mail_from>";
    // Processo di invio
    if (mail($mail_to, $mail_subject, $mail_body, $mail_in_html))
    {
    print "Messaggio inviato con successo!";
    }
    else
    {
    print "Errore";
    // le parentesi devono essere tante quante il numero dei campi inseriti all'inizio
    }
    ?>
     
  15. Daniele Rapinesi

    Daniele Rapinesi Utente Attivo

    Registrato:
    7 Gennaio 2014
    Messaggi:
    60
    Mi Piace Ricevuti:
    0
    Punteggio:
    0
    PERFETTO !!!!
    Ci sono riuscito:
    ho creato il fila perl'immissione della data (che posto qui sotto) e quello per gestire il risultato (che posto di seguito all'altro)

    <form method="post" action="preventivo.php">
    <table width="41%" cellspacing="2">
    <tr>
    <td width="40%">Data di consegna</td>
    <td width="60%"><input name="data1" type="text" placeholder="2014-01-01"></td>
    </tr>
    <tr>
    <td>Data di ritiro</td>
    <td><input name="data2" type="text" placeholder="2014-01-01"></td>
    </tr>
    <tr>
    <td><input type="submit" name="submit" id="submit" value="Invia"></td>
    </tr>
    </table>

    </form>

    e questo è preventivo.php


    <?php

    $data1 = $_POST['data1'];
    $data2 = $_POST['data2'];


    $giorni = intval((strtotime($data2)-strtotime($data1))/86400);

    echo "Il costo per il periodo indicato è di €", (5*$giorni), " .";?>


    Grazie ragazzi......ma ora ho un'altra domanda - non so se devo aprire un nuovo post -

    Se voglio cambiare il colore e lo sfondo del pulsante "invia"....come faccio ?
    Sicuramente è semplice, ma mi sono spremuto per ottenere il risultato desiderato e sono scarico !!!!
     
  16. edin

    edin Utente Attivo

    Registrato:
    7 Novembre 2013
    Messaggi:
    92
    Mi Piace Ricevuti:
    0
    Punteggio:
    6
    Home Page:
    con il css tramite l'id dell'elemento:
    PHP:
    <style>
    #submit{  background:red;
               
    border:none;
            
    color:white
    }
    </
    style>

    http://www.edinweb.altervista.org
     
Sto caricando...
Discussioni simili - Gestione date preventivo
  1. luigi777
    Risposte:
    11
    Visite:
    1.029
  2. stevenson
    Risposte:
    1
    Visite:
    868
  3. sabrina1980
    Risposte:
    0
    Visite:
    688
  4. atti84it
    Risposte:
    0
    Visite:
    661
  5. gial
    Risposte:
    2
    Visite:
    118

Condividi questa Pagina