Evitare che la pagina si ricarichi

  • Creatore Discussione Creatore Discussione Shyson
  • Data di inizio Data di inizio

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
 
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']
?>
 
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?
 
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
 
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
 
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);
 
Non ci riesco, è un gradino un po alto per me, ti ringrazio...lo terrò come prima
 
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