Avatar billede wampiro-uha Nybegynder
04. februar 2005 - 22:58 Der er 12 kommentarer og
1 løsning

Tjek om et af tre felter er udfyldt, ingen point desværre!

Jeg har desværre ingen hele point!

Jeg vil have en sætning til at blive false hvis bare et af tre felter er udfyldt.
Har prævet med nedenstående, men virker ikke rigtig:

elseif (!$_POST['1'] || !$_POST['2'] || !$_POST['3']) {

Den sætning skal altså blive false, hvis bare der står noget i et af felterne!
Avatar billede elskermad.dk Nybegynder
04. februar 2005 - 23:15 #1
if (!empty($_POST['1']) || !empty($_POST['2']) || !empty($_POST['3'])) {
  return false;
}
Avatar billede erikjacobsen Ekspert
04. februar 2005 - 23:21 #2
Nu skal man altså ikke bruge funktionen empty til at teste om et felt er tomt.
Navnet er misvisende, og det er meget svært at finde en fornuftig anvendelse for
empty. Et robust PHP-program bør næppe indeholde en anvendelse af denne funktion.

Eksempel:

<?
  $v1="";
  $v2="0";
  if (empty($v1)) {
    print "Den tomme streng er empty\n";
  }
  if (empty($v2)) {
    print "Streng med 0 er empty\n";
  }

?>

vil udskrive i begge print-sætninger. Altså: et felt hvor brugeren indtaster
cifferet 0 vil blive opfattet som tomt. Det er næppe hvad spørgeren ønsker.

Prøv igen ;)
Avatar billede wampiro-uha Nybegynder
04. februar 2005 - 23:31 #3
Er der nogen som har et forslag til en løsning?
Avatar billede wampiro-uha Nybegynder
04. februar 2005 - 23:46 #4
Nogen der kan bekræfte dette:

  } elseif (!($_POST['1'] || $_POST['2'] || $_POST['3'])) {
Avatar billede erikjacobsen Ekspert
04. februar 2005 - 23:55 #5
Det er bestemt ikke korrekt. Men jeg forstår blot ikke dit spørgsmål om hvad
der skal være opfyldt i din betingelse. Hvis den første spørger havde gennemskuet,
fik han en chance for at svare.

Hvad skal der gælde for at dit script kommer ind i elseif-delen?
Avatar billede wampiro-uha Nybegynder
04. februar 2005 - 23:59 #6
jeg har tre tekstbokse (1, 2 og 3). Jeg vil nu tjekke, hvorvidt bare én af disse er udfyldt.
Det er altså ligemeget om én eller flere er udfyldt, blot mindst ét af felterne er fyldt ud.

Hvis nu ovenstående er opfyldt, skal if-sætningen melde false.

Hvis den bliver true, spytter jeg nemlig en melding ud, med at mindst et af de tre felter skal udfyldes.
Avatar billede erikjacobsen Ekspert
05. februar 2005 - 00:01 #7
så det du vil have er

} elseif (ingen felter er udfyldt) {
  print "Du skal udfylde mindst eet af de tre felter";
}

?? Hvordan hænger det forøvrigt sammen med det der står før din elseif?
Avatar billede wampiro-uha Nybegynder
05. februar 2005 - 00:03 #8
Jeg har en form som jeg laver en masse tjek på.
Disse tjek kommer efter hinanden i if-sætninger.

Hvis nu der ingen fejl bliver fanget, altså alle if-sætningerne melder false, når jeg til:

} else {

og så ordner jeg det som skal ordnes, da der ingen fejl blev fundet.
Avatar billede erikjacobsen Ekspert
05. februar 2005 - 00:05 #9
så det du vil have er

} elseif (ingen felter er udfyldt) {
  print "Du skal udfylde mindst eet af de tre felter";
}

??
Avatar billede wampiro-uha Nybegynder
05. februar 2005 - 00:07 #10
Jeps :-)
Avatar billede wampiro-uha Nybegynder
05. februar 2005 - 00:07 #11
synes det virker med:
} elseif (!($_POST['1'] || $_POST['2'] || $_POST['3'])) {

men hva' foreslår du? vil gerne være helt sikker på det virker 100% ;-)
Avatar billede erikjacobsen Ekspert
05. februar 2005 - 00:10 #12
Prøv at skrive et 0 i et af felterne. Så bør den ikke virke.

Du skal

  } elseif ($_POST['1']=="" && $_POST['2']=="" && $_POST['3']=="") {

Faktisk meget simpelt ;)
Avatar billede wampiro-uha Nybegynder
05. februar 2005 - 00:19 #13
Ja, det er jo rigtig :-)
Takker!
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