Hvordan undgås "grim" fejlmeddelelse?

greenspun.com : LUSENET : WebdesignII : One Thread

Hvordan undgår jeg (i øvelse 8), at brugeren får en grim fejlmeddelelse, hvis han taster en titel ind, der i forvejen er brugt?

Udover tests af formvariabler ser min fil sådan ud: set db [ns_db gethandle] ns_db dml $db "insert into projekter (titel, tekst, navn, email, password) values ('$QQtitel', '$QQtekst', '$QQnavn', '$QQemail', '$QQpassword')"

if { catch {set titel [database_to_tcl_string $db $query] } errmsg] } { ns_return 200 text/html [home_page "Fejl i titel" "Den titel, du har valgt er allerede brugt. Gå tilbage og skriv en ny titel."]

} else { ns_returnredirect "http://hug.it-c.dk:8215/oevelse8/redirect1.tcl"

Er det mht. catch det går galt??

Mvh. Margit

-- Margit Perlt Jensen (mpj@it-c.dk), October 30, 2001

Answers

Response to Hvordan undgås "grim" fejlmeddelelse?

Du mangler en catch omkring den dml hvor du udfører insert-kommandoen - det er jo den der fejler.

Det er godt, at du anvender QQ-variablene.

-- Niels Hallenberg (nh@itu.dk), October 30, 2001.


Response to Hvordan undgås "grim" fejlmeddelelse?

Det forstår jeg ikke helt meningen med... Kan du forklare lidt nærmere? Er det min catch, der står forkert eller skal der være to?

Tak :-)

Mvh. Margit

-- Margit Perlt Jensen (mpj@it-c.dk), October 30, 2001.


Response to Hvordan undgås "grim" fejlmeddelelse?

Din catch er sat omkring en select-sætning som henter en titel (uden at jeg kan verificere dette da variablen query ikke er nævnt i det du har skrevet). Din catch har derfor ikke virkning på din insert. Hvis din insert fejler, så er det sikkert fordi der allerede findes en titel. Derfor er en løsning at anvende endnu en catch omkring din insert-kommando. Den catch kan da returnere en fejlside omkring at titlen allerede er brugt. Jeg formoder da at din select der følger efter da ikke er nødvendig mere, men det er svært at afgøre når jeg ikke kender hele programmet.

Jeg håber det hjælper lidt...

-- Niels Hallenberg (nh@it-c.dk), October 30, 2001.


Moderation questions? read the FAQ