Gå til innhold

Resultater vises ikke i vote'en


Anbefalte innlegg

Heisann

 

Plutselig en dag funka ikke voten på siden min. Hvis jeg trykker på "resultater"-knappen vises bare stemme-alternativene. Vet det står en IF og to variabler, og ser at de aldri blir endret i koden. Hadde jeg vist hva det i IF'en betyr hadde jeg sikker fiksa det, men det vet jeg ikke :blush: (Se siden min for eksempel) Her er koden:

<?php

$RESULT_FILE_NAME = "php_poll/poll_data.txt";

$QUESTION = "<td><p>Hva synes du om siden?</p></td>";

$ANSWER = array("Nydelig!", "Bra", "Passe..", "Dårlig!");

$IMG_DIR_URL = "php_poll/vote";

$REVOTE_TIME = 3600;

if (! $vote && ! $result) {
echo "<FORM METHOD=\"POST\" ACTION=\"\">\n";
echo "<TABLE WIDTH=\"100%\" BORDER=0><TR><TD><TABLE WIDTH=\"100%\" BORDER=0>\n";
echo "<TR>$QUESTION</TR>\n";
while (list($key, $val) = each($ANSWER)) {
 echo "<TR><TD align=\"left\"><INPUT TYPE=\"radio\" NAME=\"answer\" VALUE=\"$key\"> $val</TD></TR>\n";
} 
echo "<TR><TD><INPUT STYLE=\"background-color:#79c4e2; FONT-SIZE: 8pt; COLOR: #354c74; FONT-FAMILY: tahoma;\" TYPE=\"Submit\" NAME=\"vote\" VALUE=\"  Stem  \"> <INPUT STYLE=\"background-color:#79c4e2; FONT-SIZE: 8pt; COLOR: #354c74; FONT-FAMILY: tahoma;\" TYPE=\"Submit\" NAME=\"result\" VALUE=\"Resultat\"></TD></TR>\n";
echo "</TABLE></TD></TR></TABLE></FORM>";
} else {

$file_array = file($RESULT_FILE_NAME);

if ($answer < count($ANSWER) && $vote) {
 if (count($file_array) < count($ANSWER))  {
 	$file_array = array("0\n", "0\n", "0\n", "0\n", "0\n", "0\n", "0\n", "0\n", "0\n", "0\n");
 }
 $old_answer = $file_array[$answer];
 $old_answer = preg_replace("/\n\r*/", "", $old_answer);
 $file_array[$answer] = ($old_answer + 1)."\n";

 $file = join('', $file_array);
 $fp = fopen("$RESULT_FILE_NAME", "w");
 flock($fp, 1);
 fputs($fp, $file);                                                     
 flock($fp, 3);
 fclose($fp);
}

while (list($key, $val) = each($file_array)) {
 $total += $val;
}


echo "<center><p STYLE=\"COLOR: #354c74;\">Resultater:</p></center>";
echo "<TABLE CELLSPACING=2 CELLPADDING=1 BORDER=0>";


while (list($key, $val) = each($ANSWER)) {
 $percent =  $file_array[$key] * 100 / $total;
 $percent_int = floor($percent);
 $percent_float = number_format($percent, 1);
 $tp += $percent_float;
 echo "<tr><td> $ANSWER[$key] </td><td> <img height=9 src=\"$IMG_DIR_URL/vote_left.gif\"><img height=9 width=\"$percent_int\" src=\"$IMG_DIR_URL/vote_middle.gif\"><img height=9 src=\"$IMG_DIR_URL/vote_right.gif\"></td><td> $percent_int %</td></tr>";
}

echo "</TABLE><br>";
echo "<p STYLE=\"COLOR: #354c74;\">Antall stemmer: $total</p>";
}

?>

Lenke til kommentar
Videoannonse
Annonse

Problemet ditt ligger i at du har start.no (home.no.net) som webhost, og at de nettopp oppgraderte PHP-versjonen. Den har register_globals avslått som default. Ergo kan du ikke lenger hente variabler rett fra løse luften.

 

Gå gjennom koden din og prøv å finne ut hvor det er meningen at variablene skal komme fra. Skal de komme fra et skjema med POST, bytter du ut $variabelnavn med $_POST['variabelnavn']. Er det data fra skjema med GET eller adresselinjen, bruker du $_GET['variabelnavn']. :)

