Creare sondaggio

  • Creatore Discussione Creatore Discussione Shyson
  • Data di inizio Data di inizio
Ho fatto una prova, ho commentato $_SESSION=array(); e non da più errore, devo toglierlo?


PHP:
//$_SESSION=array();
echo "Successo inviato!"; 
echo "<meta http-equiv='refresh' content='1; url=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
 
ciao
Ho fatto una prova, ho commentato $_SESSION=array(); e non da più errore, devo toglierlo?

PHP:
//$_SESSION=array();
echo "Successo inviato!"; 
echo "<meta http-equiv='refresh' content='1; url=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
ecco dove è l'inghippo:
se lo togli sparisce l'errore ma se non lo togli rimangono i testi nel form, bisogna fare una modifica alle sessioni del form (quelle che si ricordano i testi in caso di errore)
non mi ricordo bene i nomi ma ti faccio un esempio
probabilmente hai (es.) per l'email
PHP:
<input name="email" type="text" id="email" value="<?php echo $_SESSION['email']; ?>">
modifica TUTTE le sessioni relative al form invio successi in questo modo
$_SESSION['succ']['nome']
$_SESSION['succ']['email'] ecc.....
cioè facciamo un array di array.
e poi

PHP:
$_SESSION['succ']=array();
echo "Successo inviato!"; 
echo "<meta http-equiv='refresh' content='1; url=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
in questo modo se il successo viene salvato correttamente si eliminano solo le sessioni chiamate $_SESSION['succ'] e non le altre che ti servono
spero di essermi spiegato bene
 
Cosi dice che succ non è definito

Img_01.png
 
ciao
non intendevo lì. ma anche dove leggi i $_POST provenienti dal form, anche li devi correggere i nomi delle sessioni
per quello che ti chiedevo di ripostare la parte di verifica e salvataggio, in quella parte avrai qualcosa del genere
$_SESSION['nomeS']= $_POST['nomeS'];
oppure
$_SESSION['nomeS']= $nomeS; (non mi ricordo bene)
devi modificare anche quelle (es)
$_SESSION['form']['nomeS']= $_POST['nomeS'];
o come hai scritto
$_SESSION['succ']['nomeS']
 
Ultima modifica:
ciao
non intendevo lì. ma anche dove leggi i $_POST provenienti dal form, anche li devi correggere i nomi delle sessioni
per quello che ti chiedevo di ripostare la parte di verifica e salvataggio, in quella parte avrai qualcosa del genere
$_SESSION['nomeS']= $_POST['nomeS'];
oppure
$_SESSION['nomeS']= $nomeS; (non mi ricordo bene)
devi modificare anche quelle (es)
$_SESSION['form']['nomeS']= $_POST['nomeS'];
o come hai scritto
$_SESSION['succ']['nomeS']

Ho questo

PHP:
if(isset($_POST['invia'])) {
$_SESSION['succ']['nomeS'] = $_POST['nomeS'];
$_SESSION['succ']['cittaS'] = $_POST['cittaS']; 
$_SESSION['succ']['suoemailS'] = $_POST['suoemailS'];
$_SESSION['succ']['oggettoS'] = $_POST['oggettoS'];
$_SESSION['succ']['messaggioS'] = $_POST['messaggioS'];

$data_localeS = time(); //Stampa nel db la data numerica es. 124632437
$nomeS = htmlspecialchars(ucfirst(strtolower(trim($_POST['nomeS']))));
$cittaS = htmlspecialchars(ucwords(strtolower(trim($_POST['cittaS'])))); 
$suoemailS = htmlspecialchars(strtolower($_POST['suoemailS'])); 
$suoemailS = str_replace(" ","",$suoemailS); // Toglie gli spazi interni nella mail
$oggettoS = htmlspecialchars(ucfirst(trim($_POST['oggettoS'])));
$messaggioS = htmlspecialchars(ucfirst(trim($_POST['messaggioS']))); 
$validatorS = htmlspecialchars(trim($_POST['validatorS']));

...
 
Ho messo così, sembra funzionare: se c'è errore la mantiene, diversamente cancella il campo

PHP:
 value="<?php if(isset($_SESSION['succ']['nomeS'])){ echo $_SESSION['succ']['nomeS'];}else{ echo "";} ?>"
 
iao
visto così sembrerebbe giusto, forse sarebbe meglio appena prima del <form......>
PHP:
<?php
$nome = (isset($_SESSION['succ']['nomeS'])) ? $_SESSION['succ']['nomeS'] : "";
//e per le altre sessioni lo stesso
?>
<form method="post" name="mioformS" id="mioFS" action="/successi.php" ......">
<......value="<?php echo $nome; ?>">
<!-- eccetera-->

p.s.
verifica, talvolta (spesso) mi confondo con l'operatore ternario, eventualmente inverti
$nome = (isset($_SESSION['succ']['nomeS'])) ? "" : $_SESSION['succ']['nomeS'];
 
Il primo va bene, questo sotto da errore:
Notice: Undefined index: nomeS in /membri/gruppoalveo/successi.php on line 430

$nome = (isset($_SESSION['succ']['nomeS'])) ? "" : $_SESSION['succ']['nomeS'];
 
Ora qui sembra tutto a posto.

Avrei ancora una piccola cosa per il guestbook che non riesco a togliere, forse te l'avevo accennato.

Posto di là.
 
Se volessi mettere i decimali es. 45.7% come lo modifico?

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 
    } 
} 
...
 
