Avatar billede big_ossi Nybegynder
03. januar 2004 - 02:33 Der er 8 kommentarer og
1 løsning

cookie bliver ikke lavet/sat

Jeg bruger denne kode i forbindelse med folk kan stemme på en uploadet fest.

men hver gang man går ind på siden kan man stemme. og der er ingen cookie at finde på min computer efter jeg har stemt.

koden/formen:

<?


if (isset($_COOKIE["dff_". $_GET["id"]])) {

    $sql5 = "SELECT * from festene WHERE id = '$_GET[id]' ORDER BY id DESC";
    $result5 = mysql_query($sql5);
    $row5 = mysql_fetch_array($result5);
    $rate_ialt  =  $row5[rate_ialt];
    $rate_antal =  $row5[rate_antal];
    $gennemsnit = $rate_ialt / $rate_antal;
    $round = round($gennemsnit, 2);
    echo "<b>---$rate_antal mennesker har stemt $round i gennemsnit--- </b>";
}else{
?>
<form method="POST" action="rate.php">

<script>

if (navigator.cookieEnabled) {

  document.write("<select name=\"rate\" size=\"1\"> <option value=\"1\" selected>1 Dårlig fest</option> <option value=\"2\">2</option><option value=\"3\">3</option><option value=\"4\">4</option><option value=\"5\">5 Fed fest</option></select><p><input type=\"submit\" value=\"Vote!\" name=\"rate\">")

}

else {

  document.write("Du kan ikke vote da du ikke har cookies slået til!")

}

</script>

  <p></p>

</form>
------------------------------
Filen som bruges til action i formen "rate.php"
------------------------------

<?php
include("../db.php");
if (isset($_POST["fest_id"])) {

    if (isset($_COOKIE["dff_". $_POST["fest_id"]])) {
    $var = "Du har allerede stemt";
}else{
    setcookie("dff_". $_POST["fest_id"], $_POST["rate"], time()+6048000);
    $fest_id = $_POST["fest_id"];
    $rate =  $_POST["rate"];
    $sql = "SELECT * from festene WHERE id = '$fest_id' ORDER BY id DESC";
    $result = mysql_query($sql);
    $row = mysql_fetch_array($result);
    $nytantal = $row[rate_antal] + 1;
    $nyrate = $row[rate_ialt] + $rate;
    mysql_query("UPDATE festene set rate_antal = '$nytantal' WHERE id = '$fest_id'");
    mysql_query("UPDATE festene set rate_ialt = '$nyrate' WHERE id = '$fest_id'");
    $var = "Tak for din stemme.!";
    }
}else{
$var = "Stem!";
}
?>

er der en der kan hjælpe med at rette fejlen så den virker? jeg har ik flere ideer til hvad fejlen kan være..
Avatar billede Slettet bruger
03. januar 2004 - 09:10 #1
Der er flere fejl.

I din form, er navnet på både sybmit-knappen og <select>-boxen sat til rate

Derudover er der intet fest_id i den form, så if (isset($_POST["fest_id"])) vil altid kun køre else-delen.

Endelig er der brugt en meget forvirrende indrykning, der gør det meget svært at overskue hvad der hører til hvilken if, og hvilke if/else der hører sammen.
Avatar billede Slettet bruger
03. januar 2004 - 09:16 #2
Denne blok:

    $sql = "SELECT * from festene WHERE id = '$fest_id' ORDER BY id DESC";
    $result = mysql_query($sql);
    $row = mysql_fetch_array($result);
    $nytantal = $row[rate_antal] + 1;
    $nyrate = $row[rate_ialt] + $rate;
    mysql_query("UPDATE festene set rate_antal = '$nytantal' WHERE id = '$fest_id'");
    mysql_query("UPDATE festene set rate_ialt = '$nyrate' WHERE id = '$fest_id'");

Kan gøres meget mere effektiv således:

mysql_query("UPDATE festene SET rate_antal=rate_antal+1, rate_ialt=rate_ialt+'$rate' WHERE id='$fest_id'");
Avatar billede olebole Juniormester
03. januar 2004 - 20:35 #3
<ole>

Og endnu mere effektiv sådan:
  mysql_query("UPDATE festene SET rate_antal=rate_antal+1, rate_ialt=rate_ialt+'$rate' WHERE id='$fest_id' LIMIT 1");

/mvh
</bole>
Avatar billede RJFreelance Praktikant
03. januar 2004 - 21:49 #4
Fest_id skulle gerne ligge som en hidden hvilket jeg kan se den ikke gør.
Avatar billede big_ossi Nybegynder
03. januar 2004 - 22:14 #5
nu er fest_id med men den virker stadig ikke
( kan ses i aktion på www.sillerslev.dk/sider/feste/indexx.php )
<?


if (isset($_COOKIE["dff_". $_GET["id"]])) {

    $sql5 = "SELECT * from festene WHERE id = '$_GET[id]' ORDER BY id DESC";
    $result5 = mysql_query($sql5);
    $row5 = mysql_fetch_array($result5);
    $rate_ialt  =  $row5[rate_ialt];
    $rate_antal =  $row5[rate_antal];
    $gennemsnit = $rate_ialt / $rate_antal;
    $round = round($gennemsnit, 2);
    echo "<b>---$rate_antal mennesker har stemt $round i gennemsnit--- </b>";
}else{
?>
<form method="POST" action="rate.php">

<script>

if (navigator.cookieEnabled) {

  document.write("<input type=\"hidden\" name=\"fest_id\" value=\"<?=$_GET[id] ?>\"><select name=\"rate\" size=\"1\"> <option value=\"1\" selected>1 Dårlig fest</option> <option value=\"2\">2</option><option value=\"3\">3</option><option value=\"4\">4</option><option value=\"5\">5 Fed fest</option></select><p><input type=\"submit\" value=\"Vote!\" name=\"rate_submit\">")

}

else {

  document.write("Du kan ikke vote da du ikke har cookies slået til!")

}

</script>

  <p></p>

</form>
Avatar billede RJFreelance Praktikant
03. januar 2004 - 22:15 #6
Virker fint her..
Avatar billede big_ossi Nybegynder
03. januar 2004 - 22:21 #7
neeej den virker bare ikke når den kaldes frem i en iframe.. har jeg fundet ud af www.Denfedestefest.dk og menu punkt festliste der virker den ikke
Avatar billede big_ossi Nybegynder
07. januar 2004 - 01:06 #8
tak for hjælpen.. lukker for nu laver den da cookie...

hvorfor det ikke helt virker ordentlig i iframé er mystisk men i skal da ha points.. så læg et svar
Avatar billede Slettet bruger
07. januar 2004 - 01:16 #9
Her er et fra mig
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester