Gå til innhold

Hjelp til form. Gi feilmelding ved 0-verdiar osv


Anbefalte innlegg

Hei.

 

Driver å lager eit lite skjema for påmelding til eit arrangement. Eg jobbar ut i fra eit anna skript, og i samanhengen at eg skal bruke "checkboksar", så kom eg bort i denne:

 

foreach($_POST['check'] as $value) {
 $check_msg .= "Ønsker: $value\n";
}

 

Som peikar tilbake på denne:

 

Eg melder meg på "X" <input type="checkbox" name="check[]" value="Deltakelse">

 

I $body har eg då berre:

 

$check_msg

 

Korleis fungerar dette, og korleis kan eg stoppe meldinga fra å bli sendt når boksen ikkje er kryssa av?

 

Kanskje litt rotete forklart...

 

:)

Endret av huf
Lenke til kommentar
Videoannonse
Annonse

Eg skreiv det om litt. (Kan komme tilbake til mitt forrige spørsmål.)

 

Sjå kode lenger ned...

 

Her vil eg legge til ein liten funksjon som sjekkar at alle variablane har innhold. Om dei ikkje har det, skal eg få feilmeldinga (else).

 

Nokon?

Endret av huf
Lenke til kommentar

Kan vel kanskje berre gjere slik?

 

if(empty($etternn)) {
 echo "Du må fylle inn etternavnet ditt!";

 

EDIT: Nei, det var ingen suksess. :)

EDIT2: Jo, det funka med if(empty, men den sender likevel. Den blir ikkje stoppa av else. Nokon som ser kva det kan vere?

 

Har dette no:

 

<?php
if(isset($_POST['submit'])) {

$to = "[email protected]"; 
$subject = "Påmelding til x";
$etternn = $_POST['etternn'];
$fornn = $_POST['fornn'];
$adresse = $_POST['adresse'];
$postadresse = $_POST['postadresse'];
$epost = $_POST['epost'];
$fodaar = $_POST['fodaar'];
$telefon = $_POST['telefon'];
$yrke = $_POST['yrke'];
$utdanning = $_POST['utdanning'];
$dropdown = $_POST['drop_down'];

if(empty($etternn)) {
 echo "Fyll ut felta";
}
foreach($_POST['check'] as $value) {
 $check_msg .= "Ønsker $value\n";
}



$body = "

Etternavn: $etternn\n
Fornavn: $fornn\n
Adresse: $adresse\n
Postadresse: $postadresse\n
Epost: $epost\n
Fødselsår: $fodaar\n
Telefon: $telefon\n\n
Yrke: $yrke\n
Utdanning: $utdanning\n
Ønsker skyss fra: $dropdown\n
$check_msg\n
    
";


echo "Påmeldinga er sendt!";
mail($to, $subject, $body);

}	else {
echo "Meldinga er ikkje sendt.";
}
?>

Endret av huf
Lenke til kommentar

Sånn da?

 

Klikk for å se/fjerne innholdet nedenfor

PHP

<?php

if(isset($_POST['submit'])) {

 

$to = "[email protected]"; 

$subject = "Påmelding til x";

 

if(isset($_POST['etternn']))

$etternn = $_POST['etternn']; else $feil = 1;

if(isset($_POST['fornn']))

$fornn = $_POST['fornn']; else $feil = 1;

if(isset($_POST['adresse']))

$adresse = $_POST['adresse']; else $feil = 1;

if(isset($_POST['postadresse']))

$postadresse = $_POST['postadresse']; else $feil = 1;

if(isset($_POST['epost']))

$epost = $_POST['epost']; else $feil = 1;

if(isset($_POST['fodaar']))

$fodaar = $_POST['fodaar']; else $feil = 1;

if(isset($_POST['telefon']))

$telefon = $_POST['telefon']; else $feil = 1;

if(isset($_POST['yrke']))

$yrke = $_POST['yrke']; else $feil = 1;

if(isset($_POST['utdanning']))

$utdanning = $_POST['utdanning']; else $feil = 1;

if(isset($_POST['drop_down']))

$dropdown = $_POST['drop_down']; else $feil = 1;

 

 

if(isset($feil)) {

 echo "Fyll ut felta";

}

else {

foreach($_POST['check'] as $value) {

 $check_msg .= "Ønsker $value\n";

}

 

 

 

$body = "

 

Etternavn: $etternn\n

Fornavn: $fornn\n

Adresse: $adresse\n

Postadresse: $postadresse\n

Epost: $epost\n

Fødselsår: $fodaar\n

Telefon: $telefon\n\n

Yrke: $yrke\n

Utdanning: $utdanning\n

Ønsker skyss fra: $dropdown\n

$check_msg\n

    

";

 

 

echo "Påmeldinga er sendt!";

mail($to, $subject, $body);

 

}

}

else

echo "Meldinga er ikkje sendt.";

?>

 

edit: hva er det egentlig du vil sjekke om er der? Er det den brukerinfoen? og hva skal

foreach($_POST['check'] as $value) {

 $check_msg .= "Ønsker $value\n";

}

gjøre? :)

