Avatar billede rix Novice
30. marts 2010 - 06:49 Der er 10 kommentarer og
1 løsning

slette med checkbox i database

hej jeg er igang med at lave en besked system hvor man kan skrive til folk :D idet mangler jeg en system så de bruger der bruger systemet kan slette de beskeder som de ville med checkbox
men ved ikke hvordan jeg skal gøre da jeg udskriver de beskeder som de kan se sammelet hvis nogen kan hjælpe
jeg ved ikke hvad i skal bruge så jeg komme med det hele
i databasen har jeg dette
database navn battelkamp
tabelnavn besked
i kolonerne har jeg dette
id int
fra varchar
til varchar
emne varchar
besked varchar
alliance varchar
hvad de forskelige skal bruges til sige vel sig selv

her er de koder som bliver brugt

<?php
    require_once('auth.php');
        require_once('alliance.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>indbakke</title>
<link href="loginmodule.css" rel="stylesheet" type="text/css" />
</head>
<body>
<a href="beskedcontrol.php">tilbage</a>

<? $enenlink = mysql_connect("DB", "brugernavn", "kodenavn");
mysql_select_db("battelkamp", $enenlink);

$enenresult = mysql_query("SELECT * FROM besked WHERE til = '$nick'", $enenlink);
$enennum_rows = mysql_num_rows($enenresult);

$enenenbrugernavn = "$enennum_rows";

echo "$enennum_rows";
?>





beskeder i indbakken


dine beskeder
<?
$enenconnect = mysql_Connect("DB", "brugernavn", "kodeord");

mysql_select_db("battelkamp", $enenconnect);

$enenresult = mysql_query("SELECT * FROM besked WHERE til = '$nick' order by id DESC ", $enenconnect);

while($enenmyrow = mysql_fetch_row($enenresult)) {

?>
<table border="3" width="25%">
<colgroup span="10" align="center">
<tr>
  <td>slet??</td>
  <td></td>
<tr>
  <td colspan="2">besked fra spiller</td>
</tr>
<tr>
  <td> fra </td>
  <td><? echo $enenmyrow[1]; ?></td>
</tr>
<tr>
  <td>emne</td>
  <td><? echo $enenmyrow[3]; ?></td>
<tr>
  <td colspan="2">beskeden</td>
</tr>
<tr>
  <td colspan="10"><? echo $enenmyrow[4]; ?></td>
</tr>



<br>
<br>
<?
}
?>

</tabel>

</body>
</html>

jeg ville gerne have checkbokesen ved <tb></tb> under der hvor der står slet?? koden skal være PHP da min webhtel ikke har asp
håber nogen kan hjælpe
ps. det skal være mugligt at slette flre hvis det er mugligt
Avatar billede public2 Nybegynder
30. marts 2010 - 07:34 #1
Hej,

prøv evt. noget i retning af:

Din checkbox
<input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $enenmyrow['id']; ?>">
<input type="submit" name="Submit" value="Submit">

Din PHP / MySQL kode
<?
if(isset($_POST['Submit']))
{
for ($i=0; $i<count($_POST['checkbox']);$i++) {
$del_id = $_POST['checkbox'][$i];
$sql = "DELETE FROM $TABLENAME WHERE id='$del_id'";
$result = mysql_query($sql);
}
}
?>

Jeg har ikke lige testet koden, men den burde virke og ellers er det småting der skal tilpasses til din kode for at få det til at virke.

Princippet burde i hvert fald gælde.
Avatar billede rix Novice
30. marts 2010 - 08:19 #2
hej jeg synes ikke den ville det jeg ville endeten sletter den ingen ting eller også sletter den det hele kan det være mugligt at du indsat det for mig???
Avatar billede showsource Seniormester
30. marts 2010 - 08:52 #3
Det kan gøres lidt mere enkelt:

<input name="delete[]" type="checkbox" id="checkbox[]" value="<? echo $enenmyrow['id']; ?>">

<?php
if(isset($_POST["delete"]) && is_array($_POST["delete"])) {

$sql = "DELETE FROM tabel WHERE id IN (".implode(",", $_POST["delete"]).")";

mysql_query($sql) or die (mysql_error());

}

?>
Avatar billede public2 Nybegynder
30. marts 2010 - 08:55 #4
Prøv med noget i den her stil:

<?
$enenconnect = mysql_Connect("DB", "brugernavn", "kodeord");

mysql_select_db("battelkamp", $enenconnect);

if(isset($_POST['delete']))
{
for ($i=0; $i<count($_POST['checkbox']);$i++) {
$del_id = $_POST['checkbox'][$i];
$enenresult = mysql_query("DELETE FROM TABLENAME WHERE id='$del_id'", $enenconnect);
}
}

$enenresult = mysql_query("SELECT * FROM besked WHERE til = '$nick' order by id DESC ", $enenconnect);

while($enenmyrow = mysql_fetch_row($enenresult)) {

?>
<form action="." method="post">
<input type=hidden name="delete" value="delete">
<table border="3" width="25%">
<colgroup span="10" align="center">
<tr>
  <td><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $enenmyrow['id']; ?>"></td>
  <td></td>
<tr>
  <td colspan="2">besked fra spiller</td>
</tr>
<tr>
  <td> fra </td>
  <td><? echo $enenmyrow[1]; ?></td>
</tr>
<tr>
  <td>emne</td>
  <td><? echo $enenmyrow[3]; ?></td>
<tr>
  <td colspan="2">beskeden</td>
</tr>
<tr>
  <td colspan="10"><? echo $enenmyrow[4]; ?></td>
</tr>
<input type="submit" name="Submit" value="Submit">
</form>


<br>
<br>
<?
}
?>

</tabel>

</body>
</html>

Du skal dog være opmærksom på, at du selv skal ændre TABLENAME i querien og så ved jeg ikke hvordan dit ID ser ud i din tabel, så ændre også $enenmyrow['id'] i value på checkboxen så den får de rigtige ID'er fra hver besked.

Ellers er det egentlig bare, at du skal generere en checkbox for hver besked, med en værdi der svarer overens til hver beskeds ID. Når du så trykker submit, skal du fange den "$_POST" der kommer og indhente det array af id'er der er. Derefter løber din PHP kode en for-løkke igennem for hver ID (count) der er markeret og udfører den valgte kommando det antal gange, i dit tilfælde, en query der siger DELETE FROM TABELNAVN WHERE ID'ET er lig med $del_id, som er en variabel.
Avatar billede rix Novice
30. marts 2010 - 09:09 #5
nu er jeg forviret :D
jeg har ændret det du gjorde opmærksom på men den viser bare hvid???
har ikke så meget forstand på det du viser men min id er bare id så den skal jeg vel ikke ændre på
har du eller nogen andre forslag på hvorfor den bare bliver hvid ??
Avatar billede public2 Nybegynder
30. marts 2010 - 09:12 #6
Det er ikke så vigtigt om siden er hvid eller sort eller blå eller gul, det vigtigste er om du får fejl og om du kan gå ind i din database og se om beskederne du har markeret er blevet slettet.

Hvis ikke, så må du tage det trin for trin, måske starte med at udskrive indholdet af din $_POST[checkbox] for at se hvad den indeholder.
Avatar billede rix Novice
30. marts 2010 - 09:14 #7
fabdt ud af det :D men den gider bare ikke slette så det må jeg lige se på :D
Avatar billede public2 Nybegynder
30. marts 2010 - 09:16 #8
Hvis den ikke gider at slette det, så kan det være querien der ikke er helt korrekt sat op. Du kan evt. prøve at hardcode et ID ind for at se om den virker, i så fald skal det afsnit måske rettes til.

Alternativt kan det være, at den ikke får et korrekt array med af ID'er, det kan du tjekke ved at lave en echo på den for at se hvad den indeholder.
Avatar billede rix Novice
30. marts 2010 - 09:16 #9
fandt den mange tak for hjælpen hvis du ville have flere point må jeg lave endnu end tråd kun til det :D
Avatar billede public2 Nybegynder
30. marts 2010 - 09:21 #10
Hehe er kun glad for at det lykkes, og jeg takker mange gange for pointene, men du skal bestemt ikke give mig flere. Gem dem hvis der skulle komme yderligere spørgsmål :-)

God påske
Avatar billede rix Novice
30. marts 2010 - 09:25 #11
jo tak det var bare fordi du har hjælpet meget så hvis du ville have dem så synes jeg du har dem fortjent men mange tak jeg kan lige vise min fejl ved denne her <input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $enenmyrow['id'];
nærmer sagdt denne
<? echo $enenmyrow['id'];
glemte jeg at skrive 'id' om til 0 da jeg gjorde det virkede den
men endnu en gang tak
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