Avatar billede snigeren Nybegynder
04. oktober 2005 - 15:04 Der er 15 kommentarer og
1 løsning

Test om felter i form er udfyldte

På den side jeg er ved at lave er der en form man skal udfylde når man vil købe noget, de har følgende variabel navne:

navn
efternavn
adresse
postnr
by
email
telefon

Når man trykker send bestilling skal den så gerne teste om der står noget i alle felter og om der er @ i email, hvis noget af det mangler skal den skrive en fejl meddelelse... nogen der kan hjælpe mig med det?
Avatar billede jaw Nybegynder
04. oktober 2005 - 15:06 #1
Tomheds-check bør kunne løses således:

$felter = array("navn", "adresse", "efternavn");

foreach($felter as $str) {
  if(empty($_POST[$v])) {
    echo "Feltet ".$v." må ikke være tomt!<br />";
  }
}

Du kan selv tilføje de sidste feltnavne i arrayet.
Avatar billede jaw Nybegynder
04. oktober 2005 - 15:09 #2
Og en "avanceret" mail-check således:
if(!preg_match("/\b[A-Z0-9._%+-]+@[A-Z0-9._%-]+\.[A-Z0-9._%-]{2,4}\b/i", $_POST['mail'])) {
  echo "Mail-adressen er ikke godkendt.";
}

Hvis du kun vil teste for om der er @:
if(str_post($_POST['mail'], "@") === false) {
  echo "Mail-adressen skal indeholde @";
}
Avatar billede snigeren Nybegynder
04. oktober 2005 - 15:28 #3
hvor skal jeg skrive den sætning? Man indtaster data på bestil.php trykker på "send bestilling" og post.php sender så mailen...

Og skal man lave en stop kommando så den ikke eksekverer selve mail scriptet hvis ikke alle felter er udfyldt?
Avatar billede jaw Nybegynder
04. oktober 2005 - 15:31 #4
Ja, du skrev jo ikke hvordan du ville have det. En mulighed kan være:

$i = 0;
foreach($felter as $str) {
  if(empty($_POST[$v])) {
    echo "Feltet ".$v." må ikke være tomt!<br />";
    $i++;
  }
}
if(str_post($_POST['mail'], "@") === false) {
  echo "Mail-adressen skal indeholde @";
  $i++;
}
if($i > 0) {
  echo "Gå tilbage og ret fejlene og prøv så igen.";
  exit;
}
<<< og så resten med mail og hvad du ellers gør her >>>

Muligvis ikke den aller smukkeste løsning, men den bør bestemt virke...
Avatar billede snigeren Nybegynder
04. oktober 2005 - 15:40 #5
uhm,.. jeg får error nu =)
Fatal error: Call to undefined function: str_post() in /home/virtual/jernbanemaerker.dk/public_html/post.php on line 47
Avatar billede snigeren Nybegynder
04. oktober 2005 - 15:40 #6
jeg gik ud fra at følgende linie stadig skulle være til stede:
$felter = array("navn", "efternavn", "adresse", "postnr", "by", "email", "telefon");
Avatar billede jaw Nybegynder
04. oktober 2005 - 15:41 #7
Korrekt, det skulle den. Og funktionen hedder ikke str_post men kun str_pos :)
Avatar billede snigeren Nybegynder
04. oktober 2005 - 15:42 #8
og det hele skal være pakket ind i <?php ?> ikke sandt?
Avatar billede snigeren Nybegynder
04. oktober 2005 - 15:42 #9
hehe ok
Avatar billede jaw Nybegynder
04. oktober 2005 - 15:43 #10
Korrekt igen.
Avatar billede snigeren Nybegynder
04. oktober 2005 - 15:44 #11
uhm,.. med:

$felter = array("navn", "efternavn", "adresse", "postnr", "by", "email", "telefon");
$i = 0;
foreach($felter as $str) {
  if(empty($_POST[$v])) {
    echo "Feltet ".$v." må ikke være tomt!<br />";
    $i++;
  }
}
if(str_pos($_POST['email'], "@") === false) {
  echo "Mail-adressen skal indeholde @";
  $i++;
}
if($i > 0) {
  echo "Gå tilbage og ret fejlene og prøv så igen.";
  exit;
}

får jeg stadig fejl og det er kun ét af felterne her der ikke er noget i:
Feltet må ikke være tomt!
Feltet må ikke være tomt!
Feltet må ikke være tomt!
Feltet må ikke være tomt!
Feltet må ikke være tomt!
Feltet må ikke være tomt!
Feltet må ikke være tomt!

Fatal error: Call to undefined function: str_pos() in /home/virtual/jernbanemaerker.dk/public_html/post.php on line 47
Avatar billede jaw Nybegynder
04. oktober 2005 - 15:47 #12
Argh, gamle vaner. Jeg plejer at kalde den $v men kaldte den her $str.

  if(empty($_POST[$v])) {
ændres til:
  if(empty($_POST[$str])) {

og
  echo "Feltet ".$v." må ikke være tomt!<br />";
til:
echo "Feltet ".$str." må ikke være tomt!<br />";

Den med error'en forstår jeg ikke, for den hedder altså str_pos ( www.php.net/str_pos ). Måske den forsvinder når du retter ovenstående fejl?!
Avatar billede snigeren Nybegynder
04. oktober 2005 - 16:18 #13
ok,.. jeg forstod heller ikke rigtig det med de forskellige variabler =)
nu finder den da ud af hvilke felter der er udfyldt,.. men fejlen er der stadig,..

Skal man ikke definere str_pos før man bruger den i if sætningen?
Avatar billede jaw Nybegynder
04. oktober 2005 - 17:24 #14
For pokker da, den hedder jo også strpos() :)
Avatar billede snigeren Nybegynder
05. oktober 2005 - 00:47 #15
sweet nu virker det... har ikke lige været hjemme siden kl 16:30... Men tak for hjælpen jaw, smider du ikke lige et svar =)

Nu mangler jeg bare at få scriptet smidt ind i noget design så der ikke kommer hvid skærm og sort skrift =)
Avatar billede jaw Nybegynder
05. oktober 2005 - 16:35 #16
Selv tak da :)
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