ciao
non mi ricordo bene, ma mi sembra non li.
devi fare la modfica dove calcoli il percento

Questo è completo

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;
}
...
<div class="a" st<?php echo $giornali_pos;?>px"></div><div class="percentuale"><?php echo $giornali;?>%</div>
...
 
ciao
prova in questa maniera in modo da modificare il meno possibile lo script
ti ho fatto l'esempio solo per $giornali, il resto è uguale
PHP:
<?php
//.......
if($tot >0) { 
     $giornali= (int)($giornali/$tot*100); $giornali_pos=$giornali-100;//penso che questa riga ti convenga lascarla così, $giornali_pos deve essere un numero intero
	 //e ricalcolare la percentuale  aggiungendo questa riga
	 $giornali=number_format($giornali/$tot*100, 1, ',','');//questa risulta es. 22,5
	 //analogo discorso per le rimanenti percentuali
     $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;
}else{
//.......
?>
 
ciao
prova in questa maniera in modo da modificare il meno possibile lo script
ti ho fatto l'esempio solo per $giornali, il resto è uguale
PHP:
<?php
//.......
if($tot >0) { 
     $giornali= (int)($giornali/$tot*100); $giornali_pos=$giornali-100;//penso che questa riga ti convenga lascarla così, $giornali_pos deve essere un numero intero
	 //e ricalcolare la percentuale  aggiungendo questa riga
	 $giornali=number_format($giornali/$tot*100, 1, ',','');//questa risulta es. 22,5
	 //analogo discorso per le rimanenti percentuali
     $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;
}else{
//.......
?>

Così aggiunge 2 zeri così: 250.0%
 
Ho messo così, sembra vada bene

$giornali=number_format($giornali/$tot*10, 1, ',','');//questa risulta es. 22,5
 
ciao
ho fatto un errore io, non mi ero accorto di una variabile,
aspetta che correggo
non mi ero accorto che la stessa variabile veniva richiamata due volte nel calcolo
PHP:
<?php
//.......
if($tot >0) { 
     $g= $giornali/$tot*100; $giornali_pos=(int)$g-100;
     $giornali=number_format($g, 1, ',','');//questa risulta es. 22,5
     $d= $depliant/$tot*100; $depliant_pos=(int)$d-100;
	 $depliant=number_format($d, 1, ',','');
     $t= $televisione/$tot*100; $televisione_pos=(int)$t-100;
	 $televisione=number_format($t, 1, ',','');
     $w= $web_banner/$tot*100); $web_banner_pos=(int)$w-100;
	 $web_banner=number_format($w, 1, ',','');
     $c= $casualmente/$tot*100; $casualmente_pos=(int)$c-100;
	 $casualmente=number_format($c, 1, ',','');
     $m= $motori_di_ricerca/$tot*100; $motori_di_ricerca_pos=(int)$m-100;
	 $motori_di_ricerca=number_format($m, 1, ',','');
}else{
//..
?>
 
ciao
ho fatto un errore io, non mi ero accorto di una variabile,
aspetta che correggo
non mi ero accorto che la stessa variabile veniva richiamata due volte nel calcolo
PHP:
<?php
//.......
if($tot >0) { 
     $g= $giornali/$tot*100; $giornali_pos=(int)$g-100;
     $giornali=number_format($g, 1, ',','');//questa risulta es. 22,5
     $d= $depliant/$tot*100; $depliant_pos=(int)$d-100;
	 $depliant=number_format($d, 1, ',','');
     $t= $televisione/$tot*100; $televisione_pos=(int)$t-100;
	 $televisione=number_format($t, 1, ',','');
     $w= $web_banner/$tot*100); $web_banner_pos=(int)$w-100;
	 $web_banner=number_format($w, 1, ',','');
     $c= $casualmente/$tot*100; $casualmente_pos=(int)$c-100;
	 $casualmente=number_format($c, 1, ',','');
     $m= $motori_di_ricerca/$tot*100; $motori_di_ricerca_pos=(int)$m-100;
	 $motori_di_ricerca=number_format($m, 1, ',','');
}else{
//..
?>

Forse c'è un errore perché non carica la pagina
 

Discussioni simili