Avatar billede flappen Nybegynder
14. marts 2005 - 10:44 Der er 13 kommentarer og
1 løsning

Checkboxe - slet fra database?

Hey eksperten..

Jeg er ved at lave sådan at man kan slette ting i en database ud fra checkboxe, men kan ikke få det til at virke. Checkbox data kommer fra en database. Jeg ligger lidt kode så i kan se hvad jeg mener.

Først har vi siden med checkboxe:

(det skal lige siges at jeg ikke har særlig meget styr på php så bær over med mig :))

<?php
//gæstebog
mysql_connect("server", "bruger", "pass");
mysql_select_db("database");
$resultat = mysql_query("select navn from database order by navn");
while ($raekke = mysql_fetch_array($resultat)) {
extract($raekke);
?>
<form name="navn" action="del.php" method="post">
<input type="checkbox" name="navn"><?php print "$navn"; ?><br><?php } ?>
<input type="submit" value="Slet indlæg">
</form>

Derefter sender den dig videre til del.php som skulle slette de markerede checkboxe fra databasen. Del.php ser sådan ud:

<?php
mysql_connect("server", "bruger", "pass");
mysql_select_db("database");
//$navn = $_POST['navn']; udkommenteret, hvorfor kan jeg ikke huske.
$updateSQL = "DELETE from database where navn='$_REQUEST[navn]'";
mysql_query($updateSQL);
print "Opdaterer databasen, vent venligst!";
print "<script>document.location.href='slet.php';</script>";
?>

Nogen ide om hvad jeg skal gøre for at få det til at virke? :D
Avatar billede sukos Juniormester
14. marts 2005 - 11:19 #1
Du giver kun din checkbox et navn, ikk en value!

<form action="del.php" method="post">
<?php
while ($raekke = mysql_fetch_array($resultat)) {
echo"<input type=\"checkbox\" name=\"db_name[]\" value=\"". $raekke[navn"] ."\">". $raekke[navn"] ."<br />\n";
}
?>
<input type="submit" value="Slet">

her bruges så [] i "name", for at få et array at lege med!!!

del.php

foreach($_POST["db_name"] as $del_navn) {
mysql_query("DELETE FROM `database` WHERE `navn` = '". $del_navn ."'") or die (mysql_error());
}
Avatar billede sukos Juniormester
14. marts 2005 - 11:20 #2
Hov, mangler selvf. en " i
$raekke[navn"]

Skal være
$raekke["navn"]
Avatar billede flappen Nybegynder
14. marts 2005 - 11:46 #3
Hmmm forstår ikke helt det sidste i det du har skrevet...altså det med foreach...
Avatar billede sukos Juniormester
14. marts 2005 - 11:50 #4
Ved at give din checkbox et navn med [] tilsidst, får du et array
Derfor kan du bruge en foreach() til at slette i DB
Avatar billede flappen Nybegynder
14. marts 2005 - 11:53 #5
okay...fatter jeg godt nok ikke så meget af...har prøvet lidt og den melder ingen fejl og sletter heller ikke i db´en.. Her er koden til de 2 sider efter opdatering med det du skrev..

<?php
mysql_connect("localhost", "root", "snickers");
mysql_select_db("gb");
$resultat = mysql_query("select navn from gb order by navn");
//while ($raekke = mysql_fetch_array($resultat)) {
//extract($raekke);
?>
<form action="del.php" method="post">
<?php
while ($raekke = mysql_fetch_array($resultat)) {
echo"<input type=\"checkbox\" name=\"gb[]\" value=\"". $raekke["navn"] ."\">". $raekke["navn"] ."<br />\n";
}
?>
<input type="submit" value="Slet">
</form>

Del.php:

<?php
mysql_connect("localhost", "root", "snickers");
mysql_select_db("gb");
foreach($_POST["gb"] as $del_navn) {
mysql_query("DELETE FROM `gb` WHERE `navn` = '". $del_navn ."'") or die (mysql_error());
}
print "Opdaterer databasen, vent venligst!";
print "<script>document.location.href='slet.php';</script>";
?>
Avatar billede flappen Nybegynder
14. marts 2005 - 11:53 #6
lol nice.. :D
Avatar billede sukos Juniormester
14. marts 2005 - 12:07 #7
?
virker det eller virker det ikke?

<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post">
<?php
for($i = 1; $i <= 5; $i++) {
echo"<input type=\"checkbox\" name=\"mycheckbox[]\" value=\"". urlencode("Navn ". $i) ."\">Navn ". $i ."<br>\n";
}
?>

<input type="submit" value="Vis">
</form>

<?php
if(isset($_POST["mycheckbox"])) {
    foreach($_POST["mycheckbox"] as $vaerdi) {
    echo urldecode($vaerdi) ." blev valgt.<br>\n";
    }
}
?>
Avatar billede flappen Nybegynder
14. marts 2005 - 12:11 #8
Sorry men er slet ikke med, men koden virker ikke indtil videre. Hvad er den kode til, du lige har skrevet?
Avatar billede sukos Juniormester
14. marts 2005 - 12:26 #9
Den er blot et testeksempel på brugen af [] som name i en form
Prøv den af!
Du kan også prøve denne, som del.php

<?php

if(isset($_POST["gb"])) {
    if(is_array($_POST["gb"])) {

        foreach($_POST["gb"] as $del_navn) {
        echo"DELETE FROM `gb` WHERE `navn` = '". $del_navn ."'<br>";
        }

    }else{
    echo"_POST[\"gb\"] er IKKE at array!";
    }
}
?>
Avatar billede flappen Nybegynder
14. marts 2005 - 12:32 #10
Smider du lige et svar? :)
Avatar billede sukos Juniormester
14. marts 2005 - 12:35 #11
Kan jeg godt! :O)

B.t.w. kender en fyr vi kalder for "flap"
Fordi han har store ører! :O)
Har du osse det? :O)))))
Avatar billede sukos Juniormester
14. marts 2005 - 12:36 #12
Hov!
Avatar billede sukos Juniormester
14. marts 2005 - 12:38 #13
Og forresten, hvis der kan forekomme mellemrum i navn, elelr danske speciel tegn, så brug
urlencode($raekke["navn"]) som value
og urldecode($del_navn) når du sletter
Avatar billede flappen Nybegynder
14. marts 2005 - 12:46 #14
hehe jeg har ikke store øre....skulle bare bruge et navn :D
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