Avatar billede anco Nybegynder
26. maj 2003 - 21:52 Der er 7 kommentarer og
2 løsninger

Hvordan får man php til at arbejde videre med en side??

Jeg har et lille problem med noget php kode, hvor jeg vil have sat en ny bruger ind i en mysql database, men hvis jeg komme til at taste et navn der findes i forvejen laver Mysql fejl, hvilket i sig selv er ret godt. Problemet ligger i at når mysql laver fejlt laver resten af siden også fejl, og man får derfor kun en halv side frem.
Hvordan kan man få php til at arbejde videre med siden selv om mySQL laver fejl???

Andreas
Avatar billede snuseren.dk Nybegynder
26. maj 2003 - 22:03 #1
Du skal nok regne med at skulle lave et script, som f.eks. dette: (kun teroretisk)

if (brugerinput == "databaseoutput") {
echo "Der skete en fejl!";
}

osv. osv.

Håber du finder ud af det!

MVH Anders
Avatar billede jakoba Nybegynder
26. maj 2003 - 22:06 #2
du kan teste om der skete en fejl, og handle derefter.
mysql_xxxxx funktionerne returnere boolean false når noget gik galt så du kan teste:

$gikdet = mysql_query( "INSERT ... " );
if ( $gikdet === false ) {
    echo "jeg kunne ikke oprette den bruger";
}

bemærk at der er 3 lighedstegn i sammenligningen. det er kun boolean false der gælder.

mvh JakobA
Avatar billede ohmish Nybegynder
26. maj 2003 - 23:01 #3
eller:

$gem = @mysql_query("INSERT INTO medlemmer (navn, adresse) VALUES ('$navn', '$adresse' ");
if (!$gem) { echo "fejl ved oprettelse af bruger"; }

Bemærk: @ ved forespørgslen (undertrykker fejl). hvis $gem mislykkedes returneres ingenting/false.
Avatar billede jakoba Nybegynder
26. maj 2003 - 23:19 #4
ahmish >> kald til mysql_xxxxx funktionerne giver kun php-fejl hvis parametrene ikke kan parses korrekt af php, så dit @ er overflødigt.

en eventuel mysql-fejl (såsom at prøve at oprette en ny række med en allerede eksisterende primærnøgle) sker i mysql-serveren og returneres controlleret som returværdien false.

mvh JakobA
Avatar billede ohmish Nybegynder
26. maj 2003 - 23:50 #5
jakoba> hmm..ja ok. men "if (!$hent)" er nok. altså.. hvis det ikke gik er $hent = ingenting. dvs. samme resultat som din false-sætning.
Avatar billede jakoba Nybegynder
27. maj 2003 - 00:03 #6
Ups. Ja det har du vist ret i

Jeg havde en ide om at mysql_query nogen gange returnerede antallet af rækker der var blevet ændret, men det ser ikke ud til at passe.
http://dk.php.net/manual/en/function.mysql-query.php

mvh JakobA
Avatar billede anco Nybegynder
27. maj 2003 - 10:10 #7
Vil det så sige at det der med false ikke virker alligevel???
Avatar billede jakoba Nybegynder
27. maj 2003 - 13:49 #8
Jo det virker, det er blot 9 bogstaver mere end du behøver at skrive.
Avatar billede anco Nybegynder
28. maj 2003 - 07:58 #9
Det er sgu så i orden.
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