Bravo! : )
Bravo! : )
Se riempio il carrello e invio il form, appare l'alert php
a cosa ti riferisci che non ho capito...
Fai una prova: riempi il carrello e invia il form, uscirà l'alert php Il carrello è vuoto http://www.libridelbenessere.altervista.org/
? non me lo fa ..... riempio il carrello premo invio .. ma non mi appare il cartello !
appena testato su IE11 , FireFox , Chrome , Opera , Safari ... tutto OK
--------------------
p.s.
perche' non definiamo la F nella funzione controlloG come ti ho suggerito prima ?
Ultima modifica di NLSweb : 04-11-2014 alle ore 00.40.22
Definiamo la f
*******************
Dimmi una cosa: tu nella prova di prima, ti è uscito il messaggio verde così? Il tuo ordine è stato inviato!
Ultima modifica di gruppoalveo : 04-11-2014 alle ore 00.58.43
nella funzione controlloG
all'inizio inserisci
Codice:var f = $("#mioG");
L'ho messa qui
Prima ti avevo chiesto se quando hai fatto la prova ti è apparsa la scritta verde Il tuo ordine è stato inviato!Codice:function controlloG(){ /* Controlla se il carrello è pieno o vuoto */ var totaleacquisto = $("#areacalcolo .totspesa").val(); totaleacquisto = totaleacquisto.toString(); totaleacquisto = totaleacquisto.replace(",", "."); totaleacquisto = parseFloat(totaleacquisto); if(totaleacquisto<=0){ document.getElementById('carrelloG').innerHTML = "Il tuo carrello è vuoto!"; $("#carrelloG").show(); } /* Verifica che i campi del form siano stati riempiti */ var verifica = true; var f = $("#mioG"); var controlla = nomeCampoG(); if (!controlla){ f.controlla.focus(); verifica = false; } ...
perché non è arrivata la mail di avviso
No... nessun messaggio che conferma l'invio dell'ordine...
p.s.
ma action del form ... adesso esegue index.php .... ma non dovrebbe eseguire formG.php ..
Ultima modifica di NLSweb : 04-11-2014 alle ore 01.25.16
A me intercetta l'alert qui sotto con safari e chrome, niente con FF, qualcosa non va. Se in formG tolgo variabile e codice, il form va a buon fine (però poi nel passaggio da un altro errore), se escono gli alert php il form torna alla home, come dev'essere.
Codice PHP:
$carrelloG = ($_POST['carrelloG']);
...
//Carrello (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($carrelloG == "") {
$errore .= "• Il tuo carrello è vuoto<br><br>";
}
}
Il form se va a buon fine ritorna alla index perché ha gli include. Posso togliere l'onsubmit dal form?
Codice HTML:… <div class="footer"> <?php include ("ordine/formG.php"); include ("carrello.php"); ?> </div><!--footer--> </div> <!-- container --> </body> </html>
Se c'è errore ed il form torna alla index, non mantiene le sessioni dei campi form, però se tolgo questo le mantiene, forse qualche conflitto
Codice HTML:... /* Se è tutto ok, prosegui con i dati nel carrello... */ if(totaleacquisto>0 && verifica){ $(".nomeLibro").each(function(){ var nome = $(this).html(); $("#shopping").append("<input type='text' name='prodotto[]' value='"+nome+"'>"); }); $(".moneyCarrello1").each(function(){ var prezzo = $(this).val(); $("#shopping").append("<input type='text' name='prezzo[]' value='"+prezzo+"'>"); }); $(".quantity").each(function(){ var quantita = $(this).val(); $("#shopping").append("<input type='text' name='quantita[]' value='"+quantita+"'>"); }); $(".subTotaleX").each(function(){ var subtot = $(this).val(); $("#shopping").append("<input type='text' name='subtotale[]' value='"+subtot+"'>"); });
Ultima modifica di gruppoalveo : 04-11-2014 alle ore 11.27.31
Abbiamo impostato che al caricamento della pagina , il modulo d'ordine ed il carrello si azzerano..
quindi se c'e' un errore dopo che i dati sono stati inviati , al momento non c'e' modo di ripristinare i campi.
non capisco ancora dove sia il conflitto...
Hai provato ad inviare il form? Non va a buon fine
Ho provato ad inviare il Form , ma non appare il messaggio che conferma l'operazione... (con FF)
ma non capisco dove sia errore ... il submit viene riabilitato e action del form viene eseguito.. la pagina si vede che si ricarica..ma qualcosa si perde nell'esecuzione del file PHP
Penso è un problema php. Ti allego il codice che ho in formG. Comunque, prima che mettevamo i controlli js in carrello.php funzionava tutto
Codice PHP:
<?php
if(isset($_POST['inviaG'])) {
$data_localeG = time(); //Stampa nel db la data numerica es. 1360585588
$nomeG = htmlspecialchars(addslashes(ucfirst(trim($_POST['nomeG']))));
$cognome = htmlspecialchars(addslashes(ucfirst(trim($_POST['cognome']))));
$via = htmlspecialchars(addslashes(ucwords(trim($_POST['via']))));
$n = htmlspecialchars(addslashes(ucfirst(trim($_POST['n']))));
$loc = htmlspecialchars(addslashes(ucfirst(trim($_POST['loc']))));
$pro = htmlspecialchars(addslashes(ucfirst(trim($_POST['pro']))));
$cap = htmlspecialchars(addslashes(trim($_POST['cap'])));
$naz = htmlspecialchars(addslashes(ucfirst(trim($_POST['naz']))));
$email = htmlspecialchars(strtolower($_POST['email']));
$email = str_replace(" ","",$email); // Toglie gli spazi interni nell'email
$tel = htmlspecialchars(addslashes(trim($_POST['tel'])));
$messaggioG = htmlspecialchars(addslashes(ucfirst(trim($_POST['messaggioG']))));
$pagamento = ($_POST['pagamento']);
$validatorG = htmlspecialchars(trim($_POST['validatorG']));
$carrelloG = ($_POST['carrelloG']);
$_SESSION['nomeG'] = $nomeG;
$_SESSION['cognome'] = $cognome;
$_SESSION['via'] = $via;
$_SESSION['n'] = $n;
$_SESSION['loc'] = $loc;
$_SESSION['pro'] = $pro;
$_SESSION['cap'] = $cap;
$_SESSION['naz'] = $naz;
$_SESSION['email'] = $email;
$_SESSION['tel'] = $tel;
$_SESSION['pagamento'] = $pagamento;
$_SESSION['messaggioG'] = $messaggioG;
//dichiaro la variabile e la rendo vuota, altrimenti da errore
$errore = '';
//strlen = numero di byte occupati dalla stringa, questo significa compresi gli spazi interni fra le parole
if (strlen($nomeG) > 20) {
$errore .= "• NOME: max 20 caratteri<br><br>";
}
if (strlen($cognome) > 30) {
$errore .= "• COGNOME: max 30 caratteri<br><br>";
}
if (strlen($via) > 30) {
$errore .= "• VIA: max 30 caratteri<br><br>";
}
if (strlen($n) > 10) {
$errore .= "• N°: max 10 caratteri<br><br>";
}
if (strlen($loc) > 30) {
$errore .= "• LOCALITÀ: max 30 caratteri<br><br>";
}
if (strlen($pro) > 30) {
$errore .= "• PROVINCIA: max 10 caratteri<br><br>";
}
if (strlen($cap) > 10) {
$errore .= "• CAP: max 10 caratteri<br><br>";
}
if (strlen($naz) > 20) {
$errore .= "• NAZIONE: max 20 caratteri<br><br>";
}
if (strlen($email) > 320) {
$errore .= "• EMAIL: max 320 caratteri<br><br>";
}
if (strlen($tel) > 20) {
$errore .= "• TEL: max 20 caratteri<br><br>";
}
// Non conteggia le new line
if (strlen(str_replace(array("\n", "\r"),"", $messaggioG)) > 200) {
$errore .= "• MESSAGGIO: max 200 caratteri<br><br>";
}
if (strlen($validatorG) > 4 ) {
$errore .= "• CODICE: max 4 caratteri<br><br>";
}
//Nome (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($nomeG == "") {
$errore .= "• Inserire il Nome<br><br>";
}
}
//Cognome (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($cognome == "") {
$errore .= "• Inserire il Cognome<br><br>";
}
}
//Via (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($via == "") {
$errore .= "• Inserire la Via<br><br>";
}
}
//Numero (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($n == "") {
$errore .= "• Inserire il Numero<br><br>";
}
}
//Località (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($loc == "") {
$loc .= "• Inserire la Località<br><br>";
}
}
//Provincia (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($pro == "") {
$errore .= "• Inserire la Provincia<br><br>";
}
}
//CAP (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($cap == "") {
$errore .= "• Inserire il CAP<br><br>";
}
}
//Email (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($email == "") {
$errore .= "• Inserire l'Email<br><br>";
}
}
//Valida email
if ($email) {
if (!preg_match("/^[^.-]([.]?[^.-]+)*([-][^.-])?([.]?[^.-])*@(.*)[^.](\.[a-z]{2,6})$/",$email)) {
$errore .= "• Email non valida<br><br>";
}
}
//Telefono (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($tel == "") {
$errore .= "• Inserire il Telefono<br><br>";
}
}
//Pagamento (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($pagamento == "") {
$errore .= "• Selezionare un tipo di pagamento<br><br>";
}
}
//Validatore (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($validatorG == "") {
$errore .= "• Inserire il Codice<br><br>";
}
}
//Controlla che il codice Captcha inserito corrisponda a quello che appare nell'immagine
if(!empty($_POST['inviaG'])) {
if ($_SESSION['rand_code'] != strtolower(trim($_POST['validatorG']))) {
$errore .= "• Codice errato!<br><br>";
}
}
//Carrello (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($carrelloG == "") {
$errore .= "• Il tuo carrello è vuoto<br><br>";
}
}
if ($naz == "") {
$naz =" Italia";
}
//Questo codice se il campo è vuoto mette a video la barretta IN MAIL
if ($messaggioG == "") {
$messaggioG ="-";
}
//Scrive i dati all'interno della tabella del db in un certo ordine
$q="INSERT INTO ordine(data_localeG,dataGmt,destinazione_libri,email,telefono,pagamento,note,carrello,ip)
VALUES('$data_localeG','$dataGmt','$nomeG $cognome Via $via $n $cap $loc ($pro) $naz','$email','$tel','$pagamento','$messaggioG','$carrelloG','$ip')";
// Lancio la query
$ris=mysql_query($q);
// Controllo l'esito
if (!$ris) {
die("Errore nella query $query: " . mysql_error());
}
//Estraggo i messaggi dall'alto verso il basso, in ordine crescente
$q="SELECT * FROM ordine ORDER BY id DESC";
//Lancio la query
$ris=mysql_query($q);
if($errore==""){
echo "<div class=\"traspG\"></div><div class=\"inviatoG\"><div style=\"margin-top:25px; margin-bottom:30px; text-align:center;\"><img src=\"immagini/ok.png\" width=\"60\" height=\"60\" alt=\"Ok\" title=\"Ok\"></div><div style=\"font-size:19px; padding-top: 10px;\">Il tuo ordine è stato inviato!</div></div>";
echo "<meta http-equiv='refresh' content='1; url=\"index.php\">";
session_destroy();
//CODICI INVIO EMAIL
}
else {
echo "<div class=\"traspG\"></div><div class=\"alertG\"><div style=\"margin-top:25px;margin-bottom:30px;text-align:center;\"><img src=\"immagini/alert.png\" width=\"70\" height=\"70\" alt=\"Alert\" title=\"Alert\"></div>$errore</div>";
echo "<meta http-equiv=\"refresh\" content=\"1; url=".htmlspecialchars($_SERVER['PHP_SELF'])."?#segnalibroOrdine\">";
}
}
?>
//FORM
Ultima modifica di gruppoalveo : 05-11-2014 alle ore 15.29.08
Analizzando il codice , ho notato che non ci sono i POST dei dati del carrello e che esegui il controllo se il carrello e' vuoto su carrelloG che e' l'area del messaggio "il carrello e' vuoto" ...
quindi , come prima cosa preleverei i dati del carrello usando questo metodo:
chiaramente questo e' solo un esempio poi scegli tu come visualizzare i dati.
Codice PHP:
$prodotto = $_POST['prodotto'];
$prezzo= $_POST['prezzo'];
$quantita= $_POST['quantita'];
$subtotale= $_POST['subtotale'];
echo "elenco prodotti:";
for($i=0;$i<sizeof($prodotto);$i++){
echo "Titolo:".$prodotto[$i]." , Prezzo:".$prezzo[$i]." , Quantita:".$quantita[$i]." , SubTot:".$subtotale[$i];
}
questo dato $carrelloG = ($_POST['carrelloG']);
non credo che ti serva.. se vuoi verificare che il carrello e' vuoto , forse e' meglio inviare anche il dato del TOTALE
quindi nel PHP lo recuperi cosi:Codice:var TotCarrello = $("#areacalcolo .totspesa").val(); $("#shopping").append("<input type='text' name='totale' value='"+TotCarrello+"'>");
e il controllo PHP sul carrello lo puoi fare cosi:Codice:$totale= $_POST['totale'];
Codice PHP:
//Carrello (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($totale == "") {
$errore .= "• Il tuo carrello è vuoto<br><br>";
}
}
Questo dove lo metto?
$prodotto = $_POST['prodotto'];
$prezzo= $_POST['prezzo'];
$quantita= $_POST['quantita'];
$subtotale= $_POST['subtotale'];
echo "elenco prodotti:";
for($i=0;$i<sizeof($prodotto);$i++){
echo "Titolo:".$prodotto[$i]." , Prezzo:".$prezzo[$i]." , Quantita:".$quantita[$i]." , SubTot:".$subtotale[$i];
}
in formG
Nel carrello.php
Codice:if(totaleacquisto>0 && verifica){ $(".nomeLibro").each(function(){ var nome = $(this).html(); $("#shopping").append("<input type='text' name='prodotto[]' value='"+nome+"'>"); }); $(".moneyCarrello1").each(function(){ var prezzo = $(this).val(); $("#shopping").append("<input type='text' name='prezzo[]' value='"+prezzo+"'>"); }); $(".quantity").each(function(){ var quantita = $(this).val(); $("#shopping").append("<input type='text' name='quantita[]' value='"+quantita+"'>"); }); var TotCarrello = $("#areacalcolo .totspesa").val(); $("#shopping").append("<input type='text' name='totale' value='"+TotCarrello+"'>"); /* ...e riabilitiamo il submit del form */ $("#mioG").submit(function(event){ $(this).unbind('submit').submit(); }); } } </script>
Ho messo così, ma con FF non mostra gli avvisi php, con gli altri browser appare sempre l'alert php che il carrello è vuoto anche se è pieno.
Codice PHP:
<?php
if(isset($_POST['inviaG'])) {
$data_localeG = time(); //Stampa nel db la data numerica es. 1360585588
$nomeG = htmlspecialchars(addslashes(ucfirst(trim($_POST['nomeG']))));
$cognome = htmlspecialchars(addslashes(ucfirst(trim($_POST['cognome']))));
$via = htmlspecialchars(addslashes(ucwords(trim($_POST['via']))));
$n = htmlspecialchars(addslashes(ucfirst(trim($_POST['n']))));
$loc = htmlspecialchars(addslashes(ucfirst(trim($_POST['loc']))));
$pro = htmlspecialchars(addslashes(ucfirst(trim($_POST['pro']))));
$cap = htmlspecialchars(addslashes(trim($_POST['cap'])));
$naz = htmlspecialchars(addslashes(ucfirst(trim($_POST['naz']))));
$email = htmlspecialchars(strtolower($_POST['email']));
$email = str_replace(" ","",$email); // Toglie gli spazi interni nell'email
$tel = htmlspecialchars(addslashes(trim($_POST['tel'])));
$messaggioG = htmlspecialchars(addslashes(ucfirst(trim($_POST['messaggioG']))));
$pagamento = ($_POST['pagamento']);
$validatorG = htmlspecialchars(trim($_POST['validatorG']));
// Variabili del carrello
$prodotto = $_POST['prodotto'];
$prezzo= $_POST['prezzo'];
$quantita= $_POST['quantita'];
$subtotale= $_POST['subtotale'];
$totale= $_POST['totale'];
//QUESTA PARTE L'HO MESSA NELLA EMAIL <-----------------
echo "elenco prodotti:";
for($i=0;$i<sizeof($prodotto);$i++){
echo "Titolo:".$prodotto[$i]." , Prezzo:".$prezzo[$i]." , Quantita:".$quantita[$i]." , SubTot:".$subtotale[$i];
}
//FINE EMAIL
...
//Carrello (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($totale == "") {
$errore .= "• Il tuo carrello è vuoto<br><br>";
}
}
...
//Scrive i dati all'interno della tabella del db in un certo ordine
$q="INSERT INTO ordine(data_localeG,dataGmt,destinazione_libri,email,telefono,pagamento,note,carrello,ip)
VALUES('$data_localeG','$dataGmt','$nomeG $cognome Via $via $n $cap $loc ($pro) $naz','$email','$tel','$pagamento','$messaggioG','$totale','$ip')";
Ultima modifica di gruppoalveo : 06-11-2014 alle ore 07.15.27
Come viene determinato inviaG ?
ma l'email vengono inviate con i dati ?con FF non mostra gli avvisi php
I dati vengono inviati (senza il carrello) se tolgo questo, altrimenti esce sempre questo alert che blocca l'invio
Codice PHP:
//Carrello (Campo obbligatorio)
if(!empty($_POST['inviaG'])) {
if ($totale == "") {
$errore .= "• Il tuo carrello è vuoto<br><br>";
}
}
Come viene determinato inviaG ?
Che intendi, questo?
Codice HTML:<button type="submit" class="aggiungi" name="inviaG" value="inviaG" onclick="controlloG()" style="cursor:pointer;">Invia</button>
Ultima modifica di gruppoalveo : 08-11-2014 alle ore 21.48.27
CIAO
..finiamo il lavoro ! (non ti ho abbandonato .. solo molto impegnato)
secondo me questo codice di controllo non ti serve ..
ma tu dici:Codice:if(!empty($_POST['inviaG'])) { ...
come è possibile ?! ..I dati vengono inviati (senza il carrello)..
la funzione controlloG , aggiungi i campi del carrello prima di eseguire il submit !
i valori dele variabili del carrello sono vuoti o cosa ? (esempio $subtotale= $_POST['subtotale'];)
per favore se puoi controlla i valori delle variabili (con un echo o un alert vedi tu..) dopo il submit
se ancora non va , possiamo modificare il metodo di inserimento dei campi del carrello nel form..