Gestione date per preventivo

Daniele Rapinesi

Utente Attivo
7 Gen 2014
60
0
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 ....
 
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.
 
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 !
 
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!!!!
 

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
 
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.
 
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
 
Potresti usare ajax per passare il dato in post allo script e poi stampare il risultato in un contenitore a scelta.
 
uhmmm .... ajax non lo conosco proprio .... vado a cercare di capire come funziona girando un po in rete .....
Grazie lo stesso !!!
 
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


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:
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!!!
 
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
 
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 = "[email protected]";
$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
}
?>
 
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 !!!!
 

Discussioni simili