Avatar billede brianmilan Juniormester
10. april 2007 - 14:20 Der er 15 kommentarer og
1 løsning

Checkbox - Udtræk bestemte data via checkbox som er gemt i MySQL.

Hej,

Kan I hjælpe mig?
Jeg har lavet en dvd database, og har bl.a. en side hvor jeg kan vise alle filmene, så kunne jeg godt tænke mig at lave en lille checkbox ud for hver film så jeg f.eks. kunne vælge de film ud som jeg gerne ville se på en anden side, kan det godt lade sig gøre? Jeg har prøvet at surfe rundt på nettet efter det, men synes ikke rigtigt at jeg kan finde noget der passer til MySQL.

Venlig hilsen
Brian
Avatar billede jakobdo Ekspert
10. april 2007 - 15:10 #1
Du kunne f.eks. lave:

$query = mysql_query("SELECT id,title FROM dvd_samling ORDER BY title LIMIT 10");
if(mysql_num_rows($query)>0)
{
echo '<form action="next_page.php" method="post">';
while($row = mysql_fetch_assoc($query))
{
echo $row['title'] . '<input type="checkbox" value="'.$row['id'].'"><br />';
}
echo '<input type="submit" name="test" value="Test checkboxes">';
echo '</form>';
}
else
{
echo 'Ingen DVD-titler fundet';
}

Og så prøv at lav siden: next_page.php og skriv:
<?php
echo '<pre>';
print_r($_POST);
echo '</pre>';
?>
Avatar billede showsource Seniormester
10. april 2007 - 15:36 #2
Du skal nok lige ha' et name med på checkbox ..... :O)


$query = mysql_query("SELECT id,title FROM dvd_samling ORDER BY title LIMIT 10");
    if(mysql_num_rows($query)>0)
    {
    echo '<form action="next_page.php" method="post">';
        while($row = mysql_fetch_assoc($query))
        {
        echo '<input type="checkbox" name="visfilm[]" value="'.$row['id'].'"> '. $row['title'] .'<br />';
        }
    echo '<input type="submit" name="test" value="Test checkboxes">';
    echo '</form>';
    }
    else
    {
    echo 'Ingen DVD-titler fundet';
    }
Avatar billede jakobdo Ekspert
10. april 2007 - 15:40 #3
Ja selvfølgelig, mig der sov. :o)
Avatar billede brianmilan Juniormester
19. juli 2007 - 10:57 #4
Hej og mange tak for hjælpen. Kan jeg godt få mit "output" til at se anderledes ud? Når jeg køre det nu, ser det sådan her ud:

Array
(
    [visfilm] => Array
        (
            [0] => 1042
            [1] => 1041
            [2] => 1040
        )

    [test] => Reserver Film
)

Jeg kunne godt tænke mig at der stod f.eks.

1. King Kong
2. The Day After Tomorrow
osv.

Kan det godt lade sig gøre?
Avatar billede brianmilan Juniormester
19. juli 2007 - 10:59 #5
ups, det skulle have stået:

1042. King Kong
1041. The Day After Tomorrow
1040. Twister
osv.
Avatar billede jakobdo Ekspert
19. juli 2007 - 20:13 #6
Så skal du rette koden på next_page.php til:

<?php

if(isset($_POST['visfilm']))
{
    $query = mysql_query("SELECT id,title FROM dvd_samling WHERE id IN ('".implode(',',$_POST['visfilm'])."')");
    if(mysql_num_rows($query)>0)
    {
        while($row = mysql_fetch_assoc($query))
        {
            echo $row['id'] . '. ' . $row['title'] . '<br />';
        }
    }
}

?>
Avatar billede brianmilan Juniormester
20. juli 2007 - 10:27 #7
Hej jakobdo, tak for hjælpen :o)
Nu får den både min film id og titel med over, men det er desværre kun får én film, selvom jeg markere flere på den foregående side, ved du hvad det kan være?
Avatar billede jakobdo Ekspert
20. juli 2007 - 21:44 #8
Prøv at ret koden til:

<?php

