Avatar billede stois Nybegynder
04. juni 2004 - 10:54 Der er 10 kommentarer og
1 løsning

Switch case med object eller array

Hejsa,

Jeg har en side som jeg sidder og sysler med, men nu er jeg nået til noget vi alle nok kommer forbi... at some point or other.

På siden kan man oprette en ny bruger, under admin sektionen selvfølgelig. Det skal ikke være muligt at oprette en bruger med samme brugernavn, som en anden tidligere oprettet bruger, og der bliver stillet krav til at visse felter skal være udfyldt, og sådan noget standard tingel-tangel.

MEN de krav der bliver stillet, vil jeg jo gerne have tjekket før, der bliver sat noget ind databasen (MySQL), og de skal ikke tjekkes alle sammen i en stor if-sætning, fordi så får admin en besked tilbage ala "Der er noget galt", og jeg vil gerne have at det er lidt mere udspecificeret end det.

SÅ jeg har prøvet med denne form: \/

>--------[PHP]-----------<
if($name == "" || $surname == "") {
print "Fejl: Der mangler navn eller efternavn";
} else {
if($login == "" || $pass == "") {
  print "Fejl: Der mangler brugernavn eller kodeord";
} else {
  MySQL = Prop ting i databasen
}
}
>-----[SLUT]-----<

DET er lidt kluntet, jeg kunne egentligt godt tænke mig at det blev tjekket med en Switch-Case-sætning istedet for det der IF-Helvede, som jeg viste herover..

MEN Switch-Case-sætninger kan åbenbart kun "vurdere" på en variabel af gangen, så før jeg bruger den sætning propper jeg lige alle mine ting ind i EN variabel... fint nok men HVORDAN???!?!?!?!

Jeg har prøvet med et array, og det er måske fint nok, men hvordan siger jeg så at PHP skal læse lige en bestemt "del" af array'et?

Jeg prøvede at lave det til objecter istedet for, men jeg ved ikek hvordan man gør det....

Det er så meget lettere med MySQL_Fetch_Object.. Det kan man bare sige:

$Databasen_hentning->name

også får man hvad der står på den række i databasen...

>----[Spørgsmålet]-----<
Hvordan henter man specifikke "ting"/"dele" af et array ud igen?

Eller

Hvordan definere man en variabel til at indholde objekter?
>-----[SLUT]------<
Avatar billede erikjacobsen Ekspert
04. juni 2004 - 11:06 #1
Der er ingen grund til switch-sætningen. Dine if-sætninger er den nemmeste og mest direkte løsning.
Avatar billede avminarm Juniormester
04. juni 2004 - 11:06 #2
det virker alt forbesværligt at proppe det hele ind i en variabel bare for at få det ind i en switch, lige i dit tilfælde vil det være langt at foretrække at benytte if/else


men hvis du absolut vil, kan du benytte et array:

$arr[0] = navn
$arr[1] = efternavn
$arr[2] = password
$arr[3] = login

så har du arrayet $arr og værdierne kan hentes enkeltvis ved at angive placeringen f.eks password er $arr[2]
Avatar billede stois Nybegynder
04. juni 2004 - 11:16 #3
Okay... så min første løsning, var den letteste.... selvfølgelig, fordi nu har jeg lige brugt evigheder på en anden løsning =)... typsik mig...
Avatar billede avminarm Juniormester
04. juni 2004 - 11:21 #4
ja, men mon ikke du alligevel har lært lidt undervejs - det er nok ikke helt spildte anstrengelser ;o)
Avatar billede stois Nybegynder
04. juni 2004 - 11:21 #5
Kan man definere det som objecter? Det kunnejeg godt tænke mig at vide altså om det er muligt at lave en sætning alá :

>-----------[Test]-----------<
$Evaluate_obj = objects($name, $surname, $login, $pass)

// også kan jeg hente det frem igen ved at skrive

Switch ($Evaluate_obj) {
case ->name == ""
  print "der mangler navn";
  break;
case ->surname == ""
  print "Der mangler efternavn";
  break;
default
  // Prop ting i databsen
}

>-------[SLUT]-----<
Avatar billede stois Nybegynder
04. juni 2004 - 11:22 #6
Jeg har selvfølgelig lært lidt =) ... men det er bare ærgeligt at lave så meget arbejde for at finde en anden løsning, og så viser det sig at være den første løsning der er den bedste...
Avatar billede stois Nybegynder
04. juni 2004 - 11:25 #7
lige så snart at jeg har fået en form fo svar på mit andet spørgsmål acceptere jeg dit svar "avminarm" =)
Avatar billede stois Nybegynder
04. juni 2004 - 11:28 #8
nahh du får bare dine point, det ser ikke ud til at folk vil svare =)
Avatar billede avminarm Juniormester
04. juni 2004 - 12:48 #9
frokost ;o) - jeg ved det faktisk ikke, men kan umiddelbart se at det er overkill så det vil noget!!
Avatar billede stois Nybegynder
04. juni 2004 - 13:16 #10
hmmm. okay =)
Avatar billede Slettet bruger
13. juni 2004 - 12:46 #11
Du kunne gøre noget i denne stil:

// Krævede felter
$required['name']='Der mangler navn.';
$required['surname']='Der mangler efternavn';

$error='';

foreach($required as $key => $value){
  if(empty($_POST[$key])){
    $error .= $value;
  }
}

if(empty($error)){
  // Skriv til database
} else
  echo $error;
}
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