Endret av Stale2k
Lenke til kommentar
Sånn da?

 

Klikk for å se/fjerne innholdet nedenfor

PHP

<?php

if(isset($_POST['submit'])) {

 

$to "[email protected]"

$subject "Påmelding til x";

 

if(isset($_POST['etternn']))

$etternn $_POST['etternn']; else $feil 1;

if(isset($_POST['fornn']))

$fornn $_POST['fornn']; else $feil 1;

if(isset($_POST['adresse']))

$adresse $_POST['adresse']; else $feil 1;

if(isset($_POST['postadresse']))

$postadresse $_POST['postadresse']; else $feil 1;

if(isset($_POST['epost']))

$epost $_POST['epost']; else $feil 1;

if(isset($_POST['fodaar']))

$fodaar $_POST['fodaar']; else $feil 1;

if(isset($_POST['telefon']))

$telefon $_POST['telefon']; else $feil 1;

if(isset($_POST['yrke']))

$yrke $_POST['yrke']; else $feil 1;

if(isset($_POST['utdanning']))

$utdanning $_POST['utdanning']; else $feil 1;

if(isset($_POST['drop_down']))

$dropdown $_POST['drop_down']; else $feil 1;

 

 

if(isset($feil)) {

 echo "Fyll ut felta";

}

else {

foreach($_POST['check'] as $value) {

 $check_msg .= "Ønsker $value\n";

}

 

 

 

$body "

 

Etternavn: $etternn\n

Fornavn: $fornn\n

Adresse: $adresse\n

Postadresse: $postadresse\n

Epost: $epost\n

Fødselsår: $fodaar\n

Telefon: $telefon\n\n

Yrke: $yrke\n

Utdanning: $utdanning\n

Ønsker skyss fra: $dropdown\n

$check_msg\n

 

";

 

 

echo "Påmeldinga er sendt!";

mail($to$subject$body);

 

}

}

else

echo "Meldinga er ikkje sendt.";

?>

7331755[/snapback]

 

Nei, sender likevel, og eg får en error på foreach

 

Warning: Invalid argument supplied for foreach() on line 33

Lenke til kommentar
Sånn da?

 

Klikk for å se/fjerne innholdet nedenfor

PHP

<?php

if(isset($_POST['submit'])) {

 

$to "[email protected]"

$subject "Påmelding til x";

 

if(isset($_POST['etternn']))

$etternn $_POST['etternn']; else $feil 1;

if(isset($_POST['fornn']))

$fornn $_POST['fornn']; else $feil 1;

if(isset($_POST['adresse']))

$adresse $_POST['adresse']; else $feil 1;

if(isset($_POST['postadresse']))

$postadresse $_POST['postadresse']; else $feil 1;

if(isset($_POST['epost']))

$epost $_POST['epost']; else $feil 1;

if(isset($_POST['fodaar']))

$fodaar $_POST['fodaar']; else $feil 1;

if(isset($_POST['telefon']))

$telefon $_POST['telefon']; else $feil 1;

if(isset($_POST['yrke']))

$yrke $_POST['yrke']; else $feil 1;

if(isset($_POST['utdanning']))

$utdanning $_POST['utdanning']; else $feil 1;

if(isset($_POST['drop_down']))

$dropdown $_POST['drop_down']; else $feil 1;

 

 

if(isset($feil)) {

 echo "Fyll ut felta";

}

else {

foreach($_POST['check'] as $value) {

 $check_msg .= "Ønsker $value\n";

}

 

 

 

$body "

 

Etternavn: $etternn\n

Fornavn: $fornn\n

Adresse: $adresse\n

Postadresse: $postadresse\n

Epost: $epost\n

Fødselsår: $fodaar\n

Telefon: $telefon\n\n

Yrke: $yrke\n

Utdanning: $utdanning\n

Ønsker skyss fra: $dropdown\n

$check_msg\n

 

";

 

 

echo "Påmeldinga er sendt!";

mail($to$subject$body);

 

}

}

