Avatar billede storkie Nybegynder
28. juli 2004 - 14:22 Der er 10 kommentarer og
2 løsninger

Slette flere på en gang

Jeg alle rækkerne op sådan her:
$query = mysql_query("SELECT * FROM tabel");
while($row = mysql_fetch_array($query)){
echo "<checkbox name=\"slet\" value=\"row[id]\">
}

det poster jeg så ganske normalt til en side, men når jeg ber' den om at slette test sletter den kun den med højeste id:

$slet = $_POST['slet'];
mysql_query("DELETE FROM tabel WHERE id = '$slet'");

Hvordan får jeg php til at slette alle de markerede?
Avatar billede storkie Nybegynder
28. juli 2004 - 14:24 #1
prøver lige igen:

Jeg lister alle rækkerne op sådan her:
$query = mysql_query("SELECT * FROM tabel");
while($row = mysql_fetch_array($query)){
echo "<checkbox name=\"slet\" value=\"row[id]\">
}

Det poster jeg så ganske normalt til en side, men når jeg ber' den om at slette $slet sletter den kun den med højeste id:

$slet = $_POST['slet'];
mysql_query("DELETE FROM tabel WHERE id = '$slet'");

Hvordan får jeg php til at slette alle de markerede?
Avatar billede sone Nybegynder
28. juli 2004 - 14:43 #2
hvis du skal slette flere enkelt-rækker så skal du ende op med:
mysql_query("DELETE FROM tabel WHERE id='x' OR id='y' OR id='z'"); // osv.

Du skal løbe $_POST['slet'] igennem, og danne WHERE delen af din SQL-streng.
Avatar billede storkie Nybegynder
28. juli 2004 - 14:48 #3
Problemet er at $slet kun indeholder en id
Avatar billede storkie Nybegynder
28. juli 2004 - 14:49 #4
Tænkte at man kunne lave et array af alle id'erne
Avatar billede sone Nybegynder
28. juli 2004 - 14:51 #5
Hvis du ændre name="slet" til name="slet[]" så bliver slet et array.
Avatar billede storkie Nybegynder
28. juli 2004 - 14:53 #6
hvordan skal jeg så få dem alle frem i den modtagende side?
med array() ik? men hvodan?
Avatar billede sone Nybegynder
28. juli 2004 - 14:54 #7
de er automatisk et array:
sletArray = $_POST['slet'];
Avatar billede storkie Nybegynder
28. juli 2004 - 14:57 #8
$slet = $_POST['slet']; viser Array
Avatar billede sone Nybegynder
28. juli 2004 - 15:00 #9
jep, så skal du bladre dit array igennem og danne WHERE-delen af din SQL
Avatar billede storkie Nybegynder
28. juli 2004 - 15:03 #10
hvordan?
array($slet){
mysql halløj
}

kan du give et eks.?
Avatar billede storkie Nybegynder
28. juli 2004 - 15:09 #11
Forstår godt hvad du mener, men ved ikke hvordan jeg skal gøre det.
Avatar billede sone Nybegynder
28. juli 2004 - 15:49 #12
Noget a'la:

$where = '';
for ($i=0; $i<count($slet); $i++) {
  $where .= "id='".$slet[$i]."' OR ";
}
$where = substr($where, 0, -3);
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