Evitare che la pagina si ricarichi

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
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à

PHP:
<?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) { 
     $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 "<img src=\"http://localhost:8888/MIEI%20SITI/Alveo/immagini/ok.png\" width=\"40\" height=\"40\" alt=\"Ok\" title=\"Ok\" /><br /><div style=\"margin-top:10px; margin-bottom:20px;font-size:16px; color:#0000ff; text-align: center;\">Grazie, il tuo voto è stato inserito!</div>"; 
    echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
       }
else { 
     echo "<img src=\"http://localhost:8888/MIEI%20SITI/Alveo/immagini/alert.png\" width=\"50\" height=\"50\" alt=\"Alert\" title=\"Alert\" /><br /><div style=\"margin-top:10px; margin-bottom:20px; font-size:16px; color:#ff0000; text-align: center;\">Devi selezionare una risposta!</div>"; 
     echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
   }
}
else { 
    echo "<img src=\"http://localhost:8888/MIEI%20SITI/Alveo/immagini/stop.jpg\" width=\"70\" height=\"70\" alt=\"Stop\" title=\"Stop\" /><br /><div style=\"margin-top:10px; margin-bottom:20px; font-size:16px; color:#ff0000; text-align: center;\">Hai già votato, grazie!</div>";  
    echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>"; 
   } 
}  
?>
...// FORM
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao,
anche se in ritardo ti posto un semplice esempio di chiamata ajax con jquery con la quale puoi risolvere
ti occorreranno due pagine
nella prima il form e il codice javascript
HTML:
<!DOCTYPE html>
<html>
    <head>
        <title>Jquery ajax</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                $("#invia").click(function(){
                    $.ajax({
                        type: "POST",
                        url: "elaboraajaxpost.php",
                        data: "nome=" + $("#nome").val(),
                        success: function(response){
                            $("#risultato").html(response);
                        }
                    });
                });                
            });
        </script> 
    </head>
    <body>
        <form onsubmit="return false">
            <input type="text" id="nome" name="nome"/>
            <input type="button" id="invia" name="invia" value="Invia"/>
        </form>
        <div id="risultato"></div> 
    </body>
</html>
nella seconda che ho chiamato elaboraajaxpost.php le query e la stampa del risutlato
PHP:
<?php

echo $_POST['nome']
?>
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Ciao,
anche se in ritardo ti posto un semplice esempio di chiamata ajax con jquery con la quale puoi risolvere
ti occorreranno due pagine
nella prima il form e il codice javascript
HTML:
<!DOCTYPE html>
<html>
    <head>
        <title>Jquery ajax</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                $("#invia").click(function(){
                    $.ajax({
                        type: "POST",
                        url: "elaboraajaxpost.php",
                        data: "nome=" + $("#nome").val(),
                        success: function(response){
                            $("#risultato").html(response);
                        }
                    });
                });                
            });
        </script> 
    </head>
    <body>
        <form onsubmit="return false">
            <input type="text" id="nome" name="nome"/>
            <input type="button" id="invia" name="invia" value="Invia"/>
        </form>
        <div id="risultato"></div> 
    </body>
</html>
nella seconda che ho chiamato elaboraajaxpost.php le query e la stampa del risutlato
PHP:
<?php

echo $_POST['nome']
?>
L'ho provato, ma non funziona, non si può mettere tutto nella pagina che ho postato all'inizio?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Questo esempio in pratica scrive nel div "risultato" l'echo che c'è nel file php senza ricaricare la pagina, a me funziona
cosa non ti funziona ? ha controllato il nome del file php? i file devono essere nella stessa directory altrimenti devi cambiare il percorso
Codice:
url: "elaboraajaxpost.php",
Devi per forza usare due file non puoi mettere tutto in una pagina
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Questo esempio in pratica scrive nel div "risultato" l'echo che c'è nel file php senza ricaricare la pagina, a me funziona
cosa non ti funziona ? ha controllato il nome del file php? i file devono essere nella stessa directory altrimenti devi cambiare il percorso
Codice:
url: "elaboraajaxpost.php",
Devi per forza usare due file non puoi mettere tutto in una pagina
Ituo codice crea un campo da riempire, il mio sondaggio non ha campi, puoi vederlo qui a destra Sito
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Il mio infatti era solo un esempio di una chiamata ajax con jquery
ovviamente bisogna adattarla al tuo caso
non ho capito com'e strutturata la tua tabella ma credo ti possa bastare un ulteriore esempio
HTML:
<!DOCTYPE html>
<html>
    <head>
        <title>Jquery ajax</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(document).ready(function(){
                $.ajax({
                    type: "POST",
                    url: "elaboraajaxpost.php",
                    success: function(response){
                        $("#risultato").html(response);
                    }
                });
                
                $("#vota").click(function(){
                    var valore = $('[name=idvoto]:checked').val();
                    $.ajax({
                        type: "POST",
                        url: "elaboraajaxpost.php",
                        data: "idvoto=" + valore,
                        success: function(response){
                            $("#risultato").html(response);
                        }
                    });
                });                
            });
        </script> 
    </head>
    <body>
        <div id="risultato">

        </div> 
        <input type="button" id="vota" name="vota" value="Vota"/>
    </body>
