Avatar billede m_bold Praktikant
18. november 2004 - 17:56 Der er 5 kommentarer og
1 løsning

Cookie-problemer

Hejsa. Jeg har problemer (med mine cookie tror jeg). Jeg har lavet en afstemning, men jeg får altid vist resultatet når jeg går ind på siden. Man får aldrig muligheden for at stemme - heller ikke på en computer, som aldrig har været inde på siden før. Kan I fikse det?

Øverst i index.php:
<?
function VoteNow() {
global $cookieprefix;
    if(!$_REQUEST[action]) {
        if($_REQUEST[action] == "vote") {
            $conn = mysql_connect ("xxxxxxx","xxxxxxx","xxxxxxxx");
                mysql_select_db("boldsens_dk");
                mysql_query("UPDATE pollanswer SET hits = hits + 1 WHERE questionid = '$_REQUEST[questionid]' AND id = '$_REQUEST[id]'");
                mysql_close($conn);
                setcookie($cookieprefix."stem", "true", time()+999999);
        }
    }
}
?>


Der hvor jeg ønsker afstemningen:
<?
          if(HaveVoted() != true) {
            echo VoteNow();
            echo ShowResults();
            } else {
            echo ShowPoll();
            }
           
            function HaveVoted() {
            global $cookieprefix;
            if($_COOKIE[$cookieprefix."stem"]) {
            return true;
            } else {
            return false;
            }
            }
?>
Avatar billede schaefner Juniormester
18. november 2004 - 18:02 #1
Nu ville det jo være rart at se de andre funktioner også, men det her i VoteNow() giver ikke meget mening:

