[PHP] Invio ordine via email

ANDREA20

Utente Attivo
25 Giu 2016
145
1
18
27
Buongiorno.

Io devo inviare l'ordine via email ho già creato tutto in php e collegato tutto con il server devo inserire alcune funzioni in più applicare un sconto del 20% se superi 36 euro di ordine
In più se tu sei oltre 4 km dal ristorante non puoi effettuare l'ordine per la consegna a domicilio spero che sapete aiutare Buona giornata
 
Ultima modifica:
ciao
da quello che dici e che ho capito la prima cosa mi sembrerebbe semplice
appena calcolato l'importo totale e prima di mostrarlo
PHP:
//......
if($importo_totale<36){
    echo "importo totale: $importo_totale &#8364;";
}else{
    $sconto=0.2;
    echo "importo: $importo_totale &#8364;<br>";
    echo "sconto: ".(int)($sconto*100)." %<br>";
    $importo_totale=$importo_totale*(1-$sconto)
    echo "importo totale: ".number_format($importo_totale, 2, ',', ' ');." &#8364;<br>";
}
//....
per la seconda è più complesso, intendi geolocalizzare l'utente e dalle sue coordinate calcolare la distanza dal tuo esercizio?
se è così il problema non è il calcolo della distanza che è gnocco, ma il ricavare le coordinate dell'utente:
intanto l'utente non deve utilizzare chrome
se usando il pc spesso le coordinate sono errate in quanto le sue coordinate si riferiscono probabilmente al nodo (io abito a 30 kh da parma ma le mie coordinate risultano essere centro città di parma)
se sta usando es. un cellulare oltre che aver consentito la geolocalizzazione, come detto, non deve utilizzare chrome perchè chrome non permette la geolocalizzazione per motivi di privacy.
 
Buongiorno.
Per la coordinate sarà l'utente dalla area clienti ad impostare dove abita/per la consegna a domicilio

Invece per lo sconto va inserito dentro alle funzioni giusto?

E per invio ordinare via email?
Grazie mille per la pazienza
 
ciao
sei un po' vago e quindi devo lavorare di fantasia.
immagino che l'utente faccia la scelta (tipo e quantità) da un form, dove tra l'altro inserirà i suoi dati (nome email indirizzo...)
che tu abbia un db in cui hai il tipo di piatto e il relativo prezzo unitario (questo mi sembra il minimo) ti schematizzo, però tralascio tutti icontrolli
es db: tabella pietanze
id tipo p_unit
1 pizza 5
2 calzone 7
3 tiramisu 3
..ecc..
form invio
PHP:
<form action="conferma.php" method="post">
    tuo nome<input name="nome" type="text"><br>
    <!-- e gli altri dtai-->
<?php
//qui in base alla tabella elenchi
//io costruirei un arrai di array
    $ris=mysqli_query($connessione, "SELECT * FROM pietanze");
    while($riga=mysqli_fetch_assoc($ris)){
        $pietanza=$riga['tipo'];
        $unitario=$riga['p_unit'];
        //qui l'utente inserira es quante pizze e quanti tiramisu vorrà
        echo "$pietanza <input name=\"quantita[$pietanza]\" type=\"text\"> p.u. $unitario &#8364;<br>";
    }
?>
<input type="submit" name="ordina" value="ordina">
</form>
e la parte di invio
PHP:
<?php
//dati di connessione
$nome=$_POST['nome'];
$email=$_POST['email'];
//...
$tot_importo=0;
//leggi le pietanze ordinate
foreach($_POST['quantita'] as $tipo => $quante){
    $ris=mysqli_query($connessione,"SELECT p_unit FROM pietanze WHERE tipo=$tipo");
    //prepari rigo dell'ordine
    $riga=mysqli_fetch_assoc($ris);
    $rigo_ordine[]="ordinate n. $quante $tipo importo parziale: ".$quante*$riga['p_unit']." &#8364;<br>";
    $tot_importo+=$quante*$riga['p_unit'];
}
//qui conviene verificare che $tot_importo > 0, perchè se 0 non ha ordinato nulla
//qui prepari il testo da inviare per email
if($tot_importo<36){
    $importo= "importo totale: $importo_totale &#8364;";
}else{
    $sconto=0.2;
    $importo="importo: $importo_totale &#8364;<br>";
    $importo.="sconto: ".(int)($sconto*100)." %<br>";
    $importo_totale=$importo_totale*(1-$sconto)
    $importo.="importo totale: ".number_format($importo_totale, 2, ',', ' ')." &#8364;<br>";
}
$testo="il sig. $nome ha ordinato:<br>";
foreach($rigo_ordine as $cosa){
    $testo.=$cosa;
}
$testo.=$cosa.$importo."cordiali saluti";//testo pronto per l'invio
//e qui fai l'invio....
?>
poi per inviare puoi usare la funzione mail() o molto meglio la classe phpmailer
https://www.mrw.it/php/inviare-email-classe-phpmailer_7047.html
come detto ho omesso gli indispensabili controlli e non ho formattato il testo da inviare che potrebbe essere inviato in formato html
spero di aver soddisfatto quanto chiedevi