if(isset($_POST['visfilm']))
{
    $sql = "SELECT id,title FROM dvd_samling WHERE id IN ('".implode(',',$_POST['visfilm'])."')";
    echo 'DEBUG : ' . $sql . '<br />';
    $query = mysql_query($sql) or die(mysql_error());
    if(mysql_num_rows($query)>0)
    {
        while($row = mysql_fetch_assoc($query))
        {
            echo $row['id'] . '. ' . $row['title'] . '<br />';
        }
    }
}

?>

og smid info fra: debug herind.
Måske der er en fejl i min opbygning af sql'en. :o(
Avatar billede brianmilan Juniormester
21. juli 2007 - 08:41 #9
Hej,
Jeg får dette resultat af min SQL:

DEBUG : SELECT dvd_film_ID, Original_Titel, Dansk_Titel, Mini_DVD_Cover FROM alle_dvd_film WHERE dvd_film_ID IN ('1065,1062')
1065. The Last King Of Scotland

Det er underligt at den kun tager den første dvd_film_id
Avatar billede jakobdo Ekspert
21. juli 2007 - 09:28 #10
Klart, jeg har lavet en fejl.

Ret lige:

implode(',',$_POST['visfilm'])
til:
implode("','",$_POST['visfilm'])
Avatar billede brianmilan Juniormester
21. juli 2007 - 12:51 #11
Kanont :o)
Nu var den der, nu får jeg vist begge film.. Mange tak for hjælpen. Vil du lægge et svar, så vil jeg fluks give dig point
Avatar billede brianmilan Juniormester
21. juli 2007 - 13:57 #12
Hej igen, jeg kom lige til at tænke på, hvis nu jeg skal maile de to titler, kan jeg så lægge indholdet af $_POST['visfilm'] over i en send mail funktion som denne her:

<?
$dvd_film_ID    =$_POST["dvd_film_ID"];
$Original_Titel =$_POST["Original_Titel"];
$Dansk_Titel    =$_POST["Dansk_Titel"];

foreach($_POST['visfilm'] as $Email) {
//**************** Her starter mail-funtionen ****************
$mails = "$Email";
$mailSubject = "$emne";
$mailBody = "<font size=\"2\" color=\"#330099\" face=\"Verdana\"><p>".$beskrivelse."</p></font>";
$mail_headers = "From: Movie Universe <No_Reply>" . "\n"
. 'MIME-Version: 1.0' . "\n"
. 'Message-ID: <' . md5(uniqid(time())) . '@brianmilan.dk>' . "\n"
. 'Content-Type: text/html; charset="iso-8859-1"' . "\n"
. 'Content-Transfer-Encoding: 8bit' . "\n"
. 'Importance: Normal' . "\n";   
mail($Email, $mailSubject, $mailBody, $mail_headers);
}
?>
Avatar billede jakobdo Ekspert
22. juli 2007 - 13:18 #13
Du får først et svar.
Avatar billede jakobdo Ekspert
22. juli 2007 - 13:20 #14
Og hvis der så er tale om der skal sendes info via email, skal du arbejde med denne kode:

<?php

if(isset($_POST['visfilm']))
{
    $sql = "SELECT id,title FROM dvd_samling WHERE id IN ('".implode(',',$_POST['visfilm'])."')";
    echo 'DEBUG : ' . $sql . '<br />';
    $query = mysql_query($sql) or die(mysql_error());
    if(mysql_num_rows($query)>0)
    {
        while($row = mysql_fetch_assoc($query))
        {
            echo $row['id'] . '. ' . $row['title'] . '<br />';
        }
    }
}

?>

Og der skal så rettes i linien:

echo $row['id'] . '. ' . $row['title'] . '<br />';

til noget i stil med:

$mailBody .= $row['id'] . '. ' . $row['title'] . '<br />';

Og så ellers meget at det kode du selv er inde over ja.
Avatar billede brianmilan Juniormester
22. juli 2007 - 13:28 #15
Alletiders, det vil jeg prøve :o)  og endnu engang tak for hjælpen.
Avatar billede jakobdo Ekspert
22. juli 2007 - 13:42 #16
Jeg takker for point.
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