Avatar billede bmdk Nybegynder
24. maj 2004 - 09:46 Der er 19 kommentarer og
2 løsninger

Tilmelding med checkbox

Hej eksperter,

Jeg er netop igang med at lave en tilmeldingsform. Når man bliver præsenteret for denne form, har man også mulighed for, at tilmelde sig et nyhedsbrev.

Der hvor jeg så er lidt på bar bund er hvordan skal den checkbox laves? Jeg havde tænkt på noget med:

<?
$host = "localhost";
$user = "xxxx";
$pass = "xxxx";
$dbname = "xxxx";
$dbconn =     mysql_connect($host, $user, $pass);
            mysql_select_db($dbname, $dbconn)
                or die("Couldn't select database.");
               
$queryDB = mysql_query("SELECT count(id) AS id FROM tilmeldingbaresso ORDER BY ID ASC") or die(mysql_error());
while($query = mysql_fetch_array($queryDB)) {
$id = $query["id"];
echo "
                            <table align=\"center\" cellspacing=\"0\" cellpadding=\"2\" border=\"0\" width=\"760px\">
                                <tr>
                                    <td align=\"center\" width=\"760px\"><p align=\"left\"><font face=\"verdana\" size=\"2\">Der er tilmeldt <b>$id</b> til dette arrangement</font></td>
                                </tr>
                            </table>
                            ";
                            };
                           
                    if ['box'] == true)
mysql_query("INSERT INTO tilmeldingbaresso(navn, adresse, postnummer, city, telefon, email) VALUES ('".$navn."', '".$adresse."', '".$postnummer."', '".$city."', '".$telefon."', '".$email."')");
?>

Hvordan skal if funktionen skrives?

På forhånd tak for hjælpen :)
Avatar billede Slettet bruger
24. maj 2004 - 10:20 #1
Jeg vil nok vælge at give boxen et beskrivende navn. Hvad med 'nyhedsbrev' Du kan bruge

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

eller eventuelt

if(isset($_POST['nyhedsbrev']) && $_POST['box']=='ja')

Hvis du bruger metode 2 skal du have en value='ja' i din <input>
Avatar billede jakobdo Ekspert
24. maj 2004 - 10:20 #2
if (isset($_POST['checkBoxNavn']))
//Insert into tabel...
Avatar billede Slettet bruger
24. maj 2004 - 10:21 #3
Eksempel 2 skulle naturligvis have set således ud:

if(isset($_POST['nyhedsbrev']) && $_POST['nyhedsbrev']=='ja')
Avatar billede bmdk Nybegynder
24. maj 2004 - 10:22 #4
prøver lige :)
Avatar billede bmdk Nybegynder
24. maj 2004 - 10:27 #5
Jeg prøvede med linien if(isset($_POST['nyhedsbrev']) && $_POST['nyhedsbrev']=='ja') (og huskede naturligvis at ændre navnet til nyhedsbrev), men den indsætter ikke noget til min nyhedstabel i databasen :\
Avatar billede jakobdo Ekspert
24. maj 2004 - 10:30 #6
Du kan da ikke nøde at lave tjekket: && $_POST['nyhedsbrev']=='ja'???
nyhedsbrev vil kun indeholde en værdi, hvis den er ja/true/checked...
Avatar billede bmdk Nybegynder
24. maj 2004 - 10:31 #7
Er ikke sikker på jeg forstår?

Skal lige siges jeg langt fra er den skarpeste til php hehe :)
Avatar billede Slettet bruger
24. maj 2004 - 10:35 #8
Det var også derfor at jeg skrev eventuelt til eksempel 2. Eksempel 1 burde virke.

Prøv at vise hele dit script, og også gerne din <form> (Eventuelt bare tagget til checkboxen.)
Avatar billede jakobdo Ekspert
24. maj 2004 - 10:36 #9
Jeg mener ikke det er nødvendigt med dette tjek:

if(isset($_POST['nyhedsbrev']) && $_POST['box']=='ja')

da dette bør være nok:

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

For hvis checkboxen nyhedsbrev ikke er checked, så vil $_POST['nyhedsbrev']) returne FALSE, og dermed ikke udføre if-sætningen.
Avatar billede bmdk Nybegynder
24. maj 2004 - 10:39 #10
Du får lige smøren her:

Form:
--------
<form action="includes/opret_tilmelding.php" method="post">
<table>
    <tr>
        <td>Navn:</td>
        <td><input type="text" size="30" maxlength="30" name="navn"></td>
    </tr>
    <tr>
        <td>Adresse:</td>
        <td><input type="text" size="30" maxlength="30" name="adresse"></td>
    </tr>
    <tr>
        <td>Postnr :</td>
        <td><input type="text" size="30" maxlength="4" name="postnummer"></td>
    </tr>
    <tr>
        <td>By:</td>
        <td><input type="text" size="30" maxlength="30" name="city"></td>
    </tr>
    <tr>
        <td>Telefon:</td>
        <td><input type="text" size="30" maxlength="8" name="telefon"></td>
    </tr>
    <tr>
        <td>E-mail:</td>
        <td><input type="text" size="30" maxlength="40" name="email"></td>
    </tr>
    <tr>
        <td></td>
        <td><input type="submit" value="Tilmeld" name="send"></td>
        <td><input type="checkbox" name="nyhedsbrev" value='ja'></td>
    </tr>
</table>


opret_tilmelding.php:
------

mysql_query("INSERT INTO tilmeldingbaresso(navn, adresse, postnummer, city, telefon, email) VALUES ('".$navn."', '".$adresse."', '".$postnummer."', '".$city."', '".$telefon."', '".$email."')");

if(isset($_POST['nyhedsbrev'])) {
mysql_query("INSERT INTO nyhedsbrevbaresso(navn, adresse, postnummer, city, telefon, email) VALUES ('".$navn."', '".$adresse."', '".$postnummer."', '".$city."', '".$telefon."', '".$email."')");
};

header("Location: http://www.bo-mortensen.dk/baresso/tak.php");

exit;
?>
Avatar billede Slettet bruger
24. maj 2004 - 10:39 #11
Måske stejler MySQL over at du ikke har mellemrum før den første af de to paranteser. Prøv at skrive:

mysql_query("INSERT INTO tilmeldingbaresso (navn, adresse, postnummer, city, telefon, email) VALUES ('".$navn."', '".$adresse."', '".$postnummer."', '".$city."', '".$telefon."', '".$email."')") or die(mysql_error());

Og er du sikker på at der er noget i de andre variabler?
Avatar billede Slettet bruger
24. maj 2004 - 10:43 #12
Tilsvarende skal den anden rettes, men egentlig vil jeg anbefale at lave 'nyhedsbrev' til et enkelt felt i din normale tabel. Ellers vil det give en hulens masse bøvl at skulle holde styr på folk, der har samme data stående 2 forskellige steder.
Avatar billede bmdk Nybegynder
24. maj 2004 - 10:44 #13
alle variablerne skulle gerne være sat ja..

er godt nok på bar bund her ;)
Avatar billede jakobdo Ekspert
24. maj 2004 - 10:48 #14
Lige en helt anden ting BMDK: Prøv at åben din side i www.mozilla.org
Avatar billede bmdk Nybegynder
24. maj 2004 - 10:48 #15
haha, ja jeg ved det godt :) den går amok i mozilla.. 1 ting mere der skal rettes! og eksamensprojektet her skal afleveres om 4 dage ;) presset? tror jeg nok..
Avatar billede sukos Juniormester
24. maj 2004 - 10:50 #16
Kan du godt gemme i DB?
Altså, tænker ikke her på nyhedsbrev.
Avatar billede sukos Juniormester
24. maj 2004 - 10:50 #17
Og vil da også anbefale dig at ha' et felt i samme table, for modtagelse af nyhedsbrev
Avatar billede sukos Juniormester
24. maj 2004 - 10:55 #18
$news = "";
if(isset($_POST["nyhedsbrev"])) {
$news = 1;
}

mysql_query("INSERT INTO `tilmeldingbaresso` (`navn`, `adresse`, `postnummer`, `city`, `telefon`, `email`, `nyhedsbrev`) VALUES ('".$_POST["navn"]."', '".$_POST["adresse"]."', '".$_POST["postnummer"]."', '".$_POST["city"]."', '".$_POST["telefon"]."', '".$_POST["email"]."','".$news."')") or die (mysql_error());
Avatar billede bmdk Nybegynder
24. maj 2004 - 11:24 #19
Heysa, fik det selv til at virke.. alt der skulle til var at value skulle slettes.. giver bare jer begge points hvis I smider et svar :)
Avatar billede jakobdo Ekspert
24. maj 2004 - 11:24 #20
Svar...
Avatar billede Slettet bruger
24. maj 2004 - 11:25 #21
OK
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