Ho un codice per un sondaggio in PHP(tramite database MySQL), che diviso in 3 parti funziona perfettamente. Le tre parti sono:
form.php(che mostra il form)
vote.php(che aggiunge il voto)
results.php(che mostra i risultati)
Queste tre pagine messe divise funzionano, invece, se vado a metterle tutte e 3 insieme, tramite un controllo con i cookie, non funziona. Eppure il form compare, il voto viene aggiunto ma è come se non trovasse il cookie settato... Non riesco a capire, l'errore che mi dà è:
"Warning: Cannot modify header information - headers already sent by (output started at /var/www/ffmagazine.net/subdomains/devel/html/exagon/sondaggio/index.php:6) in /var/www/ffmagazine.net/subdomains/devel/html/exagon/sondaggio/index.php on line 27"...
è parecchio che cerco di risolvere, ma non trovo soluzione... Potete aiutarmi? Il codice completo lo trovate qua sotto.
Codice PHP:
<?php
//Connessione al DB
include '../admin/connect.php';
//Nome del cookie
$coname = 'ex_n_1';
function addvote() {
ob_start();
$query = "SELECT * FROM sondaggio";
$results = mysql_query($query);
$votatore = $_REQUEST['voto'];
while ($row = mysql_fetch_array($results)) {
$voto = $row["$votatore"];
$add = ($voto + 1);
}
$sql = "UPDATE sondaggio SET $votatore='$add'";
if(mysql_query($sql)){
setcookie ($coname,"cookie impostato",time()+2592000,"/");
} else {
echo 'Impossibile aggiungere il voto';
exit();
}
ob_end_flush();
}
function showresults() {
$query = "SELECT * FROM sondaggio";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
$v1 = $row["v1"];
$v2 = $row["v2"];
$v3 = $row["v3"];
$v4 = $row["v4"];
$v5 = $row["v5"];
}
$tot = $v1+$v2+$v3+$v4+$v5;
switch($tot) {
case 0:
$frase = 'Non ci sono voti';
break;
case 1:
$frase = "In totale c'è $tot solo voto";
break;
default:
$frase = "In totale ci sono $tot voti";
}
echo $frase;
$percv1 = $v1*100/$tot;
$s = round($percv1, 2);
$percv2 = $v2*100/$tot;
$i = round($percv2, 2);
$percv4 = $v4*100/$tot;
$f = round($percv4, 2);
$percv3 = $v3*100/$tot;
$p = round($percv3, 2);
$percin = $v5*100/$tot;
$n = round($percin, 2);
//calcolo della lunghezza dell'immagine
$s1 = $s*3;
$i1 = $i*3;
$p1 = $p*3;
$f1 = $f*3;
$n1 = $n*3;
echo "<pre>";
echo "Eccellente($v5 voti) [img]http://icons.iconarchive.com/icons/dimension-of-deskmod/micro/Applications-48x48.png[/img] $n%\n";
echo "Ottimo($v4 voti) [img]http://icons.iconarchive.com/icons/dimension-of-deskmod/micro/Applications-48x48.png[/img] $f%\n";
echo "Buono($v3 voti) [img]http://icons.iconarchive.com/icons/dimension-of-deskmod/micro/Applications-48x48.png[/img] $p%\n";
echo "Sufficente($v2 voti) [img]http://icons.iconarchive.com/icons/dimension-of-deskmod/micro/Applications-48x48.png[/img] $i%\n";
echo "Che schifo!($v1 voti) [img]http://icons.iconarchive.com/icons/dimension-of-deskmod/micro/Applications-48x48.png[/img] $s%\n";
echo "</pre>";
}
function showform() {
echo '<form method="post" enctype="multipart/form-data" name="poll" action="'.$_SERVER['PHP_SELF'].'">
<label><input type="radio" name="voto" value="v5" />Eccellente</label>
<label><input type="radio" name="voto" value="v4" />Ottimo</label>
<label><input type="radio" name="voto" value="v3" />Buono</label>
<label><input type="radio" name="voto" value="v2" />Sufficente</label>
<label><input type="radio" name="voto" value="v1" />Che schifo!</label>
<input type="submit" name="vote" value="Aggiungi il tuo voto" />
</form>';
}
//Eseguo tutte le operazioni tramite chiamata a funzione
if($_COOKIE[$coname]) {
showresults();
} elseif(!$_COOKIE[$coname]) {
showform();
if ($_POST['voto']) {
addvote();
}
}
?>