else

echo "Meldinga er ikkje sendt.";

?>

 

edit: hva er det egentlig du vil sjekke om er der? Er det den brukerinfoen? og hva skal

foreach($_POST['check'] as $value) {

$check_msg .= "Ønsker $value\n";

}

gjøre? :)

7331755[/snapback]

 

Eg vil enkelt å greit sjekke om alle felta er fylt ut.

 

Bruk av foreach-kommandoen er eg ikkje kjent med, så det har eg henta frå ein guide. Grunnen til at eg brukte den, var vel for å sjekke om checkboksa var aktivert eller ikkje, å gi tilbakemelding om det.

 

:)

Lenke til kommentar

Klikk for å se/fjerne innholdet nedenfor

PHP

<?php

if(isset($_POST['submit'])) {

 

$to = "[email protected]"; 

$subject = "Påmelding til x";

 

if(isset($_POST['etternn']))

$etternn = $_POST['etternn']; else $feil = 1;

if(isset($_POST['fornn']))

$fornn = $_POST['fornn']; else $feil = 1;

if(isset($_POST['adresse']))

$adresse = $_POST['adresse']; else $feil = 1;

if(isset($_POST['postadresse']))

$postadresse = $_POST['postadresse']; else $feil = 1;

if(isset($_POST['epost']))

$epost = $_POST['epost']; else $feil = 1;

if(isset($_POST['fodaar']))

$fodaar = $_POST['fodaar']; else $feil = 1;

if(isset($_POST['telefon']))

$telefon = $_POST['telefon']; else $feil = 1;

if(isset($_POST['yrke']))

$yrke = $_POST['yrke']; else $feil = 1;

if(isset($_POST['utdanning']))

$utdanning = $_POST['utdanning']; else $feil = 1;

if(isset($_POST['drop_down']))

$dropdown = $_POST['drop_down']; else $feil = 1;

if(isset($_POST['check']))

$checkmsg = $_POST['check'];

 

 

if(isset($feil)) {

 echo "Fyll ut felta";

}

else {

echo "Ditt ønske: $checkmsg";

 

$body = "

 

Etternavn: $etternn\n

Fornavn: $fornn\n

Adresse: $adresse\n

Postadresse: $postadresse\n

Epost: $epost\n

Fødselsår: $fodaar\n

Telefon: $telefon\n\n

Yrke: $yrke\n

Utdanning: $utdanning\n

Ønsker skyss fra: $dropdown\n

$check_msg\n

    

";

 

 

echo "Påmeldinga er sendt!";

mail($to, $subject, $body);

 

}

}

else

echo "Meldinga er ikkje sendt.";

?>

 

koden virker nå. Tok vekk foreach og sjekket om den var satt via isset() isteden.

 

edit: eller var det en custom error msg du ville ha hvis de ikke hadde krysset av?

 

edit2. Da har jeg tatt vekk at du får error msg hvis du ikke har sjekket av checkboksen.

Endret av Stale2k
Lenke til kommentar
Klikk for å se/fjerne innholdet nedenfor

PHP

<?php

if(isset($_POST['submit'])) {

 

$to "[email protected]"

$subject "Påmelding til x";

 

if(isset($_POST['etternn']))

$etternn $_POST['etternn']; else $feil 1;

if(isset($_POST['fornn']))

$fornn $_POST['fornn']; else $feil 1;

if(isset($_POST['adresse']))

$adresse $_POST['adresse']; else $feil 1;

if(isset($_POST['postadresse']))

$postadresse $_POST['postadresse']; else $feil 1;

if(isset($_POST['epost']))

$epost $_POST['epost']; else $feil 1;

if(isset($_POST['fodaar']))

$fodaar $_POST['fodaar']; else $feil 1;

if(isset($_POST['telefon']))

$telefon $_POST['telefon']; else $feil 1;

if(isset($_POST['yrke']))

$yrke $_POST['yrke']; else $feil 1;

if(isset($_POST['utdanning']))

$utdanning $_POST['utdanning']; else $feil 1;

if(isset($_POST['drop_down']))

$dropdown $_POST['drop_down']; else $feil 1;

if(isset($_POST['check']))

$check $_POST['check']; else $feil 1;

 

 

if(isset($feil)) {

 echo "Fyll ut felta";

}

else {

 

$body "

 

Etternavn: $etternn\n

Fornavn: $fornn\n

Adresse: $adresse\n

Postadresse: $postadresse\n

Epost: $epost\n

Fødselsår: $fodaar\n

Telefon: $telefon\n\n

Yrke: $yrke\n

Utdanning: $utdanning\n

Ønsker skyss fra: $dropdown\n

$check_msg\n

 

";

 

 

echo "Påmeldinga er sendt!";

mail($to$subject$body);

 

}

}

