Avatar billede LilleUdvikler Nybegynder
20. juni 2011 - 12:40 Der er 6 kommentarer og
1 løsning

PHP Simpel form

Hejsa.

Jeg kan simpelthen ikke se, hvad problemet er i min kode her. Jeg skal have de indtastede data ind i min database - hvilket går fint.

Det virker fint med navn og email - men hvordan får jeg det til, at være sådan så, at hvis der ikke er en checkbox CHECKED, så skal den echo ud: Du skal vælge mindst en valgmulighed.  ?
Avatar billede LilleUdvikler Nybegynder
20. juni 2011 - 12:40 #1
Glemte min kode! :o)

            <form action="materiale.php" method="post">
            <?php
           
            include("includes/mysql_connect.php");
           
            $err = "";
            $success = "";
           
            $navn = $_POST['navn'];
            $email = $_POST['email'];
            $valg = $_POST['valg'];
           
            if(isset($_POST['navn']) && isset($_POST['email']) && isset($_POST['valg'])){
               
                //Hvis et felt er tomt, erklær fejl. $err
                if(empty($_POST['navn'])){
                    $err = "Du skal udfylde navn.";
                }
                if(empty($_POST['email'])){
                    $err = "Du skal udfylde email.";
                }
                else
                {
                    //Send besked. Indsæt i database
                    mysql_query("INSERT INTO bestilmateriale (navn, email, valg) VALUES('$navn', '$email', '$valg')")
                    or die(mysql_error());
                    $success = "Din besked er sendt";
                }
            }
           
           
            ?>
           
            <!-- bestille -->
           
           
                <table>
                    <tr>
                        <td>Navn:</td>
                    </tr>
                    <tr>
                        <td><input name="navn" type="text"></td>
                    </tr>
                   
                    <tr>
                        <td>Email:</td>
                    </tr>
                    <tr>
                        <td><input name="email" type="text"></td>
                    </tr>
                    <tr>
                        <td><input type="checkbox" name="valg" value="Blæksprutter i Danmark"> Blæksprutter i Danmark</td>
                    </tr>
                    <tr>
                        <td><input type="checkbox" name="valg" value="Kæmpeblæksprutter"> Kæmpeblæksprutter</td>
                    </tr>
                    <tr>
                        <td><input type="checkbox" name="valg" value="Blæksprutter i film og bøger"> Blæksprutter i film og bøger</td>
                    </tr>
                    <tr>
                        <td><input type="checkbox" name="valg" value="Ja tak, jeg vil gerne have nyhedsbrevet tilsendt på min mail."> Ja tak, jeg vil gerne have nyhedsbrevet tilsendt på min mail.</td>
                    </tr>
                    <tr>
                        <td><input type="submit" value="Send"></td>
                    </tr>
                    <tr>
                        <td><?=$err?></td>
                    </tr>
                    <tr>
                        <td><?=$success?></td>
                    </tr>
                </table>
            </form>
Avatar billede vagnk Juniormester
20. juni 2011 - 12:53 #2
Burde vist laves som en check-funktion i Java og det er ikke min stærke side. Se "http://www.html.dk/artikler/00016/" eller her i Eksperten. Hvis checket laves i php får du (og brugeren) først besked når han er kommet over på den nye side og så skal han redirigeres tilbage hvor man kan give besked. Meget bøvlet.
Avatar billede vagnk Juniormester
20. juni 2011 - 12:56 #3
Her er korrekt link : http://www.html.dk/artikler/00016/
Avatar billede LilleUdvikler Nybegynder
20. juni 2011 - 13:08 #4
Jeg dropper det.. Mit hovede er ikke lige til det i dag.

Men smid du et svar, så får du nogle point :o)
Avatar billede vagnk Juniormester
20. juni 2011 - 13:16 #5
Fedt! Det er første gang jeg har prøvet det. Du kan eventuelt kontakte mig når hovedet kommer i andre folder, min mail er i min profil.
Avatar billede webweaver Praktikant
20. juni 2011 - 13:22 #6
Du kan jo lave det, ligesom du gør med dine andre inputfelter. Der er ingen grund til at gå over i JavaScript lige pludselig. (medmindre du ønsker, at den skal give fejl straks, når man klikker submit, inden den foretager sig noget. Men gør du jo heller ikke med de andre fejl, så hvorfor gøre det anderledes her..)

if(!$_POST['valg']){
$err = "Du skal vælge mindst en valgmulighed.";
}


I øvrigt, så virker din kode ike korrekt med dine valideringer af hvad jeg lige kan se.

if(isset($_POST['navn']) && isset($_POST['email']) && isset($_POST['valg'])){
               
                //Hvis et felt er tomt, erklær fejl. $err
                if(empty($_POST['navn'])){
                    $err = "Du skal udfylde navn.";
                }
                if(empty($_POST['email'])){
                    $err = "Du skal udfylde email.";
                }
                else
                {
                    //Send besked. Indsæt i database
                    mysql_query("INSERT INTO bestilmateriale (navn, email, valg) VALUES('$navn', '$email', '$valg')")
                    or die(mysql_error());
                    $success = "Din besked er sendt";
                }
            }


Hvis en person ikke udfylder sit navn, vil den sende data til din database alligevel. Du har lavet en else sætning der ikke fungerer korrekt. Den har du placeret på $_POST['mail'], hvilket vil sige, at den reagere kun ud fra om den er udfyldt eller ej.

Enten skal du lave dine valideringer som if, else if og så til sidst else. Så kan du gøre det.

Eller også skal du bare lave en simpel if sætning, som jeg nok ville gøre.

if (!$err) {
send til database...
}
Avatar billede webweaver Praktikant
20. juni 2011 - 13:26 #7
I øvrigt, vil den slet ikke nå frem til dine valideringer kan jeg se.

Du skriver jo

if(isset($_POST['navn']) && isset($_POST['email']) && isset($_POST['valg'])){


Og så herefter kommer du med dine valideringer. Det giver ingen mening. For at den kan være nået hertil, bliver felterne nødt til at være udfyldt. Hvis de ikke er udfyldt, udfører den aldrig de ting du har herinde i if sætningen og dermed heller ikke dine fejlbeskeder.
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