huf Skrevet 20. november 2006 Del Skrevet 20. november 2006 (endret) 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 21. november 2006 av huf Lenke til kommentar
ZoRaC Skrevet 20. november 2006 Del Skrevet 20. november 2006 $body = "Dette er rett: $check_msg"; $body = 'Dette er feil: $check_msg'; Ellers kan man vel sjekke: if (!isset($check_msg)) die("Du må velge noe!"); etter foreach-loopen? Lenke til kommentar
huf Skrevet 21. november 2006 Forfatter Del Skrevet 21. november 2006 (endret) 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 21. november 2006 av huf Lenke til kommentar
Ståle Skrevet 21. november 2006 Del Skrevet 21. november 2006 (endret) if (isset($_POST['etternn'])) $etternn = $_POST['etternn']; else echo "Du må fylle inn etternavnet ditt!"; så må du vel gjøre det med alle post verdiene. edit: gjorde det litt lettere xD Endret 21. november 2006 av Stale2k Lenke til kommentar
huf Skrevet 21. november 2006 Forfatter Del Skrevet 21. november 2006 Takk for svar. Er ikkje så stø på dette. Eg prøvde å sette det inn rett før foreach-loopen, men då skjedde det ingenting. Skjemaet vart sendt sjølv om det var tomt. :/ Lenke til kommentar
huf Skrevet 21. november 2006 Forfatter Del Skrevet 21. november 2006 (endret) 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 21. november 2006 av huf Lenke til kommentar
Ståle Skrevet 21. november 2006 Del Skrevet 21. november 2006 (endret) 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 21. november 2006 av Stale2k Lenke til kommentar
huf Skrevet 21. november 2006 Forfatter Del Skrevet 21. november 2006 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
huf Skrevet 21. november 2006 Forfatter Del Skrevet 21. november 2006 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
Ståle Skrevet 21. november 2006 Del Skrevet 21. november 2006 (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; 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 21. november 2006 av Stale2k Lenke til kommentar
huf Skrevet 21. november 2006 Forfatter Del Skrevet 21. november 2006 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
huf Skrevet 21. november 2006 Forfatter Del Skrevet 21. november 2006 (endret) 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. EDIT: Forresten, som du ser, så skal "Yrke" og "Utdanning" også vere valgfrie boksar. Takker for all hjelp til no. Endret 24. november 2006 av huf Lenke til kommentar
Ståle Skrevet 21. november 2006 Del Skrevet 21. november 2006 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
huf Skrevet 21. november 2006 Forfatter Del Skrevet 21. november 2006 (endret) 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 24. november 2006 av huf Lenke til kommentar
Ståle Skrevet 21. november 2006 Del Skrevet 21. november 2006 (endret) 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 21. november 2006 av Stale2k Lenke til kommentar
huf Skrevet 21. november 2006 Forfatter Del Skrevet 21. november 2006 (endret) 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 21. november 2006 av huf Lenke til kommentar
Ståle Skrevet 21. november 2006 Del Skrevet 21. november 2006 (endret) Da får du prøve denne.. xD 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 21. november 2006 av Stale2k Lenke til kommentar
huf Skrevet 21. november 2006 Forfatter Del Skrevet 21. november 2006 Det var det samme resultatet som sist. Den sender mailen uten å sjekke om der er innhold, og den sender ikkje mailen i det heile tatt om checkboksa ikkje er aktivert. Lenke til kommentar
Ståle Skrevet 21. november 2006 Del Skrevet 21. november 2006 endret scriptet over, igjen rart at det ikke funker hos deg, når det tilsynelatende gjør det hos meg :( Lenke til kommentar
huf Skrevet 21. november 2006 Forfatter Del Skrevet 21. november 2006 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå