Creare sondaggio

  • Creatore Discussione Creatore Discussione Shyson
  • Data di inizio Data di inizio
ciao
guarda che ti fa tutti i calcoli errati
[table="width: 500"]
[tr]
[td][/td]
[td][/td]
[td]VERO[/td]
[td]da sito[/td]
[/tr]
[tr]
[td]radio[/td]
[td]2[/td]
[td]13,3[/td]
[td]3,3[/td]
[/tr]
[tr]
[td]giornali[/td]
[td]1[/td]
[td]6,7[/td]
[td]1,6[/td]
[/tr]
[tr]
[td]depliant[/td]
[td]3[/td]
[td]20,0[/td]
[td]4,9[/td]
[/tr]
[tr]
[td]televisione[/td]
[td]0[/td]
[td]0,0[/td]
[td]0[/td]
[/tr]
[tr]
[td]web banner[/td]
[td]3[/td]
[td]20,0[/td]
[td]4,9[/td]
[/tr]
[tr]
[td]casualmente[/td]
[td]3[/td]
[td]20,0[/td]
[td]4,9[/td]
[/tr]
[tr]
[td]motori di ricerca[/td]
[td]1[/td]
[td]6,7[/td]
[td]1,6[/td]
[/tr]
[tr]
[td]amici o conoscenti[/td]
[td]2[/td]
[td]13,3[/td]
[td]3.3[/td]
[/tr]
[tr]
[td]TOTALE[/td]
[td]15[/td]
[td][/td]
[td][/td]
[/tr]
[/table]
ridai un occhio ai calcoli, nella colonna VERO ho calcolato quello che dovrebbe darti, nella da sito quello che ti risulta
 
ciao
guarda che ti fa tutti i calcoli errati
[table="width: 500"]
[tr]
[td][/td]
[td][/td]
[td]VERO[/td]
[td]da sito[/td]
[/tr]
[tr]
[td]radio[/td]
[td]2[/td]
[td]13,3[/td]
[td]3,3[/td]
[/tr]
[tr]
[td]giornali[/td]
[td]1[/td]
[td]6,7[/td]
[td]1,6[/td]
[/tr]
[tr]
[td]depliant[/td]
[td]3[/td]
[td]20,0[/td]
[td]4,9[/td]
[/tr]
[tr]
[td]televisione[/td]
[td]0[/td]
[td]0,0[/td]
[td]0[/td]
[/tr]
[tr]
[td]web banner[/td]
[td]3[/td]
[td]20,0[/td]
[td]4,9[/td]
[/tr]
[tr]
[td]casualmente[/td]
[td]3[/td]
[td]20,0[/td]
[td]4,9[/td]
[/tr]
[tr]
[td]motori di ricerca[/td]
[td]1[/td]
[td]6,7[/td]
[td]1,6[/td]
[/tr]
[tr]
[td]amici o conoscenti[/td]
[td]2[/td]
[td]13,3[/td]
[td]3.3[/td]
[/tr]
[tr]
[td]TOTALE[/td]
[td]15[/td]
[td][/td]
[td][/td]
[/tr]
[/table]
ridai un occhio ai calcoli, nella colonna VERO ho calcolato quello che dovrebbe darti, nella da sito quello che ti risulta

Tutta la pagina (tranne gli url) che ho in locale è il copia-incolla di quella online, io non so cosa dovrei cambiare
 
Qui c'è qualcosa che non quadra, ho provato l var_dump nel file in locale e mi da il risultato in base a quello che ha messo a video e cioè giusto.
 
ciao
carica la pagina con i var_dump e guarda cosa riportano i dump inlinea

La prova l'avevi già fatta tu al post #142, non è che magari è il db o il server che non vanno bene?

Questo è per amici_o_conoscenti

PHP:
---
     $ax=$amici_o_conoscenti;   
     var_dump($ax); 
     $a=$amici_o_conoscenti/$tot*100;
     var_dump($a);
     $amici_o_conoscenti_pos=(int)$a-100;
     var_dump($amici_o_conoscenti_pos);
     $amici_o_conoscenti=number_format($a, 1, ',',''); 
     var_dump($amici_o_conoscenti);
  if($amici_o_conoscenti >=100) {
     $amici_o_conoscenti=(int)$amici_o_conoscenti;
  }     
}
else {
…
 $amici_o_conoscenti=0; 
 $amici_o_conoscenti_pos=-100;
}
var_dump($amici_o_conoscenti);
var_dump($amici_o_conoscenti_pos);
 

Allegati

  • Schermata 04-2456778 alle 10.16.20.png
    Schermata 04-2456778 alle 10.16.20.png
    65,4 KB · Visite: 182
Ultima modifica:
ciao
cominciamo a cercare di capire
1) string(2) "2"
è il numero degli amici e quindi è giusto, anche se dovrebbe essere int quindi forzalo a (int)
2) se il totale è 15 (controlla) il dump del float dovrebbe darti
float(0.1333333...) e non float(0.888138...)
quindi verifica la divisione tra numero amici e totale
3) il primo string(3) "0.9" è giusto col risultato errato 0.888138.. arrotondato da 0.9
4) il secondo non dovrebbe essere il valore moltiplicato per 100?

il tutto anche se non riesco a capire perche in locale ti funziona e inline no
 
ciao
cominciamo a cercare di capire
1) string(2) "2"
è il numero degli amici e quindi è giusto, anche se dovrebbe essere int quindi forzalo a (int)
2) se il totale è 15 (controlla) il dump del float dovrebbe darti
float(0.1333333...) e non float(0.888138...)
quindi verifica la divisione tra numero amici e totale
3) il primo string(3) "0.9" è giusto col risultato errato 0.888138.. arrotondato da 0.9
4) il secondo non dovrebbe essere il valore moltiplicato per 100?

il tutto anche se non riesco a capire perche in locale ti funziona e inline no

Il punto 2) non l'ho capito, comunque per me è qualcosa d'altro visto che i codici dei due file sono identici, c'è qualcosa si frappone quando i dati vengono estratti dal db.
 

Allegati

  • Schermata 04-2456778 alle 10.55.27.png
    Schermata 04-2456778 alle 10.55.27.png
    37 KB · Visite: 194
Ultima modifica:
Ho trovato il problema, ora si tratta di capire il perché, guarda adesso:

ti spiego cosa ho fatto: ho ripristinato la parte di file e il db di 1 mese fa, quando andava bene.
La modifica l'ho poi apportata perché voglio che nel db si inserisca una sola colonna (vedi img post precedente).

Questo è il vecchio codice, come vedi ha anche un INSERT e più records, che ho ripristinato adesso per fare la prova:

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 
    } 
} 
// Definisce le variabili
$rx="";
$gx=""; 
$dx=""; 
$tx=""; 
$wx=""; 
$cx=""; 
$mx=""; 
$ax="";      

if($tot >0) {
     $data_localeS=time();
     $dataGmtS=$giorno[date('w')].' '.date('d').' '.$mese[date('m')-1].' '.date('Y - H:i:s \G\M\T P');
     $ip=$_SERVER['REMOTE_ADDR'];  
     $rx=$radio; // Stampa il numero di votanti
     $r=$radio/$tot*100; $radio_pos=(int)$r-100; // Mette la percentuale
     $radio=number_format($r, 1, ',',''); // Mette il decimale 
  if($radio >=100){$radio=(int)$radio;}  // Toglie il decimale a 100%
     $gx=$giornali; 
     $g=$giornali/$tot*100; $giornali_pos=(int)$g-100; 
     $giornali=number_format($g, 1, ',',''); 
  if($giornali >=100){$giornali=(int)$giornali;} 
     $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 {
     $radio=0; $radio_pos=-100;
     $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['votatoxx'])) { //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 "Il tuo voto è stato inserito!"; 
    echo "<meta http-equiv='refresh' content='2; url=".htmlspecialchars($_SERVER['PHP_SELF'])."'>"; 
    setcookie("votato", "si", time()+259200); // Dura 3 giorni, setta il cookie (3/4)
  
  // Inserisce i dati EXTRA nella tabella
$q=mysql_query("INSERT INTO sondaggio(data_localeS,dataGmtS,ip,country)  
                           VALUES('$data_localeS','$dataGmtS','$ip','".$countries[$two_letter_country_code][1]."')");                           
                                                                 
// Estrae i dati dalla tabella    
$q="SELECT * FROM sondaggio";
 

Allegati

  • Schermata 04-2456778 alle 11.17.31.png
    Schermata 04-2456778 alle 11.17.31.png
    22,6 KB · Visite: 183
  • Schermata 04-2456778 alle 11.23.55.jpg
    Schermata 04-2456778 alle 11.23.55.jpg
    58,4 KB · Visite: 212
Ultima modifica:
Allora, il post precedente non guardalo, ora ho focalizzato l'inghippo e ho visto che c'è qualcosa nel codice che non quadra,.

Così funziona $q="UPDATE sondaggio SET $voto = $voto + 1 WHERE id=1"; Inoltre ho tolto INSERT, così comunque ora a video stampa giusto. Però non posso inserire nel db la data e l'ip altrimenti diventa come prima

PHP:
 $giorno=array('Domenica','Lunedi','Martedi','Mercoledi','Giovedi','Venerdi','Sabato'); 
     $mese=array('','gennaio','febbraio','marzo','aprile','maggio','giugno','luglio','agosto','settembre','ottobre','novembre','dicembre');
     $dataGmtS=$giorno[date('w')].' '.date('d').' '.$mese[date('m')-0].' '.date('Y - H:i:s \G\M\T P');
     $ip=$_SERVER['REMOTE_ADDR']; 
...
if(isset($_POST['puls_invio'])) { 
if(!isset($_COOKIE['votatoxx'])) { //Setta il cookie (2/4), il primo si trova in connessione.php
if(isset($_POST['voto'])) {
    $voto=$_POST['voto'];
    $q="UPDATE sondaggio SET $voto = $voto + 1 WHERE id=1";  
    if(mysql_query($q)) { 
    echo "Il tuo voto è stato inserito!"; 
    echo "<meta http-equiv='refresh' content='1; url=".htmlspecialchars($_SERVER['PHP_SELF'])."'>"; 
    setcookie("votato", "si", time()+259200); // Dura 3 giorni, setta il cookie (3/4)
  
// Estrae i dati dalla tabella    
$q="SELECT * FROM sondaggio";
 
Ultima modifica:

Discussioni simili