scusa ho fatto un errore di copy/paste da una parte ho scritto $tot_importo e in un'altra $importo_totale correggi sono la stessacosa
 
non applica lo sconto


ciao
da quello che dici e che ho capito la prima cosa mi sembrerebbe semplice
appena calcolato l'importo totale e prima di mostrarlo
PHP:
//......
if($importo_totale<36){
    echo "importo totale: $importo_totale &#8364;";
}else{
    $sconto=0.2;
    echo "importo: $importo_totale &#8364;<br>";
    echo "sconto: ".(int)($sconto*100)." %<br>";
    $importo_totale=$importo_totale*(1-$sconto)
    echo "importo totale: ".number_format($importo_totale, 2, ',', ' ');." &#8364;<br>";
}
//....
per la seconda è più complesso, intendi geolocalizzare l'utente e dalle sue coordinate calcolare la distanza dal tuo esercizio?
se è così il problema non è il calcolo della distanza che è gnocco, ma il ricavare le coordinate dell'utente:
intanto l'utente non deve utilizzare chrome
se usando il pc spesso le coordinate sono errate in quanto le sue coordinate si riferiscono probabilmente al nodo (io abito a 30 kh da parma ma le mie coordinate risultano essere centro città di parma)
se sta usando es. un cellulare oltre che aver consentito la geolocalizzazione, come detto, non deve utilizzare chrome perchè chrome non permette la geolocalizzazione per motivi di privacy.
 
Ultima modifica:
ciao
intanto hai corretto l'errore che avevo fatto?
poi metti un var_dump per verificare il totale
PHP:
//......
var_dump($tot_importo);//poi lo togli
//qui prepari il testo da inviare per email
if($tot_importo<36){
//.........
e guarda cosa riporta (dovrebbe darti il totale)
 
ciao

posta la riga 122 e un paio di quelle prima

1) poi volevo chiedere un altra cosa come faccio ad impostare un numero ordine che parte da 1 senza fine quindi di continuo
2) ho devo dividere i menu quindi antipasti sashimi per il database devo creare ogni cartella con una pagina del menu giusto? perchè se le metto insieme mi esce tutto il menu insieme antipasti

grazie mille per la pazienza
PHP:
<?php
//dati di connessione
$nome=$_POST['nome'];
$email=$_POST['email'];
//...
$tot_importo=0;
//leggi le pietanze ordinate
foreach($_POST['quantita'] as $tipo => $quante){
    $ris=mysqli_query($connessione,"SELECT menu FROM menu WHERE id =$id);
    //prepari rigo dell'ordine
    $riga=mysqli_fetch_assoc($ris);
  // riga 122:  
$rigo_ordine[]="ordinate n. $quante $tipo importo parziale"$quante*$riga[menu]";
    $tot_importo+=$quante*$riga[menu];
}
 
Ultima modifica di un moderatore:
ciao
intanto correggi così
PHP:
$rigo_ordine[]="ordinate n. $quante $tipo importo parziale".$quante*$riga[menu];
poi per il resto abbi un minuto di pazienza
 
ciao
intanto correggi così
PHP:
$rigo_ordine[]="ordinate n. $quante $tipo importo parziale".$quante*$riga[menu];
poi per il resto abbi un minuto di pazienza

l'errore c'è comunque

Parse error: syntax error, unexpected ']', expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in/web/htdocs/www.civiaggio.it/home/ristoranti/Milano152/Sushibarfirenze/carrello.php on line 118

$rigo_ordine[]="ordinate n. $quante $tipo importo parziale".$quante*$riga[menu];
 
Ultima modifica:
ciao
guarda che non è semplice darti indicazioni senza sapere come hai strutturato le tabelle e come il form (che chiami carrello) con cui il cliente fa l'ordine
come già detto quante e come strutturate le tabelle è il primo passo e il più importante, se fatte male ti incasini.
 

Discussioni simili