Aggiornare pagina quando c'è un nuovo messaggio

  • Creatore Discussione Creatore Discussione Shyson
  • Data di inizio Data di inizio
Pubblica la query che utilizzi per aggiungere un altro voto alla tabella.
 
Non è molto chiaro come viene fatto il sondaggio ma l'unica query di 'scrittura' che vedo in quel codice è questa:
PHP:
 $q="UPDATE sondaggio SET $voto = $voto + 1 WHERE id=1";
Dovresti postare tutto il contenuto di
PHP:
if(isset($_POST['puls_invio'])) {
//...
}
 
Non è molto chiaro come viene fatto il sondaggio ma l'unica query di 'scrittura' che vedo in quel codice è questa:
PHP:
 $q="UPDATE sondaggio SET $voto = $voto + 1 WHERE id=1";
Dovresti postare tutto il contenuto di
PHP:
if(isset($_POST['puls_invio'])) {
//...
}

Se serve poi posto la parte, però in un qualche modo sono riuscito a far stampare a video non nel db la data.

Forse la soluzione potrebbe essere riuscire a far stampare nel db la data

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) { 

     $data_localeS=time(); 
     
     $gx=$giornali; // Stampa il numero di votanti
     $g= $giornali/$tot*100; $giornali_pos=(int)$g-100; 
     $giornali=number_format($g, 1, ',',''); //questo mette il decimale 
  if($giornali >=100){$giornali=(int)$giornali;}  //questo toglie il decimale a 100%

...

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> 

<div class="fra">
<?php echo $data_localeS;?>
<br>
<br>
<input type="radio" name="voto" value="giornali"> Giornali <span class="votanti">(<?php echo $gx;?>)</span>
<br>
<div class="a" style="background-position:<?php echo $giornali_pos;?>px"></div><div class="percentuale"><?php echo $giornali;?>%</div>
<br>

...

Schermata 07-2456486 alle 21.26.20.png
 
Basta aggiornare anche quel campo quando fai la query UPDATE inserendo il valore della nuova data. (per avere quel valore dovresti fare nello stesso modo così come prendevi quello per l'altra funzione).
 
Forse ci sono riuscito, dimmi se va bene, così però tutte le volte crea un record nel db

PHP:
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!<br>"; 
    echo "<meta http-equiv='Refresh' content='2; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
    setcookie("votato", "si", time()+5*365*24*60*60); //Dura 5 anni, setta il cookie (3/4)
 
   $q=mysql_query("INSERT INTO sondaggio (data_localeS) 
                           VALUES('$data_localeS')"); 
                          
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-utf-8\r\n";
$headers .= "X-Mailer: PHP\n"; 
$headers .= "From:Alberti.Alveo<miamail@gmail.com>\r\n"; 

//Invio e-mail di avviso a me
$miaemail = "Me<miamail@gmail.com>"; 
$soggetto = "Qualcuno ha fatto il sondaggio";  //Le mail vanno formattate con HTML 
$corpo_messaggio ="<html>
<head>
</head>
<body>
<p style=\"font-family:arial,verdana;font-size:17px;color:#000080;font-weight:bold;\">Un visitatore ha votato il sondaggio</p>
<span style=\"color:#008000;\">$voto</span>
<br>
<br>     
<p style=\"font-family:arial,verdana;font-size:11px;color:#000080;\">$dataGmtS
</p>
<br>
<br>
<br>
<br>
</body>
</html>";  
//Invio della mail 
mail ($miaemail,$soggetto,$corpo_messaggio,$headers);  
    }
  } 
else { 
     echo "Devi selezionare una risposta!";  
     echo "<meta http-equiv='Refresh' content='2; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
   }
}
else { 
    echo "Hai già votato, grazie!";   
    echo "<meta http-equiv='Refresh' content='2; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>"; 
   } 
} 
?>

...
 
Ultima modifica:
Sei sicuro che questa query funzioni?
PHP:
<?php
    $q="UPDATE sondaggio SET $voto = $voto + 1 WHERE id=1"; 
?>
Io la cambierei così:
PHP:
<?php
    $q="UPDATE sondaggio SET voto = $voto + 1, data_localeS = $data_localeS  WHERE id=1"; 
?>
Così potresti anche eliminare la query che hai aggiunto.
 
Sei sicuro che questa query funzioni?
PHP:
<?php
    $q="UPDATE sondaggio SET $voto = $voto + 1 WHERE id=1"; 
?>
Io la cambierei così:
PHP:
<?php
    $q="UPDATE sondaggio SET voto = $voto + 1, data_localeS = $data_localeS  WHERE id=1"; 
?>
Così potresti anche eliminare la query che hai aggiunto.

Qui hai dimenticato $q="UPDATE sondaggio SET $voto = $voto + 1 WHERE id=1";

sembra funzionare
 
Ultima modifica:
Veramente l'ho tolto apposta. Aumenta il voto sul db mettendo il $?

Non aumenta i valori senza $...ho visto che crea un problema il tuo codice, non mostra più le barre di scorrimento, quelle azzurre, però aggiorna i valori
 
Ultima modifica:
Devi vedere se aggiorna il valore nel db. Altrimenti è inutile l'update (che serve proprio a quello).
 
Devi vedere se aggiorna il valore nel db. Altrimenti è inutile l'update (che serve proprio a quello).

Si, aggiorna valori e data aggiornamento
PHP:
$q="UPDATE sondaggio SET $voto = $voto + 1, data_localeS = $data_localeS  WHERE id=1";

Però come ti dicevo fa sparire le barre azzurre
 
Incolla il codice completo qui o linka su pastebin.

Cosìè pastebin?

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) { 
     $data_localeS=time(); 
     $gx=$giornali; // Stampa il numero di votanti
     $g= $giornali/$tot*100; $giornali_pos=(int)$g-100; 
     $giornali=number_format($g, 1, ',',''); //questo mette il decimale 
  if($giornali >=100){$giornali=(int)$giornali;}  //questo toglie il decimale a 100%
     $dx=$depliant;
     $d= $depliant/$tot*100; $depliant_pos=(int)$d-100; 
     $depliant=number_format($d, 1, ',',''); 
  if($depliant >=100){$depliant=(int)$depliant;} 
  	 $tx=$televisione;    
     $t= $televisione/$tot*100; $televisione_pos=(int)$t-100; 
     $televisione=number_format($t, 1, ',',''); 
  if($televisione >=100){$televisione=(int)$televisione;}  
  	 $wx=$web_banner;   
     $w= $web_banner/$tot*100; $web_banner_pos=(int)$w-100; 
     $web_banner=number_format($w, 1, ',','');  
  if($web_banner >=100){$web_banner=(int)$web_banner;}  
  	 $cx=$casualmente;  
     $c= $casualmente/$tot*100; $casualmente_pos=(int)$c-100; 
     $casualmente=number_format($c, 1, ',',''); 
  if($casualmente >=100){$casualmente=(int)$casualmente;}  
  	 $mx=$motori_di_ricerca;   
     $m= $motori_di_ricerca/$tot*100; $motori_di_ricerca_pos=(int)$m-100; 
     $motori_di_ricerca=number_format($m, 1, ',','');  
  if($motori_di_ricerca >=100){$motori_di_ricerca=(int)$motori_di_ricerca;}  
  	 $ax=$amici_o_conoscenti;    
     $a= $amici_o_conoscenti/$tot*100; $amici_o_conoscenti_pos=(int)$a-100;
     $amici_o_conoscenti=number_format($a, 1, ',',''); 
  if($amici_o_conoscenti >=100){$amici_o_conoscenti=(int)$amici_o_conoscenti;}     
}
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, data_localeS = $data_localeS  WHERE id=1";   
    if(mysql_query($q)) { 
    echo "Grazie, il tuo voto è stato inserito!<br>"; 
    echo "<meta http-equiv='Refresh' content='2; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
    setcookie("votato", "si", time()+5*365*24*60*60); //Dura 5 anni, setta il cookie (3/4)
                          
$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-utf-8\r\n";
$headers .= "X-Mailer: PHP\n"; 
$headers .= "From:Alberti.Alveo<xxx@gmail.com>\r\n"; 

//Invio e-mail di avviso a me
$miaemail = "Me<xxx@gmail.com>"; 
$soggetto = "Qualcuno ha fatto il sondaggio";  //Le mail vanno formattate con HTML 
$corpo_messaggio ="<html>
<head>
</head>
<body>
<p style=\"font-family:arial,verdana;font-size:17px;color:#000080;font-weight:bold;\">Un visitatore ha votato il sondaggio</p>
<span style=\"font-family:arial; font-size:16px; color:#008000;\">$voto</span>
<br>
<br>     
<p style=\"font-family:arial,verdana;font-size:11px;color:#000080;\">$dataGmtS
</p>
<br>
<br>
<br>
<br>
</body>
</html>";  
//Invio della mail 
mail ($miaemail,$soggetto,$corpo_messaggio,$headers);  
    }
  } 
