Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » löschen mit radio Button Antworten
löschen mit radio Button

mariep
Pixelschubser


Beiträge: 24


ich brauche schon wieder Hilfe, ich versuche gerade daten aus der DB zu löschen , durch click auf das radio B. , es kommt keine Fehlermeldung aber es löscht auch nicht !

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27:
for ($i = 0; $i < $num; $i++) {
        $row = mysql_fetch_array($result);
  echo '
<tr>
<td>'.$row[k_ID].'</td>
<td>'.$row[nameK].'</td>
<td>'.$row[vornameK].'</td>
<td>'.$row[strasse].'</td>
<td>'.$row[plz].'</td>
<td>'.$row[stadt].'</td>
<td>'.$row[land].'</td>
<td><input type="checkbox" name="delete[]" value ="$row[k_ID]"></td>
</tr>';

}
echo '</table>';
echo '<input type="submit" value="Kunde Löschen" name="loeschen">';


if (isset($_POST['loeschen'])){

$kid = $_POST['delete[]'];

$del = "delete from kunde where k_ID = '$kid'";
$res =mysql_query($del);
echo mysql_error();
}

Diese Nachricht wurde geändert von: mariep
  Profil   E-Mail   Editieren   Zitieren

NetDrag
Foren-Team


Beiträge: 461


versuch mal mit echo $del die query auszugeben, da müßtest dann entdecken was net stimmt.
das problem liegt am kid array, des kannst du so nicht einer query übergeben

---
We are born wet, naked and hungry, then things got worse!

Diese Nachricht wurde geändert von: NetDrag
  Profil   Website   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


error_reporting(E_ALL) an?

Ansonsten solltest du dein Post-Feld erst mal durch mysql_real_escape_string jagen damit da keiner Mist einschleust.
Nen Fehler im SQL seh ich jetzt so gerade nicht, aber es ist normalerweise so, dass man SQL-Schlagwörter groß schreibt.

Hast du schon mal nachgeschaut, ob im Quelltext überhaupt die ID im Value drinsteht?

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

mariep
Pixelschubser


Beiträge: 24


es kommt nicht mal bis dahin, ich habe gleich nach " if (isset($_POST['loeschen'])){ "
eine test Ausgabe gemacht : echo "test";, Es kommt leider nicht raus !


  Profil   E-Mail   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


Und du hast das Formular auch abgeschickt? ;)

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

subjective
Forenheld


Beiträge: 848


Der Fehler liegt bei: $kid = $_POST['delete[]'];

Gibt man im HTML Feldnamen in der Form delete[] an, erzeugt PHP daraus ein Array. Da du nun in einer Schleife die Checkboxen ausgibst (es sind keine Radios *btw*), kannst du auf der HTML-Seite auch mehrere auswählen, welche der Browser dann alle übermittelt. Im Umkehrschluß muss man also auch in PHP mit einem Array arbeiten.

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8:
if (isset($_POST['delete']) && is_array($_POST['delete']) && count($_POST['delete']) > 0) {
  $ids = '';
  foreach($_POST['delete'] as $kid) {
    $ids .= ','.(int)$kid;
  }
  $sql = "DELETE FROM kunde WHERE k_ID IN ('".substr($ids, 1)."')";
}


---
Weaverslave

  Profil   Website   Editieren   Zitieren

mariep
Pixelschubser


Beiträge: 24


error_reporting(E_ALL) gibt so was raus "Notice: Use of undefined constant k_ID - assumed 'k_ID' in ...line " aber k_ID wird trotzdem ausgegeben. k_ID=1.

Ich habe das Formular auch abgeschickt. Es tut nicht!
Ich habe auch die Korrektur gemäß @von subjective, immer nichts, es kommt gar nicht mal in der If -Abfrage rein.

  Profil   E-Mail   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


gib mal den link zu der Seite.

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

raiserle
Fachidiot


Beiträge: 144


kann es sein, das du das formular per get übergibst.
dann würden deine ganzen vars in der adresszeile drin stehn, aber sehr schlecht mit
arrays machbar ;)

desweiteren die zeile 22:
wieso steht da $_POST['delete[]']??
wenn du der anderen var das array von array delete zuweien willst, musste das aber
auch schon machen

$kid=array();
$kid = $_POST['delete'];

und das von subjective muss doch fuktionieren

noch was hilfreiches
print_r($_POST);

---
Irren is Menschlich

Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!

Kameradschaft ist, wenn der
Kamerad schafft !!!!

Diese Nachricht wurde geändert von: raiserle
  Profil   E-Mail   Website   Editieren   Zitieren

mariep
Pixelschubser


Beiträge: 24


Ich arbeite noch auf die Platte C.
hier ist der gesamt Quellecode !

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
51: 
52: 
53: 
54: 
55: 
56: 
57: 
58: 
59: 
60: 
61: 
62: 
63: 
64: 
65: 
66: 
67: 
68: 
69:
 <?php
header("cache-Control: no-cache, must-revalidate");
session_name('OnlineA');
session_start();
include ("verbinden.php");
?>
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<title>Kunde</title>
</head>
<body bgcolor="#9FC0FD">
<form action="<?php echo $_SERVER['PHP_SELF']; ?>">
<?php
// error_reporting(E_ALL);
$query = "select * from kunde";
$result = mysql_query($query);

$num = mysql_numrows($result);
echo "$num Kunde gefunden
";
echo '

<table border>
<tr><td>k_ID</td><td>Name</td><td>Vorname</td><td>Firma:</td><td>Strasse</td><td>PLZ</td><td>stadt</td><td>land</td><td>Löschen</td></tr>';
for ($i = 0; $i < $num; $i++) {
        $row = mysql_fetch_array($result);
echo '
<tr>
<td>'.$row[k_ID].'</td>
<td>'.$row[nameK].'</td>
<td>'.$row[vornameK].'</td>
<td>'.$row[nameFirma].'</td>
<td>'.$row[strasse].'</td>
<td>'.$row[plz].'</td>
<td>'.$row[stadt].'</td>
<td>'.$row[land].'</td>
<td><input type="checkbox" name="delete" value ="'.$row[k_ID].'"></td>
</tr>';

}
echo '</table>';

//echo $row[k_ID];

 error_reporting(E_ALL);

echo $row[k_ID];

if (isset($_POST['loeschen'])){
  //echo "test"; // wird nicht ausgegeben
if (isset($_POST['delete']) && is_array($_POST['delete']) && count($_POST['delete']) > 0) {
    $ids = '';
  foreach($_POST['delete'] as $kid) {
    $ids .= ','.(int)$kid;

  }
  $sql = "DELETE FROM kunde WHERE k_ID IN ('".substr($ids, 1)."')";
  $res =mysql_query($sql);

}
 echo mysql_error();
}
 mysql_close($db);
?>
<input type="submit" value="Kunde Löschen" name="loeschen">
</form>
</body>
</html>

Diese Nachricht wurde geändert von: mariep
  Profil   E-Mail   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


Lass doch mal das isset ueber loeschen weg. Das ist ja jetzt ueberfluessig durch die Abfrage fuer delete.

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

mariep
Pixelschubser


Beiträge: 24



ich habe Isset über löschen weggenommen, so was habe ich jetzt raus:
Notice: Undefined index: loeschen in C:\Programme

Diese Nachricht wurde geändert von: mariep
  Profil   E-Mail   Editieren   Zitieren

subjective
Forenheld


Beiträge: 848


isset() ist schon richtig. Man muß auch prüfen ob die Variablen überhaupt gesetzt sind.

Die andere Fehlermeldung kommt von den fehlenden Quotes um die Arrayschlüssel bei $row - das sind nämlich Stringkonstanten. Also genau wie auch das 'loeschen' in $_POST.


---
Weaverslave

Diese Nachricht wurde geändert von: subjective
  Profil   Website   Editieren   Zitieren

raiserle
Fachidiot


Beiträge: 144


zeile 38:
1:
<td><input type="checkbox" name="delete" value ="'.$row[k_ID].'"></td>

sollte doch ein array werden, der delete
also machs auch
1:
<td><input type="checkbox" name="delete[]" value ="'.$row[k_ID].'"></td>


so, wenn das dann so machst, sollte es auch gehen

---
Irren is Menschlich

Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!

Kameradschaft ist, wenn der
Kamerad schafft !!!!

  Profil   E-Mail   Website   Editieren   Zitieren

raiserle
Fachidiot


Beiträge: 144


nochwas...
benutze doch, wenn du dir nicht sicher bist, was in den vars steht
print_r();
in deinem fall
print_r($_POST);

wenn du das gemacht hättest, wäre dir aufgefallen, das $_POST['delete'] kein array
ist. desweiteren sollte doch ein fehler bei der foreach kommen , da
ja dort kein array drin steht ....

gruß raiserle

---
Irren is Menschlich

Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!

Kameradschaft ist, wenn der
Kamerad schafft !!!!

  Profil   E-Mail   Website   Editieren   Zitieren
Seite 1 | 2  

Antworten
Nach oben