Avatar billede riefart Seniormester
06. marts 2014 - 23:13 Der er 5 kommentarer og
1 løsning

Value i checkbox - hvordan trækkes den ud?

På en bookingside kan man vælge mellem forskellige ture, ved at afkrydse i et antal checkboxe. I chexkboksene ligger en value som hentes i en database, og som skal bruges, hvis den pågældende boks markeres. Der kan kun markeres een ad gangen.
Spørgsmålet er: hvordan får jeg den pågældende værdi ud af checkboksen og over i en variabel, som jeg efterfølgende kan bruge som WHERE udtrykket i en sql-sætning.
Siden kan ses her: http://www.web-legestuen.dk/havkajak2014/book_guidetur.php
NB. Der genereres et forskelligt antal checkbokse, alt efter hvor mange ture der er den pågældende dag.

Overføringsscriptet ligger over headeren, og ser sådan ud:
<?php
if(isset($_REQUEST['book_tur']))
{
$arrangementsnummer=$_POST['tur_check']; //det er denne der driller - hvis jeg selv sætter et nummer, fungerer det.
$navn=$_POST['tur_navn'];
$telefon=$_POST['tur_telefon'];
$email=$_POST['tur_email'];
$bookingtal=$_REQUEST['tur_antal'];
$besked=$_REQUEST['tur_note'];
if($besked==''){$besked='&nbsp;';}
$epoc=time();
$ip = $_SERVER['REMOTE_ADDR'];

include("db_con.php");
if((preg_match("/[a-zæøå0-9\. -]/i", $navn))AND(preg_match("/[0-9\. ]/", $telefon))AND(preg_match("/[a-zæøå0-9\.,\s\?\!\-\: ]/i", $besked))AND(preg_match("/[0-9 ]/", $bookingtal))AND(preg_match("/^[^\.]?[\w\.-]+@[^\.]?[\w\.-]+\.[A-Z]{2,4}$/i", $email)))
    {
    if($stmt=$mysqli->prepare('INSERT INTO `tilmeldinger` (`arrangementsnummer`, `navn`, `telefon`, `antal`, `email`, `besked`, `epoc`, `ip`) VALUES(?,?,?,?,?,?,?,?)'))
        {
    $stmt->bind_param('isiissis', $arrangementsnummer, $navn, $telefon, $bookingtal, $email, $besked, $epoc, $ip );
    $stmt->execute();
    $stmt->close();
        }
else
        {
echo "Der er dersværre opstået en fejl: " . $mysqli->error;
        }
if($stmt=$mysqli->prepare('SELECT `restpladser` FROM `arrangementer` WHERE `arrangementsnummer`=?'))
        {
    $stmt->bind_param('i', $arrangementsnummer);
    $stmt->execute();
    $stmt->bind_result($restpladser_gammel);
    $stmt->fetch();
    $stmt->close();
        }
    $restpladser_ny=($restpladser_gammel-$bookingtal);

    if($stmt=$mysqli->prepare('UPDATE `arrangementer` SET `restpladser`=?  WHERE `arrangementsnummer`=?'))
        {
    $stmt->bind_param('ii', $restpladser_ny, $arrangementsnummer);
    $stmt->execute();
    $stmt->close();
        }
    }
else
    {
    echo "Du har brugt ulovlige tegn i et eller flere felter!";
    }
}
?>
07. marts 2014 - 06:09 #1
Prøv at vise den kode du bruger til at lave checkboksen.  Det må være der det skal ændres.
Avatar billede riefart Seniormester
08. marts 2014 - 09:07 #2
Jeg henter information til formularen ud fra en database:

include('db_con.php');
if($stmt=$mysqli->prepare("SELECT * FROM `arrangementer` WHERE (`maanedstal`=? &&`dato`=?) Order By tidspunkt"))
{
    $stmt->bind_param('ss', $maaned, $dato);
    $stmt->execute();
    $stmt->bind_result($arrangementsnummer, $arrangementstype, $tidspunkt, $beskrivelse, $antal);
    while($stmt->fetch())
    {
        if($antal>0)
        {
?>     
        <div class="tjekbokse">
        <input type="checkbox" class="tur_check" name="tur_check[]" value="<php echo $arrangementsnummer; ?>" /> 
        <div class="tur_info"><b><?php echo "$ugedag d. $dato. $maaned kl. $tidspunkt"; ?></b><br /><?php echo "$restpladser ledige pladser."; ?></div><br /> 
        </div>
<?php
        }
    }
    $stmt->close();
}
?>
..og alle variabler er læsbare i det følgende script. Men jeg kan som sagt ikke hente inf. ud af checkboxene.
08. marts 2014 - 18:55 #3
Jeg er på ferie, har stået på ski dagen igennem, men nu kikker jeg lige på det inden vi skal ned og spise.
Det er falder mig i øjnene er, at når du fra databasen har hentet arrangementerne, så fylder du arrangementsnummeret i en checkbox med navn 'tur_check[]'.  Når så kunden har valgt et arrangement prøver du at trække arrangementsnummeret ud af $_POST['tur_check'] som er tom, fordi checkboxen har et andet navn.  Hvad sker der, hvis du ændrer koden til
<input type="checkbox" class="tur_check" name="tur_check" value= .....
Avatar billede riefart Seniormester
08. marts 2014 - 21:04 #4
Der sker ingenting. Jeg har prøvet det tidligere, men forsøgte ændringen fra tur_check til tur_check[], da databasen ofte vil levere mere end en post. Men det gav eterfølgende heller ikke noget resultat, andet end '0' i databasen.
Hvis jeg laver en title="<?php echo $arrangementsnummer; ?> får jeg heller ikke andet ud end netop: <?php echo $arrangementsnummer; ?>.
Jeg er noget i vildrede.
Men du skal også huske ikke at sidde ved pc'en når der er afterskiing.
09. marts 2014 - 19:35 #5
For det første må jeg påpege, at det at stå på ski er en kultiveret affære, og det gængse udtryk for de påfølgende aktiviteter er 'après-ski' på godt fransk.  (Afterski er et udtryk for proletarer.)  For det andet skal jeg holde mig til din påmaning og ikke gøre for meget ved pc'en imens.  Dit svar rejser et antal spørgsmålstegn, som jeg imidlertid nok ikke får gjort noget ved før i overmorgen når jeg er hjemme igen.
Avatar billede riefart Seniormester
09. marts 2014 - 21:20 #6
Christian.
Slap blot af når du kommer hjem. Jeg fandt på en alternativ løsning. Ellers mange slags tak for hjælpen.
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