if(!$_REQUEST[action]) {
  if($_REQUEST[action] == "vote") {

Hvis $_REQUEST['action'] ikke er sat skal den tjekke om den er lig med vote?

Umiddelbart burde det være:

<?php
function VoteNow() {
  global $cookieprefix;
  if(isset($_REQUEST['action'])) {
    if($_REQUEST['action'] == "vote") {
      $conn = mysql_connect ("xxxxxxx","xxxxxxx","xxxxxxxx");
      mysql_select_db("boldsens_dk");
      mysql_query("UPDATE pollanswer SET hits = hits+1 WHERE questionid = '$_REQUEST[questionid]' AND id = '$_REQUEST[id]'");
      mysql_close($conn);
      setcookie($cookieprefix."stem", "true", time()+999999);
    }
  }
}
?>
Avatar billede hmortensen Nybegynder
18. november 2004 - 18:02 #2
Du kan prøve sådan her, for at se om den kommer ind i if'en:
if(HaveVoted() != true) {
            echo "Har ikke stemt";
} else {
            echo "Har stemt";
}
Avatar billede m_bold Praktikant
18. november 2004 - 18:22 #3
Ja det er rettet. Sorry guys, men jeg opdagede lige en fejl i det jeg lagde ud før her kommer lige den opdaterede funktion. Nu er problemet, at jeg kun får muligheden for at stemme, og aldrig ser resultatet af afstemningen. Altså omvendt fra før. Sorry. Den udskriver altså her "har ikke stemt".

<?php
function VoteNow() {
  global $cookieprefix;
  if(isset($_REQUEST['action'])) {
    if($_REQUEST['action'] == "vote") {
      $conn = mysql_connect ("xxxxxxx","xxxxxxx","xxxxxxx");
      mysql_select_db("boldsens_dk");
      mysql_query("UPDATE pollanswer SET hits = hits+1 WHERE questionid = '$_REQUEST[questionid]' AND id = '$_REQUEST[id]'");
      mysql_close($conn);
      setcookie($cookieprefix."stem", "true", time()+999999);
    }
  }
}
?>

<?
              if(HaveVoted() == true) {
            echo VoteNow();
            echo ShowResults();
            } else {
            echo ShowPoll();
            }
           
            if(HaveVoted() == true) {
                        echo "Har stemt";
            } else {
                        echo "Har ikke stemt";
            }
                       
            function HaveVoted() {
            global $cookieprefix;
            if($_COOKIE[$cookieprefix."stem"]) {
            return true;
            } else {
            return false;
            }
            }
?>
Avatar billede m_bold Praktikant
18. november 2004 - 18:26 #4
Og her kommer resten:


function ShowResults() {

########## POLL QUESTION ##########

$kode .= "<table>\n";
$conn = mysql_connect ("xxxxxxx","xxxxxx","xxxxxxx");
mysql_select_db("boldsens_dk");
$result = mysql_query("select * from pollquestion WHERE start <= now() AND end >= now()");
while ($row = mysql_fetch_array($result)) {
$kode .= "<tr><td colspan=\"2\">" . htmlentities($row["question"]) . "</td></tr>\n";

$questionid = $row["questionid"];
}

########## SUM OF POLLANSWERS ##########

$result = mysql_query("select sum(hits) as hits from pollanswer where questionid = '$questionid'");
while ($row = mysql_fetch_array($result)) {
  $sum = $row["hits"];
 

}

$result = mysql_query("select * from pollanswer WHERE questionid = '$questionid'");
while ($row = mysql_fetch_array($result)) {
  $percent = 0;
  if($row["hits"] > 0) {
    $percent = ($row["hits"] * 100) / $sum;
  }
    $kode .= "<tr><td>" . htmlentities($row["answer"]) . "</td>";
    $kode .= '<td><img src="hl.jpg" style="width: ' . $percent . 'px; height: 12px; border: 0px;" alt=""></td>';
    $kode .= "<td>" . round($percent , 1). "%</td></tr>\n";
   
}
  $kode .= "<td><tr><td colspan=\"2\">$sum stemme(r) i alt</td></tr>\n";
mysql_close($conn);

$kode .= "</table>\n";

########## VOTE ##########

if($_REQUEST[action] == "vote") {
$conn = mysql_connect ("xxxxxx","xxxxxx","xxxxxxx");
  mysql_select_db("boldsens_dk");
  mysql_query("UPDATE pollanswer SET hits = hits + 1 WHERE questionid = '$_REQUEST[questionid]' AND id = '$_REQUEST[id]'");
  mysql_close($conn);
}
return $kode;
}


function ShowPoll() {
    ########## POLL QUESTION ##########
   
    $kode .=  "<form action=\"index.php?action=vote\" method=\"post\">\n";
    $kode .= "<table>\n";
   
    $conn = mysql_connect("xxxxxxx", "xxxxxxx", "xxxxxxx");
    mysql_select_db("boldsens_dk");
    $result = mysql_query("select * from pollquestion WHERE start <= now() AND end >= now()");
   
    while ($row = mysql_fetch_array($result)) {
    $kode .= "<tr><td>" . htmlentities($row[question]) . "</td></tr>\n";
   
    $questionid = $row[questionid];
    }
?>
                </div></td>
            </tr>
          </table>
          <font size="1" face="Arial, Helvetica, sans-serif"><br>
          </font></div>
      </div>
      <div align="center"></div>
      <table width="181" cellspacing="0">
        <tr>
          <td width="148" font size="1" face="Arial, Helvetica, sans-serif">
            <?
    ########## POLL ANSWERS ##########
   
    $result = mysql_query("select * from pollanswer WHERE questionid = '$questionid'");
    while ($row = mysql_fetch_array($result)) {
    $kode .= "<tr><td><input type=\"radio\" name=\"id\" value=\"" . $row["id"] . "\">" . $row["answer"]."</td></tr>\n";
    }
    $kode .= "<tr><td><input type=\"hidden\" name=\"questionid\" value=\"$questionid\">\n";
?>
            <div align="center"> <font size="1" face="Arial, Helvetica, sans-serif">
              <?
    $kode .= "<br>";
    $kode .= "<input type=\"submit\" value=\"Stem\"></td></tr>\n";
    $kode .= "</table>\n";
    $kode .= "</form>\n";

    return $kode;
}
?>
Avatar billede m_bold Praktikant
18. november 2004 - 21:22 #5
Jeg har puslet lidt mere med det. Og nu er mit eneste problem, at man skal stemme 2 gange før man får vist sit afstemningsresultat. Koden ser sådan her ud:

<?php
  global $cookieprefix;
  if(isset($_REQUEST['action'])) {
    if($_REQUEST['action'] == "vote") {
      $conn = mysql_connect ("xxxxxxxx","xxxxxxxx","xxxxxxxx");
      mysql_select_db("boldsens_dk");
      mysql_query("UPDATE pollanswer SET hits = hits+1 WHERE questionid = '$_REQUEST[questionid]' AND id = '$_REQUEST[id]'");
      mysql_close($conn);
      setcookie($cookieprefix."stem", "true", time()+999999);
    }
  }
?>

<?
          function HaveVoted() {
            global $cookieprefix;
            if($_COOKIE[$cookieprefix."stem"]) {
            return true;
            } else {
            return false;
            }
            }
                                 
function ShowResults() {

########## POLL QUESTION ##########

$kode .= "<table>\n";
$conn = mysql_connect ("xxxxxxxx","xxxxxxxx","xxxxxxxx");
mysql_select_db("boldsens_dk");
$result = mysql_query("select * from pollquestion WHERE start <= now() AND end >= now()");
while ($row = mysql_fetch_array($result)) {
$kode .= "<tr><td colspan=\"2\">" . htmlentities($row["question"]) . "</td></tr>\n";

$questionid = $row["questionid"];
}

########## SUM OF POLLANSWERS ##########

$result = mysql_query("select sum(hits) as hits from pollanswer where questionid = '$questionid'");
while ($row = mysql_fetch_array($result)) {
  $sum = $row["hits"];
}

$result = mysql_query("select * from pollanswer WHERE questionid = '$questionid'");
while ($row = mysql_fetch_array($result)) {
  $percent = 0;
  if($row["hits"] > 0) {
    $percent = ($row["hits"] * 100) / $sum;
  }
    $kode .= "<tr><td>" . htmlentities($row["answer"]) . "</td>";
    $kode .= '<td><img src="Pics/bar.jpg" style="width: ' . $percent . 'px; height: 12px; border: 0px;" alt=""></td>';
    $kode .= "<td>" . round($percent , 1). "%</td></tr>\n";
}
  $kode .= "<td><tr><td colspan=\"2\">$sum stemme(r) i alt</td></tr>\n";
mysql_close($conn);

$kode .= "</table>\n";

########## VOTE ##########

if($_REQUEST[action] == "vote") {
$conn = mysql_connect ("xxxxxxxx","xxxxxxxx","xxxxxxxx");
  mysql_select_db("boldsens_dk");
  mysql_query("UPDATE pollanswer SET hits = hits + 1 WHERE questionid = '$_REQUEST[questionid]' AND id = '$_REQUEST[id]'");
  mysql_close($conn);
}
return $kode;
}

function ShowPoll() {
    ########## POLL QUESTION ##########
   
    $kode .=  "<form action=\"index.php?action=vote\" method=\"post\">\n";
    $kode .= "<table>\n";
   
    $conn = mysql_connect("xxxxxxxx", "xxxxxxxx", "xxxxxxxx");
    mysql_select_db("boldsens_dk");
    $result = mysql_query("select * from pollquestion WHERE start <= now() AND end >= now()");
   
    while ($row = mysql_fetch_array($result)) {
    $kode .= "<tr><td>" . htmlentities($row[question]) . "</td></tr>\n";
   
    $questionid = $row[questionid];
    }

    ########## POLL ANSWERS ##########
   
    $result = mysql_query("select * from pollanswer WHERE questionid = '$questionid'");
    while ($row = mysql_fetch_array($result)) {
    $kode .= "<tr><td><input type=\"radio\" name=\"id\" value=\"" . $row["id"] . "\">" . $row["answer"]."</td></tr>\n";
    }
    $kode .= "<tr><td><input type=\"hidden\" name=\"questionid\" value=\"$questionid\">\n";

    $kode .= "<br>";
    $kode .= "<input type=\"submit\" value=\"Stem\"></td></tr>\n";
    $kode .= "</table>\n";
    $kode .= "</form>\n";

    return $kode;
}

            if(HaveVoted() == true) {
            echo ShowResults();
            } else {
            echo ShowPoll();
            }
           
            if(HaveVoted() == true) {
                        echo "Du har stemt";
            } else {
                        echo "Du har ikke stemt";
            }
?>

Kan I gennemskue den?
Avatar billede m_bold Praktikant
18. november 2004 - 22:15 #6
Nå jeg fik løst svaret her: http://www.eksperten.dk/spm/562820
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