Avatar billede menthos Nybegynder
31. maj 2004 - 23:03 Der er 24 kommentarer og
1 løsning

slet breve

jeg har lavet et burgersystem så man ka sende breve til hinanden. og i indbakke ligger der så 5breve på hver side og de har hver en checkbox, så kan man trykke marker alle og derefter slet markerede. så skal den slette dem der er checked men problemet er hvordan jeg får slettet de breve der er checked... tabellen ser sådan ud:

CREATE TABLE `dating_pm` (
  `id` int(11) NOT NULL auto_increment,
  `fra` varchar(255) NOT NULL default '0',
  `til` varchar(255) NOT NULL default '0',
  `tid` int(11) NOT NULL default '0',
  `laest` tinyint(4) NOT NULL default '0',
  `emne` varchar(255) NOT NULL default '',
  `tekst` text NOT NULL,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=9 ;
Avatar billede Slettet bruger
31. maj 2004 - 23:07 #1
Indeholder checkboksene id'erne på brevene?

Så er det bare

DELETE FROM dating_pm WHERE ID = $id

- cirka.. ;)
Avatar billede Slettet bruger
31. maj 2004 - 23:13 #2
Hvis du viser lidt mere detaljeret fra din source osv, kan jeg måske give et lidt mere detajleret svar.. ;)
Avatar billede dennismp Nybegynder
31. maj 2004 - 23:47 #3
<input type="checkbox" name="delete[]" value="32"> mail fra..
<input type="checkbox" name="delete[]" value="39"> mail fra..

i php

<?php
if( isset($_POST['delete']) && is_array($_POST['delete']) ) {
  $ids = array();
  foreach($_POST['delete'] as $id ) {
    $ids[] = addslashes($id);
  }

  $sql = 'DELETE FROM dating_pm WHERE id IN (' . join(',',$ids) . ') '.
        ' AND til = 'brugernavn' ";

  .. osv
}

