Avatar billede martinbk Nybegynder
19. april 2003 - 18:55 Der er 25 kommentarer og
1 løsning

form vil ikke kalde function

hejsa jeg har et poll script i filen poll.php
mit problem ligger i jeg ikke kan få min poll form til at kalde functionen CastVote, har siddet i et par timer med denne hovedepine nu, håber der er nogen der kan se mit problem og afhjælpe det, her følger lidt kode:

<-- poll.php -->
    $cookieprefix = "a_poll";
    $redirectto = "index.php";

    function HaveVoted($pid) {
        global $cookieprefix;
        if(($_COOKIE[$cookieprefix."vote".$pid]) AND ($_COOKIE[$cookieprefix."poll".$pid] == $pid)) {
            return true;
        }
        else {
            return false;
        }
    }

    function CastVote($pid, $vote) {
        global $dbtable_pollvotes; global $cookieprefix; global $redirectto;
        if(HaveVoted($pid) != true) {   
            $addvote = mysql_query("insert into pollvotes (pollid, vote) values ('$pid','$vote')");
            setcookie($cookieprefix."vote".$pid, $vote, time()+999999999);
            setcookie($cookieprefix."poll".$pid, $pid, time()+999999999);   
            header("location: $redirectto");
        }
    }

    function ShowPoll($pid) {
        global $dbtable_polls;
        $query = mysql_query("select * from polls where id='$pid'");
        if(mysql_num_rows($query) > 0)
        {
            $q = stripslashes(mysql_result($query, 0, "question"));
            $num = mysql_result($query, 0, "numofanswers");
            $kode .= "<P align=center><FONT face=\"Verdana, Arial, Helvetica, sans-serif\" size=1>".$q."</p>";
            $kode .= "<form action=\"poll.php\" method=\"post\">";
            $i = 1;
            $kode .= "<TABLE borderColor=#2a0000 cellSpacing=0 cellPadding=0 width=150 bgColor=#ece9d8 border=1><tbody>";
            while($i != $num+1) {
                $a = stripslashes(mysql_result($query, 0, "answer".$i));
                $kode .= "<TR><TD borderColor=#ece9d8 width=25><INPUT type=radio name=\"vid\" value=\"$i\"></TD><TD borderColor=#ece9d8><FONT face=\"Verdana, Arial, Helvetica, sans-serif\" size=1>".$a."</FONT></TD></TR>";
                $i++;
            }
            $kode .= "<input type=\"hidden\" name=\"pid\" value=\"$pid\" />";
            $kode .= "</table>";
            $kode .= "<br /><INPUT type=image height=14 width=50 src=\"images/knap-stem.gif\" name=\"do_vote\" value=\"submit\">";
            $kode .= "</form>";
        }
        return $kode;       
    }
    function ShowResults($pid) {
        global $dbtable_polls;    global $dbtable_pollvotes;
        $query = mysql_query("select * from polls where id='$pid'");
        $q = stripslashes(mysql_result($query, 0, "question"));
        $num = mysql_result($query, 0, "numofanswers");
        $kode .= "<div class=\"poll\">$q</div><br /><br />";
        $votesquery = mysql_query("select count(id) from pollvotes where pollid='$pid'");
        $totalvotes = mysql_result($votesquery, 0, 0);
        $i = 1;
        $kode .= "<table style=\"width: 90%; border: 1px solid black;\">";
        while($i != $num+1) {
            $a = stripslashes(mysql_result($query, 0, "answer".$i));
            $resultquery = mysql_query("select count(id) from pollvotes where pollid='$pid' and vote='$i'");
            $votes = mysql_result($resultquery, 0, 0);
            if($votes > 0) {
                $average = round(100 * $votes / $totalvotes, 2);
            } else {
                $average = "0";
            }
            $kode .= "<tr>";
            $kode .= "<td colspan=\"2\"><div>$a:</div></td>";   
            $kode .= "</tr><tr>";       
            $kode .= "<td style=\"width: 100%;\"><span style=\"width: $average%; background-color: #A0BBD0; border: 1px solid black\"></td>";
            $kode .= "<td></span>  <span style=\"text-align: right; font-weight: bold;\">$average%</span></td>";
            $kode .= "</tr>";           
            $i++;
        }
        $kode .= "</table>";
        $kode .= "<br /><div class=poll>Stemmer i alt:<br /><b>$totalvotes</b></div>";
        return $kode;
    }
<-- poll.php SLUT -->

<-- index.php -->

    $pid = 1;
    if($_POST[do_vote] and $_POST[pid] and $_POST[vid]) {
        CastVote($_POST[pid], $_POST[vid]);
    }

    if(HaveVoted($pid) == true) {
        echo ShowResults($pid);
    }
    else {
        echo ShowPoll($pid);
    }
<-- index.php SLUT -->

