Avatar billede webweaver Praktikant
10. juli 2005 - 19:40 Der er 6 kommentarer og
1 løsning

Mysterisk fejl i script

Hejsa :)

Jeg har desværre et problem med det script jeg er ved at kode. Jeg kan ikke få det til at virke korrekt, og jeg kan ikke selv se hvorfor. Så håber I kan! Altså meningen er at den skal vise nogle links frem. Og hvis databasen er tom (Ingen links tilføjet til den endnu), så er det meningen at den skal skrive det! Det burde være ret simpelt at lave. Mit script det virker egentlig også fint nok, når databasen ikke er tom. Den viser links'ne korrekt, men lige så snart den er tom, hvor den så burde skrive det, så bliver der helt blankt i stedet. Så viser den slet intet PHP. Jeg kan som sagt ikke finde ud af hvorfor...

Mit script kan ses her:

http://pastebin.com/310692

Nogen som kan se fejlen? Mange tak for din hjælp! :D

Mvh. Lasse Jensen
Avatar billede jaw Nybegynder
10. juli 2005 - 19:45 #1
Prøv at udskrive din $tjek_count og se om den viser 0 når databasen er tom...
Avatar billede erikjacobsen Ekspert
10. juli 2005 - 19:47 #2
Ret
  $tjek_count = mysql_num_rows($foresp2) or die(mysql_error());
til
  $tjek_count = mysql_num_rows($foresp2);
Avatar billede webweaver Praktikant
10. juli 2005 - 19:51 #3
Uhh jamen mange tak :) Det virkede erikjacobsen. Hvordan kan det være det ikke er tilladt at have en or die der?
Avatar billede erikjacobsen Ekspert
10. juli 2005 - 20:33 #4
Længere forklaring

1) mysql_num_rows() afleverer et tal, der 0 eller større
2) en "or" i PHP er shortcircuited, dvs. regnes venstresiden ud til true, ignoreres høresiden. Udregnes venstresiden imidlertid til false, så vil højresiden også udregnes.
3) 0 fungerer som false, tal større end nul fungerer som true.
4a) Hvis der er rækker i forspørgslen er tallet på venstre side af dit "or" større end 0  og højresiden ignoreres
4b) Hvis der ikke er rækker i forespørgslen er tallet på venstre side af dit "or" 0, og højresiden udregnes. Derved udføres en die - måske (ikke) med en udskrift - og scriptet standser.

Du skal altid huske at teste for fejl ved en mysql_query, fx som du gør med en "die", omend man i professionel sammenhæng nok bør gøre noget andet, så en uskyldig bruger ikke får en kryptisk besked, og en hacker ikke får oplysninger, der kan mis-bruges til at bryde ind på din side.
Avatar billede webweaver Praktikant
10. juli 2005 - 22:44 #5
Tak for forklaringen :) Det hjalp! :D Hvis du kommer med et "svar", så kan du få dine point.
Avatar billede erikjacobsen Ekspert
10. juli 2005 - 22:46 #6
Jeg samler slet ikke på point, tak.
Avatar billede webweaver Praktikant
15. juli 2005 - 19:41 #7
Ok, så sender jeg dem bare tilbage hvor de kom fra ;)
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