den ekstra SQL linje med and, sørger for at man kun kan slette beskeder der er sendt til een selv (så man ikke kan fuske med formen og så slette andre folks beskeder).
Avatar billede menthos Nybegynder
01. juni 2004 - 00:36 #4
DELETE FROM dating_pm WHERE id IN (' . join(',',Array) . ') '. ' AND til = 'Menthos'
der er vidst en fejl i array'et
Avatar billede menthos Nybegynder
01. juni 2004 - 00:39 #5
jeg fandt selv ud af det :)
dennismp:
tak... svar så får du points :)
du er sq go til det php :) det er sq godt jeg har haft dig til at hjælpe :)
Avatar billede menthos Nybegynder
01. juni 2004 - 00:46 #6
hmmm scriptet virker vidst stadig ik :S
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''. ' AND til = 'Menthos'' at line 1
Avatar billede menthos Nybegynder
01. juni 2004 - 00:49 #7
jeg har rettet fejl, bortset fra den kun sletter en af de markerede beskeder istedet for alle :(
Avatar billede dennismp Nybegynder
01. juni 2004 - 01:20 #8
Mange laver det "marker alle" som et lille bid javascript der klarer det. Men du kan godt lave det uden..

du kan fx lave en

<input type="checkbox" name="delete_all"> Slet alle beskeder

og så i koden

if( isset($_POST['delete_all']) ) {
  $sql = "DELETE FROm dating_pm WHERE til = 'brugernavn'";
  ...
}
elseif( isset($_POST['delete']) && is_array($_POST['delete']) ) {
..
}
Avatar billede menthos Nybegynder
01. juni 2004 - 01:27 #9
jeg har en marker alle.... men selvom alle er markeret sletter den kun en og hvis to er markeret sletter den også kun 1...
Avatar billede menthos Nybegynder
01. juni 2004 - 01:29 #10
<script type="text/javascript">
  function checkAll(frm) {
      for (i=0;i<frm.length;i++) {
          if (frm.elements[i].type == "checkbox" || frm.elements[i].type == "radio") {
              frm.elements[i].checked = true;
          }
      }
  }
</script>
<a href="#" onclick="if(confirm('Er du sikker på du vil slette markerede breve?'))document.indbakke.submit();">Slet markerede</a> | <a href="java script:checkAll(this.form);">Marker alle</a>
Avatar billede dennismp Nybegynder
01. juni 2004 - 01:29 #11
Hvordan ser din kode (der har med dette at gøre) ud?

og din html fra formen?
Avatar billede dennismp Nybegynder
01. juni 2004 - 01:33 #12
Har du husket at checkbox'ene skal hedde delete[] og ikke bare delete?
Avatar billede menthos Nybegynder
01. juni 2004 - 01:35 #13
formen:
<form method="post" action="indbakke.php" name="indbakke" onsubmit="return false;">
<input type="button" value="check alle" onclick="checkAll(this.form);" />
knappen skulle gerne fjernes men lige nu virker mit link: <a href="java script:checkAll(this.form);">Marker alle</a> ikke :(

checkboxene:
<input name='delete[]' type='checkbox' value='$id'>
Avatar billede dennismp Nybegynder
01. juni 2004 - 01:44 #14
Så de bliver slet ikke checked?

Men det virker heller ikke, hvis du check'er to af? så bliver kun een slettet?
Avatar billede menthos Nybegynder
01. juni 2004 - 01:46 #15
lige meget hvor mange jeg checker af blir kun den første slettet :(
Avatar billede dennismp Nybegynder
01. juni 2004 - 01:56 #16
prøv at tilføje de linjer i din kode, som jeg har tilføjet i "min".. Så kan vi se hvad $_POST, $_ids og $sql indeholder..

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

  print "POST: <pre>"; print_r($_POST['delete']); print "</pre>"; // <-- tilføj

  $ids = array();
  foreach($_POST['delete'] as $id ) {
    $ids[] = addslashes($id);
  }

  print "ids: <pre>"; print_r($ids); print "</pre>"; // <-- tilføj

  $sql = 'DELETE FROM dating_pm WHERE id IN (' . join(',',$ids) . ') '.
        ' AND til = 'brugernavn' ";
  print "SQL: $sql</br>";  // <-- tilføj

}
Avatar billede dennismp Nybegynder
01. juni 2004 - 01:56 #17
når du har gjort det prøver du at slette en masse mails.. og paster outputtet her
Avatar billede menthos Nybegynder
01. juni 2004 - 09:46 #18
POST:
Array
(
    [0] => 13
    [1] => 12
    [2] => 11
)

ids:
Array
(
    [0] => 13
    [1] => 12
    [2] => 11
)

SQL: DELETE FROM dating_pm WHERE id IN (' 13,12,11 ') AND til = 'Menthos'
Avatar billede dennismp Nybegynder
01. juni 2004 - 12:44 #19
Ok - hvordan ser det kode ud der det SQL?
Avatar billede menthos Nybegynder
01. juni 2004 - 15:11 #20
den melder ingen sql fejl men sletter kun den første i rækken
Avatar billede dennismp Nybegynder
01. juni 2004 - 15:36 #21
Du har en linje i stil med:
  $sql = 'DELETE FROM dating_pm WHERE id IN (' . join(',',$ids) . ') '.
        ' AND til = 'brugernavn' ";

Hvordan ser din linje ud?
Avatar billede menthos Nybegynder
01. juni 2004 - 16:16 #22
$sql = "DELETE FROM dating_pm WHERE id IN (' ".join(',',$ids)." ') AND til = '".$_SESSION['s_navn']."' ";
Avatar billede dennismp Nybegynder
01. juni 2004 - 16:26 #23
$sql = "DELETE FROM dating_pm WHERE id IN (".join(',',$ids).") AND til = '".$_SESSION['s_navn']."' ";

eller (hvis du gerne vil have ' rundt om alle værdierne

$sql = "DELETE FROM dating_pm WHERE id IN (' ".join("','",$ids)." ') AND til = '".$_SESSION['s_navn']."' ";
Avatar billede menthos Nybegynder
01. juni 2004 - 18:27 #24
fedt nok... det virker nu :)
svar så får du points :)
Avatar billede dennismp Nybegynder
01. juni 2004 - 19:27 #25
svar :)
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