Lenke til kommentar

Nå får jeg vist resultatene, men hvis jeg stemmer, stemmer jeg blankt! Noen som ser feilen i koden?

<?php

$RESULT_FILE_NAME = "php_poll/poll_data.txt";

$QUESTION = "<td><p>Hva synes du om siden?</p></td>";

$ANSWER = array("Nydelig!", "Bra", "Passe..", "Dårlig!");

$IMG_DIR_URL = "php_poll/vote";

$REVOTE_TIME = 3600;

if (! $_POST['vote'] && ! $_POST['result']) {
echo "<FORM METHOD=\"POST\" ACTION=\"\">\n";
echo "<TABLE WIDTH=\"100%\" BORDER=0><TR><TD><TABLE WIDTH=\"100%\" BORDER=0>\n";
echo "<TR>$QUESTION</TR>\n";
while (list($key, $val) = each($ANSWER)) {
 echo "<TR><TD align=\"left\"><INPUT TYPE=\"radio\" NAME=\"answer\" VALUE=\"$key\"> $val</TD></TR>\n";
} 
echo "<TR><TD><INPUT STYLE=\"background-color:#79c4e2; FONT-SIZE: 8pt; COLOR: #354c74; FONT-FAMILY: tahoma;\" TYPE=\"Submit\" NAME=\"vote\" VALUE=\"  Stem  \"> <INPUT STYLE=\"background-color:#79c4e2; FONT-SIZE: 8pt; COLOR: #354c74; FONT-FAMILY: tahoma;\" TYPE=\"Submit\" NAME=\"result\" VALUE=\"Resultat\"></TD></TR>\n";
echo "</TABLE></TD></TR></TABLE></FORM>";
} else {

$file_array = file($RESULT_FILE_NAME);

if ($_POST['ANSWER'] < count($ANSWER) && $_POST['vote']) {
 if (count($file_array) < count($_POST['ANSWER']))  {
 	$file_array = array("0\n", "0\n", "0\n", "0\n", "0\n", "0\n", "0\n", "0\n", "0\n", "0\n");
 }
 $old_answer = $file_array[$_POST['ANSWER']];
 $old_answer = preg_replace("/\n\r*/", "", $old_answer);
 $file_array[$_POST['ANSWER']] = ($old_answer + 1)."\n";

 $file = join('', $file_array);
 $fp = fopen("$RESULT_FILE_NAME", "w");
 flock($fp, 1);
 fputs($fp, $file);                                                     
 flock($fp, 3);
 fclose($fp);
}

while (list($key, $val) = each($file_array)) {
 $total += $val;
}


echo "<center><p STYLE=\"COLOR: #354c74;\">Resultater:</p></center>";
echo "<TABLE CELLSPACING=2 CELLPADDING=1 BORDER=0>";


while (list($key, $val) = each($ANSWER)) {
 $percent =  $file_array[$key] * 100 / $total;
 $percent_int = floor($percent);
 $percent_float = number_format($percent, 1);
 $tp += $percent_float;
 echo "<tr><td> $ANSWER[$key] </td><td> <img height=9 src=\"$IMG_DIR_URL/vote_left.gif\"><img height=9 width=\"$percent_int\" src=\"$IMG_DIR_URL/vote_middle.gif\"><img height=9 src=\"$IMG_DIR_URL/vote_right.gif\"></td><td> $percent_int %</td></tr>";
}

echo "</TABLE><br>";
echo "<p STYLE=\"COLOR: #354c74;\">Antall stemmer: $total</p>";
}

?>

Lenke til kommentar
Har du sjekket over alt, og vært konsistent på hva du bruker? Ser at du veksler mellom $_POST['ANSWER'] og $ANSWER endel.

Det er det jeg har problemer med. Jeg ser at det står count et par steder, men jeg vet ikke om den teller anntall alternativer i array'et, eller om den skal hente stemmen til brukeren!

 

Jeg prøvde å sette en echo under denne IF'en, men ingen ting kom frem:

if ($_POST['ANSWER'] < count($ANSWER) && $_POST['vote']) {

Hva betyr && ? Plusse sammen to variabler? "vote"-variablen er ikke et tall som jeg kan se :ermm: Det er bare navnet på en knapp.

Endret av Jonas
Lenke til kommentar
Noen som ser feilen i koden?
Ja jøss. Og du ser ikke feilene sjøl? Trur du er totalt blind jeg mann. Her er en modifisert versjon, mye igjen og fikse, men det får du gjøre sjøl (om du gjør det veit jeg ikke). Jeg har fjerna doble fnutter og erstatta dem med enkle (som er absolutt anbefalt), og fjerna noe, men scriptet ditt var så trakasert at jeg simpelthen ikke gidda gjøre om alle feilene dine. Hvorfor nested tables? Alle tager skal være lowercase ++

 

 

<?php

$RESULT_FILE_NAME = 'php_poll/poll_data.txt';

$QUESTION = '<td><p>Hva synes du om siden?</p></td>';

$ANSWER = array('Nydelig!', 'Bra', 'Passe..', 'Dårlig!');

$IMG_DIR_URL = 'php_poll/vote';

$REVOTE_TIME = 3600;

if (! $vote && ! $result)
{

echo <<<form
<form method="post" action="">
<table width="100%" style="border: 1px solid black;">
<tr>
<td>
<table width="100%" style="border: 0;">
<tr>$QUESTION</tr>

form;


foreach($ANSWER as $key => $val)
{
 	echo '<tr><td align="left"><input type="radio" name="answer" value="' . $key . '">' . $val . "</td></tr>\n";
}
echo <<<hello
<tr>
<td><input style="background-color:#79c4e2; font-size: 8pt; color: #354c74; font-family: tahoma;" type="Submit" name="vote" value="  Stem  ">
<input style="background-color:#79c4e2; font-size: 8pt; color: #354c74; font-family: tahoma;" type="Submit" name="result" value="Resultat"></td></tr>
</table></td></tr></table></form>
hello;
} else {

$file_array = file($RESULT_FILE_NAME);

if($answer < count($ANSWER) && $vote)
{
 $count_answer = count($ANSWER);
 if (count($file_array) < $count_answer)
 {
   	$file_array = array("0\n", "0\n", "0\n", "0\n", "0\n", "0\n", "0\n", "0\n", "0\n", "0\n");
 	}

   $old_answer = $file_array[$answer];
   $old_answer = preg_replace("/\n\r*/", "", $old_answer);
   $file_array[$answer] = ($old_answer + 1)."\n";

   $file = join('', $file_array);
   $fp = fopen($RESULT_FILE_NAME, 'w');
   flock($fp, 1);
   fputs($fp, $file);                                                    
   flock($fp, 3);
   fclose($fp);
}

while (list($key, $val) = each($file_array)) {
$total += $val;
}


echo '<center><p style="color: #354c74;">Resultater:</p></center>
<table cellspacing="2" cellpadding="1" style="border: 0;">';


foreach($ANSWER as $key => $val)
{
$percent =  $file_array[$key] * 100 / $total;
$percent_int = floor($percent);
$percent_float = number_format($percent, 1);
$tp += $percent_float;

echo <<<answer
<tr>
<td>{$ANSWER[$key]}</td>
<td> <img height="9" src="$IMG_DIR_URL/vote_left.gif"><img height="9" width="$percent_int" src="$IMG_DIR_URL/vote_middle.gif"><img height="9" src="$IMG_DIR_URL/vote_right.gif"></td>
<td>&nbsp $percent_int%</td></tr>\n
answer;


}

echo '</table><br />
<p style="color: #354c74;">Antall stemmer: ' . $total . '</p>';

}

?>

Lenke til kommentar

dabear, hvis du hadde lest tråden min godt hadde du sett at problemet var at resultat og vote-knappen ikke virket. Du hadde også skjønt at jeg ikke fant feilene. Derfor spør jeg! Trur du er totalt blind jeg mann.

 

Edit: Og hvis du ikke fikk det med deg: Koden din fikset ikke problemet!

Endret av Jonas
Lenke til kommentar
Jeg forstår ikke helt hvorfor folk henvender seg hit når de vil ha hjelp med ferdige script, da de fleste skikkelige script har egne support-forum.

Leeengde siden jeg lastet det ned, og nå husker jeg ikke hvor.

 

Torbjørn, jeg er klar over det, men skriptet har to $answer, en som inneholder spørsmål, og en som inneholder stemmen til brukeren. Jeg skjønner ikke helt hvilken som brukes hvor :blush:

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...