else { 
     echo "Devi selezionare una risposta!<br>";  
     echo "<meta http-equiv='Refresh' content='2; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
   }
}
else { 
    echo "Hai già votato, grazie!<br>";   
    echo "<meta http-equiv='Refresh' content='2; 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 <span class="votanti">(<?php echo $gx;?>)</span>
<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 <span class="votanti">(<?php echo $dx;?>)</span>
<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 <span class="votanti">(<?php echo $tx;?>)</span>
<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 <span class="votanti">(<?php echo $wx;?>)</span>
<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 <span class="votanti">(<?php echo $cx;?>)</span>
<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 <span class="votanti">(<?php echo $mx;?>)</span>
<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 <span class="votanti">(<?php echo $ax;?>)</span>
<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 -->
<?php 
ob_end_flush();//Questo va messo alla penultima riga, setta il cookie (4/4)
?>
 
Ultima modifica:
Ho fatto delle aggiunte e sembra funzionare tutto correttamente e aggiorna anche la data nel sito, l'unica cosa che ci sarebbe da correggere è che nel db ad ogni voto crea un record solo con la data aggiornata (gli altri campi invece rimangono a zero perché si aggiornano solo nel primo record)


Ho definito le variabili sennò dava errore
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 
    } 
} 
// Definisce le variabili
$gx=""; 
$dx=""; 
$tx=""; 
$wx=""; 
$cx=""; 
$mx=""; 
$ax="";      

if($tot >0) { 
     $data_localeS=time(); 
     $gx=$giornali; // Stampa il numero di votanti
     $g= $giornali/$tot*100; $giornali_pos=(int)$g-100; // Mette la percentuale
     $giornali=number_format($g, 1, ',',''); // Mette il decimale 
...

Ho aggiunto una SELECT
PHP:
...

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!<br>"; 
    echo "<meta http-equiv='Refresh' content='2; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
    setcookie("votato", "si", time()+5*365*24*60*60); //Dura 5 anni, setta il cookie (3/4)
// Inserisce i dati nella tabella
$q=mysql_query("INSERT INTO sondaggio (data_localeS) 
                           VALUES('$data_localeS')");  
// Estrae i dati dalla tabella    
$q="SELECT * FROM sondaggio ";  

...
 
Ultima modifica:
PHP:
$q=mysql_query("INSERT INTO sondaggio (data_localeS) 
                           VALUES('$data_localeS')");
E' questa la query che aggiunge un altro record.
Prova a fare un UPDATE invece di una INSERT.
 

Discussioni simili