Bravo! : )
Printable View
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 ?
Definiamo la f
*******************
Dimmi una cosa: tu nella prova di prima, ti è uscito il messaggio verde così? Il tuo ordine è stato inviato!
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 ..
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+"'>");
});
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
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')";
Come viene determinato inviaG ?
ma l'email vengono inviate con i dati ?Citazione:
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>";
}
}
Citazione:
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>
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 ?! ..Citazione:
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..