Avatar billede humlebien Novice
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>\";
    }
  ?>
Avatar billede pointer Nybegynder
10. maj 2001 - 10:34 #1
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>\";
    }
  ?>
Avatar billede humlebien Novice
10. maj 2001 - 10:40 #2
Øhh... det går ingen forskel
Avatar billede humlebien Novice
10. maj 2001 - 10:40 #3
går = gør
Avatar billede pointer Nybegynder
10. maj 2001 - 10:43 #4
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
Avatar billede humlebien Novice
10. maj 2001 - 10:47 #5
Den du kalder \'}  // END SCOPE #2\' hører da til while, der starter fem linier længere oppe!?
Avatar billede pointer Nybegynder
10. maj 2001 - 10:56 #6
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) ....



Avatar billede humlebien Novice
10. maj 2001 - 11:00 #7
Tak - nu kan jeg endelig komme videre.....
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