Evitare che la pagina si ricarichi
- Questo topic ha 15 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 11 anni, 4 mesi fa da jqueryitalia.
- AutorePost
- 16 Gennaio 2013 alle 18:37 #3885QunsyPartecipante
Ho un codice per il sondaggio che quando l’utente vota poi la pagina si deve ricaricarsi per stampare il risultato, vorrei evitare il caricamento della pagina e ho pensato a jQuery che tra l’altro uso già
$valore) { if($chiave !="id") { ${$chiave}=$valore;//valore del campo $tot=$tot+$valore;//faccio il totale } } if($tot > 0) { $internet= (int)($internet/$tot*100); $internet_pos=$internet-100; $depliant= (int)($depliant/$tot*100); $depliant_pos=$depliant-100; $casualmente= (int)($casualmente/$tot*100); $casualmente_pos=$casualmente-100; $amici_o_conoscenti= (int)($amici_o_conoscenti/$tot*100); $amici_pos=$amici_o_conoscenti-100; $giornali_o_televisione= (int)($giornali_o_televisione/$tot*100); $giornali_pos=$giornali_o_televisione-100; } else { $internet= 0; $internet_pos=-100; $depliant= 0; $depliant_pos=-100; $casualmente= 0; $casualmente_pos=-100; $amici_o_conoscenti= 0; $amici_pos=-100; $giornali_o_televisione= 0; $giornali_pos=-100; } if(isset($_POST['puls_invio'])) { if(isset($_POST['voto'])) { $voto=mysql_real_escape_string($_POST['voto']); $q="UPDATE sondaggio SET $voto = $voto + 1 WHERE id=1"; if(mysql_query($q)) { echo "Grazie, il tuo voto è stato inserito!"; echo "meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."; } else { echo "Devi selezionare una risposta!"; echo "meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."; } } else { echo "Hai già votato, grazie!"; echo "meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."; } } ?>
17 Gennaio 2013 alle 16:03 #3889jqueryitaliaAmministratoreCiao Qunsy.
Probabilmente non hai letto attentamente le istruzioni per inserire codice nel forum e quindi parte dello stesso è stato ‘cancellato’.
Puoi inserirlo nuovamente?
Grazie.17 Gennaio 2013 alle 16:08 #3890QunsyPartecipanteIl codice che ho postato è quello con lo sfondo nero (ma non potevate metterne uno più bello, es. grigio?)
19 Gennaio 2013 alle 10:00 #3891jqueryitaliaAmministratoreIl codice che hai postato è nel box nero perchè ce l’ho messo io, in quanto non avevi seguito le istruzioni per postare codice all’interno del Forum 😛
Per quanto riguarda il tuo problema non capisco che cosa c’entri jQuery visto che il codice postato è PHP… o_0
Se, come suppongo, il codice è quello relativo ad una chiamata ajax è ovvio che la pagina si ricarichi visto che imponi via PHP un refresh.19 Gennaio 2013 alle 11:39 #3902QunsyPartecipanteAppunto, io vorrei evitare che si ricarichi, vorrei che come clicc o “Vota” si stampi subito l’avviso senza bisogno di ricaricare la pagina, e ho pensato che con jQuery forse si può fare.
19 Gennaio 2013 alle 12:40 #3903jqueryitaliaAmministratoreScusa Qunsy, continuo a non capire…
Vuoi il codice jQuery per effettuare la cosa o usi già jQuery e non riesci a salvare i dati?19 Gennaio 2013 alle 12:43 #3904QunsyPartecipanteMi serve il codice jQuery da mettere al posto del meta refresh, nella directory del mio sito ho già il file jquery.js
19 Gennaio 2013 alle 15:16 #3905jqueryitaliaAmministratoreOK, ci siamo!!! 🙂
Allora andiamo per step:
1) all’action del form che invia il voto assegni il valore ‘javascript:;’, cioè:<form method="post" action="javascript:;">
2) sostituisci il submit del form con un input type button a cui assegni un id, esempio:
<input type="button" id="sendvote" value="vota" />
3) Dai al campo voto l’id voto, ed inserisci nella pagina dove è presente il form jquery.js ed il seguente script:
<script type="text/javascript"> $(function () { $('#sendvote').click( function() { $.ajax({ type: "POST", url: "salvavoto.php", data: "voto="+$('#voto').val(), success: function(msg){ $("div.result").html(msg); }, error: function(){ alert("Chiamata fallita!!!"); } }); }); }); </script>
4) Tutto il codice che hai postato lo devi spostare nel file salvavoto.php che deve avere come ultima istruzione
echo $returnMsg
Dove $returnMsg è il messaggio che deve comparire. e che comparirà nel div di classe result
19 Gennaio 2013 alle 15:51 #3907QunsyPartecipanteNon ho capito il punto 3, ti posto l’intero codice originale con il form
<?php $q="SELECT * FROM sondaggio WHERE id=1"; $risultato = mysql_query($q); $riga=mysql_fetch_assoc($risultato); $tot=0;//metto il totale a 0 foreach($riga as $chiave => $valore) { if($chiave !="id") { ${$chiave}=$valore;//valore del campo $tot=$tot+$valore;//faccio il totale } } if($tot >0) { $giornali= (int)($giornali/$tot*100); $giornali_pos=$giornali-100; $depliant= (int)($depliant/$tot*100); $depliant_pos=$depliant-100; $televisione= (int)($televisione/$tot*100); $televisione_pos=$televisione-100; $web_banner= (int)($web_banner/$tot*100); $web_banner_pos=$web_banner-100; $casualmente= (int)($casualmente/$tot*100); $casualmente_pos=$casualmente-100; $motori_di_ricerca= (int)($motori_di_ricerca/$tot*100); $motori_di_ricerca_pos=$motori_di_ricerca-100; $amici_o_conoscenti= (int)($amici_o_conoscenti/$tot*100); $amici_o_conoscenti_pos=$amici_o_conoscenti-100; } else { $giornali= 0; $giornali_pos=-100; $depliant= 0; $depliant_pos=-100; $televisione= 0; $televisione_pos=-100; $web_banner= 0; $web_banner_pos=-100; $casualmente= 0; $casualmente_pos=-100; $motori_di_ricerca= 0; $motori_di_ricerca_pos=-100; $amici_o_conoscenti= 0; $amici_o_conoscenti_pos=-100; } if(isset($_POST['puls_invio'])) { if(!isset($_COOKIE['votato'])) { //Setta il cookie (2/4), il primo si trova in connessione.php if(isset($_POST['voto'])) { $voto=mysql_real_escape_string($_POST['voto']); $q="UPDATE sondaggio SET $voto = $voto + 1 WHERE id=1"; if(mysql_query($q)) { echo "Grazie, il tuo voto è stato inserito!"; echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>"; //setcookie("votato", "si", time()+5*365*24*60*60); //Dura 5 anni, setta il cookie (3/4) } } else { echo "Devi selezionare una risposta!"; echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>"; } } else { echo "Hai già votato, grazie!"; echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>"; } } ?> <p style="font-size:13px; text-align:center; margin-top:-5px; margin-bottom:30px; color:#e40202;">Come hai conosciuto i prodotti Akuna?</p> <div style="margin-top:-10px; margin-left:3px; text-align:left;"> <form method="post" action="javascript:;"> <div class="fra"> <input type="radio" name="voto" value="giornali"> Giornali <br /> <div class="a" style="background-position:<?php echo $giornali_pos;?>px"></div><div class="percentuale"><?php echo $giornali;?>%</div> <br /> <input type="radio" name="voto" value="depliant"> Depliant <br /> <div class="a" style="background-position:<?php echo $depliant_pos;?>px"></div><div class="percentuale"><?php echo $depliant;?>%</div> <br /> <input type="radio" name="voto" value="televisione"> Televisione <br /> <div class="a" style="background-position:<?php echo $televisione_pos;?>px"></div><div class="percentuale"><?php echo $televisione;?>%</div> <br /> <input type="radio" name="voto" value="web_banner"> Web banner <br /> <div class="a" style="background-position:<?php echo $web_banner_pos;?>px"></div><div class="percentuale"><?php echo $web_banner;?>%</div> <br /> <input type="radio" name="voto" value="casualmente"> Casualmente <br /> <div class="a" style="background-position:<?php echo $casualmente_pos;?>px"></div><div class="percentuale"><?php echo $casualmente;?>%</div> <br /> <input type="radio" name="voto" value="motori_di_ricerca"> Motori di ricerca <br /> <div class="a" style="background-position:<?php echo $motori_di_ricerca_pos;?>px"></div><div class="percentuale"><?php echo $motori_di_ricerca;?>%</div> <br /> <input type="radio" name="voto" value="amici_o_conoscenti"> Amici o conoscenti <br /> <div class="a" style="background-position:<?php echo $amici_o_conoscenti_pos;?>px"></div><div class="percentuale"><?php echo $amici_o_conoscenti;?>%</div> <div style="margin-top:30px; text-align:center;"> <!--<input type="submit" name="puls_invio" value="Vota" class="manina-guest">--> <input type="button" id="sendvote" value="vota" /> </div> </div><!-- fra --> </form> </div><!-- div style -->
20 Gennaio 2013 alle 11:49 #3908AnonimoAllora crea il file salvavoto.php ed all’interno inserisci il codice php:
$voto=mysql_real_escape_string($_POST['voto']); $q="UPDATE sondaggio SET $voto = $voto + 1 WHERE id=1"; if(mysql_query($q)) { echo "Grazie, il tuo voto è stato inserito!"; //setcookie("votato", "si", time()+5*365*24*60*60); //Dura 5 anni, setta il cookie (3/4) } else { echo "Problemi durante il salvataggio riprova" }
che eliminerai dalla pagina principale.
Il resto della pagina va bene, devi solo inserire nel tag HEAD il seguente codice misto javascript e php:
$(function () { $('#sendvote').click( function() { <!--?php if ( !isset($_COOKIE['votato']) ) { ?--> var voto = ($(':checked').val()); if (voto != undefined) { $.ajax({ type: "POST", url: "salvavoto.php", data: "voto="+$('#voto').val(), success: function(msg){ $('div.fra').html(msg) }, error: function(){ alert("Chiamata fallita!!!"); } }); } else { alert('Devi selezionare una risposta'); } <!--?php } else { ?--> alert('Hai già votato'); <!--?php } ?--> }); });
- AutorePost
- Devi essere connesso per rispondere a questo topic.