</html>
elaboraajaxpost.php
PHP:
<?php

include_once 'connessione.php';

if (isset($_POST["idvoto"])) {
    $q = "UPDATE sondaggio SET voti = voti + 1 WHERE id = " . $_POST["idvoto"];
    $res = mysql_query($q);
    
}

$q = "SELECT * FROM sondaggio";
$res = mysql_query($q);
while ($row = mysql_fetch_assoc($res)) {
    echo '<input type="radio" name="idvoto" value="' . $row['id'] . '"/>' . $row['nome'] . ' n voti ' . $row['voti'] . '<br/> ';
}
?>
ho usato la seguente tabella
Codice:
CREATE TABLE IF NOT EXISTS `sondaggio` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nome` varchar(55) NOT NULL,
  `voti` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

--
-- Dump dei dati per la tabella `sondaggio`
--

INSERT INTO `sondaggio` (`id`, `nome`, `voti`) VALUES
(1, 'giornali', 2),
(2, 'radio', 2),
(3, 'tv', 1),
(4, 'amici', 2);
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Non ci riesco, è un gradino un po alto per me, ti ringrazio...lo terrò come prima
 

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
include_once 'connessione.php';

if (isset($_POST["idvoto"])) {
$q = "UPDATE sondaggio SET voti = voti + 1 WHERE id = " . $_POST["idvoto"];
$res = mysql_query($q);

}

$q = "SELECT * FROM sondaggio";
$res = mysql_query($q);
while ($row = mysql_fetch_assoc($res)) {
echo '<input type="radio" name="idvoto" value="' . $row['id'] . '"/>' . $row['nome'] . ' n voti ' . $row['voti'] . '<br/> ';
}
?>
[/PHP]

Il punto che non mi trovo è questo

PHP:
...
<?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 "<div style=\"background-color:#ffffff; box-shadow:0px 0px 15px #999999; border-radius:10px;\"><hr style=\"background-color:#ffffff;height:1px;width:90%;border:0px;\" /><img src=\"http://gruppoalveo.altervista.org/immagini/ok.png\" width=\"50\" height=\"50\" alt=\"Ok\" title=\"Ok\" /><br /><div style=\"margin-top:10px; margin-bottom:20px;font-size:16px; color:#0000ff; text-align: center;\">Grazie, il tuo voto è stato inserito!<hr style=\"background-color:#ffffff;height:1px;width:90%;border:0px;\" /></div></div><br />"; 
    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 "<div style=\"background-color:#ffffff; box-shadow:0px 0px 15px #999999; border-radius:10px;\"><hr style=\"background-color:#ffffff;height:1px;width:90%;border:0px;\" /><img src=\"http://gruppoalveo.altervista.org/immagini/alert.png\" width=\"60\" height=\"60\" alt=\"Alert\" title=\"Alert\" /><br /><div style=\"margin-top:10px; margin-bottom:20px; font-size:16px; color:#ff0000; text-align: center;\">Devi selezionare una risposta!<hr style=\"background-color:#ffffff;height:1px;width:90%;border:0px;\" /></div></div><br />";  
     echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
   }
}
else { 
    echo "<div style=\"background-color:#ffffff; box-shadow:0px 0px 15px #999999; border-radius:10px;\"><hr style=\"background-color:#ffffff;height:1px;width:90%;border:0px;\" /><img src=\"http://gruppoalveo.altervista.org/immagini/stop.png\" width=\"65\" height=\"65\" alt=\"Stop\" title=\"Stop\" /><br /><div style=\"margin-top:10px; margin-bottom:20px; font-size:16px; color:#ff0000; text-align: center;\">Hai già votato, grazie!<hr style=\"background-color:#ffffff;height:1px;width:90%;border:0px;\" /></div></div><br />";   
    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="<?php echo $_SERVER['PHP_SELF'];?>">

<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"></div>
</div><!-- fra -->
</form>
</div><!-- div style -->

...
 
Discussioni simili
Autore Titolo Forum Risposte Data
A Evitare che una pagina sia accessibile digitando l'url PHP 2
G Evitare che mi continui ad arrivare in alice mail spam Posta Elettronica 2
andreas88 Evitare che la mia idea venga rubata Leggi, Normative e Fisco 5
michele357 TAG HTML: Come evitare che venga riprodotto un file .mp3 senza cancellarlo HTML e CSS 1
alessandro1997 Evitare che span finisca sopra i bordi HTML e CSS 9
I Come evitare che il preload compaia 2 volte? Flash 1
B Evitare che explorer blocchi pulsanti flash Flash 3
D evitare di inserirre duplicati in mysql PHP 4
W Evitare ridondanza dei dati Classic ASP 3
U Posizionamento Rack nel locale tecnico ed eventuali accortezze per evitare incendi Reti LAN e Wireless 1
D consiglio evitare truffe Annunci servizi di Social Media Marketing 11
C [PHP] Ricerca multipla, evitare if PHP 4
elpirata [PHP] Evitare la visualizzazione del carattere di nuova linea \r\n PHP 5
A [Javascript] [CSS] elenco affiancato per evitare scorrimento pagina Javascript 4
M Evitare la compilazione automatica NomeUtente e Password con Chrome PHP 2
M Evitare rischio assunzione programmatori per nuove aziende? Leggi, Normative e Fisco 3
Antonio_Cantaro Cookie rendirizamento per evitare la loro scrittura Javascript 1
A Evitare estrazione record doppioni PHP 2
felino Scambio link: consigliato o meglio evitare? SEO e Posizionamento 0
xone Evitare Meta Tag duplicati su paginazione php PHP 2
A [risolto] evitare refresh index dopo recaptcha sbagliato PHP 7
J Evitare al refresh della pagina la ritrasmissione di un form PHP 1
G come evitare l'a capo del testo nelle tabelle HTML e CSS 4
M Evitare SQL Injection senza deformare testo PHP 3
M Confrontare data, ora e aula per evitare sovrapposizioni PHP 8
L Paginazione file evitare di inserire questi \ o altro nella get PHP 1
Z evitare il download diretto di file PHP 2
asevenx evitare inserimento dati già presenti in DataBase PHP 20
zerobit Evitare records duplicati nel database PHP 6
S urgentissimo necessità di script per evitare di far visualizzare immagini "rubate" Javascript 12
L invio multiplo e refresh pagina come evitare? PHP 3
R Evitare SPAM nelle tabelle DI MYSQL MySQL 6
T Evitare refresh pagina Javascript 7
riminese77 Evitare doppio click nelle pagine ASP.NET 5
I Evitare inserimento dati in database con refresh PHP 5
max_400 Evitare lo scatto di fine foto e aumentare la velocità Flash 2
P [checkbox e className] evitare di richiamare più volte la stessa funzione Javascript 0
M Evitare i frames HTML e CSS 6
Z Evitare la ridondanza PHP 3
minatore evitare doppioni PHP 9
G Come evitare in Excel messaggio per apertura pdf? Windows e Software 2
G Stampante canon: evitare il taglio nel caricare? Hardware 0
T come evitare file ldb Database 4
I Menu in flash è da evitare? SEO e Posizionamento 2
E modifica js per evitare il blank Javascript 0
P Help filtraggio input...Evitare caratteri Javascript 0
B Evitare i motori di ricerca HTML e CSS 2
A Controllo per evitare inserimenti di spazi Javascript 1
M Evitare blocco pop-up Classic ASP 0
P evitare la scrittura in un campo Javascript 5

Discussioni simili