10. maj 2001 - 10:32
Der er
6 kommentarer og 1 løsning
Problem med if
Hvorfor bliver else-delen ikke udført hvis $sql er tom?? <? if($email != \"\") { $select = \"select * from nyhed_abon where abon_email = \'$email\'\"; $sql = mysql_query($select); if($sql) { print \"<form name=afmeld action=afmeld_commit.php method=post>\"; print \"<tr><td>Du er tilmeldt følgende nyhedsbreve:</td></tr>\"; while($rs = mysql_fetch_array($sql)){ $select = \"select * from nyhed_kat where kat_id = $rs[abon_kat_id]\"; $sql2 = mysql_query($select); $rs2 = mysql_fetch_array($sql2); print \"<tr><td><input type=checkbox name=fjern[] value=$rs[abon_kat_id]> $rs2[kat_titel]</td></tr>\"; } print \"<tr><td align=center><input type=submit value=\'Afmeld valgte nyhedsbreve\'></td></tr>\"; print \"</form>\"; } else { print \"<form name=afmeld action=afmeld.php method=post>\"; print \"<tr><td>Der er ikke tilmeldt nogle nyhedsbreve til $email.</td></tr>\"; print \"<tr><td>Dette kan skyldes forkert indtastet emailadresse eller at nyhedsbrevet allerede er afmeldt.</td></tr>\"; print \"<tr><td>Hvis du har skrevet forkert, så prøv igen.</td></tr>\"; print \"<tr><td align=center><input type=text name=email></td></tr>\"; print \"<tr><td align=center><input type=submit value=\'Vis mine abonnementer\'></td></tr>\"; print \"</form>\"; } } else { print \"<form name=afmeld action=afmeld.php method=post>\"; print \"<tr><td>Indtast venligst den emailadresse, du modtager nyhedsbreve på.</td></tr>\"; print \"<tr><td align=center><input type=text name=email></td></tr>\"; print \"<tr><td align=center><input type=submit value=\'Vis mine abonnementer\'></td></tr>\"; print \"</form>\"; } ?>
Annonceindlæg fra Infor
Fordi den er out of scope. <? if($email != \"\") { /// IF #1 $select = \"select * from nyhed_abon where abon_email = \'$email\'\"; $sql = mysql_query($select); if($sql) { /// IF #2 print \"<form name=afmeld action=afmeld_commit.php method=post>\"; print \"<tr><td>Du er tilmeldt følgende nyhedsbreve:</td></tr>\"; while($rs = mysql_fetch_array($sql)){ $select = \"select * from nyhed_kat where kat_id = $rs[abon_kat_id]\"; $sql2 = mysql_query($select); $rs2 = mysql_fetch_array($sql2); print \"<tr><td><input type=checkbox name=fjern[] value=$rs[abon_kat_id]> $rs2[kat_titel]</td></tr>\"; } // END SCOPE #2 print \"<tr><td align=center><input type=submit value=\'Afmeld valgte nyhedsbreve\'></td></tr>\"; print \"</form>\"; } else { /// ELSE FOR IF #1 print \"<form name=afmeld action=afmeld.php method=post>\"; print \"<tr><td>Der er ikke tilmeldt nogle nyhedsbreve til $email.</td></tr>\"; print \"<tr><td>Dette kan skyldes forkert indtastet emailadresse eller at nyhedsbrevet allerede er afmeldt.</td></tr>\"; print \"<tr><td>Hvis du har skrevet forkert, så prøv igen.</td></tr>\"; print \"<tr><td align=center><input type=text name=email></td></tr>\"; print \"<tr><td align=center><input type=submit value=\'Vis mine abonnementer\'></td></tr>\"; print \"</form>\"; } } else { print \"<form name=afmeld action=afmeld.php method=post>\"; print \"<tr><td>Indtast venligst den emailadresse, du modtager nyhedsbreve på.</td></tr>\"; print \"<tr><td align=center><input type=text name=email></td></tr>\"; print \"<tr><td align=center><input type=submit value=\'Vis mine abonnementer\'></td></tr>\"; print \"</form>\"; } ?>
Jeg har ikke ændret i din kode, kun kommenteret dine scopes med ///. Dit problem ligger her: } // END SCOPE #2 print \"<tr><td align=center><input type=submit value=\'Afmeld valgte nyhedsbreve\'></td></tr>\"; print \"</form>\"; } Fjern de to print linjer og dit else vil høre til din IF #2. else { /// ELSE FOR IF #1
Ahh sorry, lidt kodeblindhed her fra morgenstunden... Problemet ligger her: $sql = mysql_query($select); mysql_query returnerer true eller false afhængigt af om din forespørgsel lykkedes. En forespørgsel der returnerer 0 rækker vil returnere true. Så du vil altid få true. Skriv om til noget i stil med: $result = mysql_query($select); $sql= mysql_num_rows($result); if ($sql) ....