else

echo "Meldinga er ikkje sendt.";

?>

 

koden virker nå. Tok vekk foreach og sjekket om den var satt via isset() isteden.

 

edit: eller var det en custom error msg du ville ha hvis de ikke hadde krysset av?

7331894[/snapback]

 

Tusen takk! :)

 

Tingen med checkboksa, er at det skal vere valgfritt. Ein kryssar berre av for den viss ein vil.

Ingen custom error-msg, nei.

Lenke til kommentar

Hmm. Den reviderte utgava der checkboksa ikkje må vere sjekka av, funka ikkje skikkeleg. Den sender mailen sjølv om textfelta er åpne, og eg får melding om at det er sendt.

 

:shrug:

 

EDIT: Forresten, som du ser, så skal "Yrke" og "Utdanning" også vere valgfrie boksar.

 

 

Takker for all hjelp til no.

Endret av huf
Lenke til kommentar

Klikk for å se/fjerne innholdet nedenfor

PHP

<?php

if(isset($_POST['submit'])) {

 

$to "[email protected]"

$subject "Påmelding til x";

 

if(isset($_POST['etternn']))

$etternn $_POST['etternn']; else $feil 1;

if(isset($_POST['fornn']))

$fornn $_POST['fornn']; else $feil 1;

if(isset($_POST['adresse']))

$adresse $_POST['adresse']; else $feil 1;

if(isset($_POST['postadresse']))

$postadresse $_POST['postadresse']; else $feil 1;

if(isset($_POST['epost']))

$epost $_POST['epost']; else $feil 1;

if(isset($_POST['fodaar']))

$fodaar $_POST['fodaar']; else $feil 1;

if(isset($_POST['telefon']))

$telefon $_POST['telefon']; else $feil 1;

if(isset($_POST['yrke']))

$yrke $_POST['yrke'];

if(isset($_POST['utdanning']))

$utdanning $_POST['utdanning'];

if(isset($_POST['drop_down']))

$dropdown $_POST['drop_down']; else $feil 1;

if(isset($_POST['check']))

$checkmsg $_POST['check'];

 

 

if(isset($feil)) {

 echo "Fyll ut felta";

}

else {

 

$body "

 

Etternavn: $etternn\n

Fornavn: $fornn\n

Adresse: $adresse\n

Postadresse: $postadresse\n

Epost: $epost\n

Fødselsår: $fodaar\n

Telefon: $telefon\n\n

Yrke: $yrke\n

Utdanning: $utdanning\n

Ønsker skyss fra: $dropdown\n

$check_msg\n

 

";

 

 

echo "Påmeldinga er sendt!";

mail($to$subject$body);

 

}

}

else

echo "Meldinga er ikkje sendt.";

?>

 

hmm rart. Prøv å ha epost form'en over <?php

 

<input type="checkbox" name="check[]" value="Deltakelse">

burde være <input type="checkbox" name="check" value="Deltakelse">

Lenke til kommentar

Hmmm... skal vel ikkje ha noko å sei med plasseringa av epost-forma. Den nederste meldinga ("Meldinga er ikkje sendt.") har eg ikkje bruk for, så den kan vekk.

 

Som du ser så kan eg skrive inn det eg vil, og den sender allikavel. Det var då ikkje slik i sta? Hmm..

Endret av huf
Lenke til kommentar

hmm men som du sikkert skjønner av scriptet. Så hvis det ikke er en verdi i $_POST['noe'] så blir $feil satt til en verdi. Lenger nede sjekker scripett om $feil er satt til en verdi. Hvis den er det: scriptet stopper. Hvis ikke, forsett til å sende scripet.

 

Prøv å sett inn $feil = 1; rett over if(isset($feil))

 

hvis det virker, er det måten scripet sjekker om det er en verdi i variablelen på. Kan være at epost form'en poster tomme verdier som $etternn == "" og at isset() da ser på det som en tomstring.

 

hvis det er feilen, prøv å endre alle isset($_POST['drop_down']) med

PHP
$_POST['drop_down']==""
osv

 

men: det virker hos meg. test side

Endret av Stale2k
Lenke til kommentar

Okei. Hehe. Dette blir alt for mykje for meg. Eg kan ikkje PHP godt nok til å rote slik i grauten. :)

 