problemet er altså at functionen CastVote slet ikke kaldes, og jeg kan ikke umiddelbart se fejlen
Avatar billede martinbk Nybegynder
19. april 2003 - 18:56 #1
skal lige siges filen poll.php self. includes i toppen af index.php så ikke der mit problem ligger
Avatar billede erikjacobsen Ekspert
19. april 2003 - 19:01 #2
Så må du jo udskrive
$_POST[do_vote], $_POST[pid], $_POST[vid]
og se hvad de indeholder
Avatar billede martinbk Nybegynder
19. april 2003 - 19:14 #3
hmm, jeg er lidt lost der erikjacbsen, hvordan og hvor ville du udskrive de form values ?
Avatar billede erikjacobsen Ekspert
19. april 2003 - 19:17 #4
lige før if-sætningen hvor du tester på dem
Avatar billede erikjacobsen Ekspert
19. april 2003 - 19:22 #5
Som jeg læser det, så kalder din form: poll.php, men det
er i index.php du aflæser disse værdier i din if-sætning.
Det kan da ikke være korrekt.
Avatar billede martinbk Nybegynder
19. april 2003 - 19:47 #6
jeg prøvede at ændre min form action til =\"index.php\" men det hjalp lige lidt
Avatar billede erikjacobsen Ekspert
19. april 2003 - 19:50 #7
Et link til siden?
Hvad med den udskrift?
Avatar billede martinbk Nybegynder
19. april 2003 - 19:54 #8
Avatar billede erikjacobsen Ekspert
19. april 2003 - 20:02 #9
Sikker på funktionen ikke bliver kaldt?
Avatar billede martinbk Nybegynder
19. april 2003 - 20:11 #10
ja temmelig sikker for jeg har prøvet at indsætte
en echo "fisk"; lige inden denne linie
if(HaveVoted($pid) != true) {
Avatar billede erikjacobsen Ekspert
19. april 2003 - 20:22 #11
Det kan du jo ikke nå at se når du laver en redirect.
Sæt

  exit();

ind lige før din redirect. Hvad sker der så?
Avatar billede martinbk Nybegynder
19. april 2003 - 20:23 #12
har sat exit ind, og der sker stadig ingenting
Avatar billede martinbk Nybegynder
19. april 2003 - 20:24 #13
jeg kan pakke index.php og poll.php i en fil du kan downloade, kan værre det ville hjælpe dig til at lave et løsningsforslag?
Avatar billede erikjacobsen Ekspert
19. april 2003 - 20:28 #14
Tjah - men fjern password til databasen.
Avatar billede martinbk Nybegynder
19. april 2003 - 20:28 #15
hehe der er ikke noget, de er included fra andre filer
Avatar billede erikjacobsen Ekspert
19. april 2003 - 20:29 #16
Jeg vil nu hellere have den udskrift før if-sætningen, som jeg har efterlyst
flere gange.
Avatar billede martinbk Nybegynder
19. april 2003 - 20:30 #17
du kan hente begge filer her nu --> http://www.lamerz.dk/~holybull/poll.zip
Avatar billede martinbk Nybegynder
19. april 2003 - 20:32 #18
mener bare det ville gørre det nemmere for dig at give mig idër hvis du har min kode at gå ud fra
Avatar billede erikjacobsen Ekspert
19. april 2003 - 20:36 #19
Joh, men jeg kan jo ikke se hvilke værdier der kommer med over.
Du får 5 minutter ;)
Avatar billede martinbk Nybegynder
19. april 2003 - 20:44 #20
well jeg har prøvet at sætte en echo "$_POST[do_vote] , $_POST[pid] , $_POST[vid]"; ind i toppen af index.php det gav ingenting
Avatar billede erikjacobsen Ekspert
19. april 2003 - 20:45 #21
Ok - jeg bad om de udskrifter for mere en 1½ time siden. Jeg
har andet at bruge min tid til. Hyg.
Avatar billede martinbk Nybegynder
19. april 2003 - 20:46 #22
undskyld min fejl nu får jeg dette output på den echo sætning , 1 , 3, hvilket jo må betyde det er $_POST[do_vote] den er gal med?
Avatar billede erikjacobsen Ekspert
19. april 2003 - 20:46 #23
Det gør det da. Der står

  , 1 , 2

så din ...do_vote er tom ... Tænk lige over hvorfor mon. Og tænk på vi
kunne have været her for 1½ time siden. Suk.
Avatar billede erikjacobsen Ekspert
19. april 2003 - 20:48 #24
Nå, jeg gider ikke. Jeg hopper ud af spørgsmålet. Der er
grænser for hvor meget tid jeg gider spilde til ingen
verdens nytte.
Avatar billede martinbk Nybegynder
19. april 2003 - 20:49 #25
hmm hvad er grunden til at få den attitude, bare fordi man ikke lige er med på hvad du mener... men whatever
Avatar billede martinbk Nybegynder
19. april 2003 - 20:57 #26
lukker igen
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger IT-supporter til lokal IT Korsør

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Chef for SAP-forretningsspecialister

Capgemini Danmark A/S

Java Engineer