Avatar billede webweaver Praktikant
21. juni 2006 - 16:13 Der er 15 kommentarer og
1 løsning

if sætning funker ikke.

Goddag.

Jeg har en simpel if sætning og af en eller anden grund vil den ikke virke korrekt.

I kan se scriptet her;
http://www.webweaver.dk/aktivering_af_profil.phps

Som I kan se hvis $count == 1 så viser den noget, hvis ikke, viser den noget andet. Det vil sige, hvis $count == 1 så virker det fint, men hvis den ikke er, så kommer der bare en blank side. Og det forstår jeg ikke?

I kan se problemet her hvor $count ikke er 1;
http://www.webweaver.dk/community/aktivering_af_profil.php

Nogen som kan se fejlen?

På forhånd tak :)

Mvh. Lasse Jensen
Avatar billede iss Novice
21. juni 2006 - 16:19 #1
Jammen, hvis $count er 1 så vil den aldrig komme ned til din $count == 1...
Avatar billede webweaver Praktikant
21. juni 2006 - 16:51 #2
Hvad mener du?

Den er kun 1 hvis man har klikket på et link i en mail som man modtager.. Hvis man går direkte ind på stien fra browseren af, skal den komme med en anden besked. Det vil sige når den ikke er 1. Det er jo kun 1 når den finder noget.. Og variablerne er tomme hvis man går direkte ind på siden. Så kan den vel heller ikke finde noget i databasen, hvis de er tomme, og dermed må den være 0? Eller hvad?

Mvh. Lasse Jensen
Avatar billede iss Novice
21. juni 2006 - 17:02 #3
Sorry læste antal og count som værende det samme, men kan se at det må være din SQL kald der rammer en die, prøv en echo lige efter dine SQL kald, tror heller ikke den kommer frem.
Avatar billede webweaver Praktikant
21. juni 2006 - 17:54 #4
Min SQL fejler intet. Den virker fint, og jeg kan sagtens udskrive $count på skærmen.. Så jeg forstår det simpelthen ikke.
Avatar billede iss Novice
21. juni 2006 - 18:16 #5
Fakta er at dit script dør efter dine die... der kommer ikke mere efter det.
Avatar billede webweaver Praktikant
21. juni 2006 - 18:47 #6
Jo det gør der når $count == 1...

Hvorfor kan den så ikke vise det andet hvis den ikke er 1... Det må ske en fejl.. Når variablerne er tomme, fejler den på en eller anden måde i SQL. Men når jeg har or die på, hvorfor udskriver den så ikke en fejl?
Avatar billede nielle Nybegynder
21. juni 2006 - 18:50 #7
Prøv at rette:

$count = mysql_num_rows($foresp) or die(mysql_error());

- til:

$count = mysql_num_rows($foresp);
Avatar billede webweaver Praktikant
21. juni 2006 - 18:52 #8
Det gjorde sku forskellen, så nu virker det.

Men jeg forstår nu ikke hvorfor man ikke kan have en or die der?
Avatar billede hmortensen Nybegynder
21. juni 2006 - 18:54 #9
Hvis mysql_num_rows() returnerer 0, evalueres den til false, og vil så køre or die delen.
Avatar billede nielle Nybegynder
21. juni 2006 - 18:59 #10
Med en "or" forsøger PHP at fortolke mysql_num_rows($foresp) som en boolsk værdi. Når mysql_num_rows($foresp) er noget somhelst andet end 0 (f.eks. 1) fortolkes denne som "false". Der står så for alle praktiske formål det samme som:

$count = false or die(mysql_error());

- og derfor forsøger PHP at evaluere det som står efter "or" for at se om dette tilfældigvis skulle evalueres til "true". Ergo bliver die() kaldt.

Det er altså ikke kun ved $count=1 at scriptet fungere pænt (altså uden at kalde die()), men faktisk også hvis $count=2, 3, 4 eller -42.
Avatar billede iss Novice
21. juni 2006 - 18:59 #11
Der er ingen grund til at lave die på den... som efter at du ved at du får noget fra SQL der kan bruges til noget.
Avatar billede nielle Nybegynder
21. juni 2006 - 18:59 #12
Ahh, samme forklaring som hmortensen - blot med nogle flere ord på. :^)
Avatar billede nielle Nybegynder
21. juni 2006 - 19:01 #13
.. og jeg fik da i øvrigt lige byttet om på "true" og "false" i teksten ovenfor. Byt rundt, og så skulle det gerne give mere mening. :^|
Avatar billede webweaver Praktikant
21. juni 2006 - 19:02 #14
Ahh okay jeg ser.. :) Meget logisk faktisk. Tror jeg har haft det problem tidligere, kan huske noget om det. Måske skulle jeg skrive det ned denne gang så jeg husker det fremover ;-)

Tak for hjælpen :D

Mvh. Lasse Jensen
Avatar billede nielle Nybegynder
21. juni 2006 - 19:08 #15
Svar :^)
Avatar billede hmortensen Nybegynder
21. juni 2006 - 19:08 #16
Ja det er trist at PHP caster frem og tilbage som det selv lyster.

Som hovedregel, brug kun or die() på mysql_connect(), mysql_select_db() og mysql_query().
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