Her er saken.

 

Dette funker:

 

<?php
if(isset($_POST['submit'])) {

$to = "[email protected]"; 
$subject = "Påmelding til x";

if(isset($_POST['etternn']))
$etternn = $_POST['etternn']; else $feil = 1;
if(isset($_POST['fornn']))
$fornn = $_POST['fornn']; else $feil = 1;
if(isset($_POST['adresse']))
$adresse = $_POST['adresse']; else $feil = 1;
if(isset($_POST['postadresse']))
$postadresse = $_POST['postadresse']; else $feil = 1;
if(isset($_POST['epost']))
$epost = $_POST['epost']; else $feil = 1;
if(isset($_POST['fodaar']))
$fodaar = $_POST['fodaar']; else $feil = 1;
if(isset($_POST['telefon']))
$telefon = $_POST['telefon']; else $feil = 1;
if(isset($_POST['yrke']))
$yrke = $_POST['yrke']; else $feil = 1;
if(isset($_POST['utdanning']))
$utdanning = $_POST['utdanning']; else $feil = 1;
if(isset($_POST['drop_down']))
$dropdown = $_POST['drop_down']; else $feil = 1;
if(isset($_POST['checkit']))
$check = $_POST['checkit']; else $feil = 1;


if(isset($feil)) {
echo "Fyll ut felta";
}
else {

$body = "

Etternavn: $etternn\n
Fornavn: $fornn\n
Adresse: $adresse\n
Postadresse: $postadresse\n
Epost: $epost\n
Fødselsår: $fodaar\n
Telefon: $telefon\n\n
Yrke: $yrke\n
Utdanning: $utdanning\n
Ønsker skyss fra: $dropdown\n
$check\n
   
";


echo "Påmeldinga er sendt!";
mail($to, $subject, $body);

}
}
else
echo "Meldinga er ikkje sendt.";
?>

 

Men, då MÅ ein skrive noko i alle felta for at den skal sende avgårde mailen. Det einaste eg vil ha annaleis, er at "Telefon", "Yrke", "Utdanning", og checkboksa er valgfrie opsjonar. Checkboksa skal skrive ut ein beskjed uavhengig om den er aktivert eller ikkje.

Endret av huf
Lenke til kommentar

Da får du prøve denne.. xD :p

bittelitt endret :)

 

Klikk for å se/fjerne innholdet nedenfor

PHP

<?php

if(isset($_POST['submit'])) {

 

$to = "[email protected]"; 

$subject = "Påmelding til x";

 

if(isset($_POST['etternn']))

$etternn = $_POST['etternn']; else $feil = 1;

if(isset($_POST['fornn']))

$fornn = $_POST['fornn']; else $feil = 1;

if(isset($_POST['adresse']))

$adresse = $_POST['adresse']; else $feil = 1;

if(isset($_POST['postadresse']))

$postadresse = $_POST['postadresse']; else $feil = 1;

if(isset($_POST['epost']))

$epost = $_POST['epost']; else $feil = 1;

if(isset($_POST['fodaar']))

$fodaar = $_POST['fodaar']; else $feil = 1;

$telefon = $_POST['telefon'];

$yrke = $_POST['yrke'];

$utdanning = $_POST['utdanning'];

if(isset($_POST['drop_down']))

$dropdown = $_POST['drop_down']; else $feil = 1;

$check = $_POST['checkit'];

 

 

if(isset($feil)) {

echo "Fyll ut felta";

}

else {

echo "Ditt valg: $check";

 

$body = "

 

Etternavn: $etternn\n

Fornavn: $fornn\n

Adresse: $adresse\n

Postadresse: $postadresse\n

Epost: $epost\n

Fødselsår: $fodaar\n

Telefon: $telefon\n\n

Yrke: $yrke\n

Utdanning: $utdanning\n

Ønsker skyss fra: $dropdown\n

$check\n

   

";

 

 

echo "Påmeldinga er sendt!";

mail($to, $subject, $body);

 

}

}

else

echo "Meldinga er ikkje sendt.";

?>

 

edit: endret litt til.. burde virke nå.. :(

Endret av Stale2k
Lenke til kommentar

Nei, får akkurat den samme feilen som sist. (Eg kan sende mailen uten innhold i nokon av rubrikkane).

 

Eg driv å skriv om heile greia på nytt no, og håpar på eg når deadlinen. (Kjem sikkert til å spør på nytt om det er ting eg lurar på.)

 

Takk for hjelpa, Stale2k! :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...