WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik


Homepage und Webhosting-Forum

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.


Forum » PHP & MySQL » löschen mit radio Button » Antworten
Benutzername:
Passwort: Passwort vergessen?
Inhalt der Nachricht: Fett | Kursiv | Unterstrichen | Link | Bild | Smiley | Zitat | Zentriert | Quellcode| Kleiner Text
Optionen: Emailbenachrichtigung bei Antworten
 

löschen mit radio Button
von raiserle

war aber auch meine erste frage,
von mariep
Danke! es ist mir peinlich :$ . Der Fehler war method="post" einfach !!! Mehr musste ich nicht machen. Naja stolz bin ich nicht.
von raiserle
ähm
$num = mysql_numrows($result);
mysql_num_rows

und warum benutzt du ne for anstelle von while???
bei while brauchste keine zähler, was bei for zwingend ist...
aber da du eh das $i nicht brauchst??? warum

und ich schreibs dir nochmal hin...
du hättest, schon lange immer was bemerken müssen, wenn du mal mit print_r
guckst, was übergeben wird, wenn $_POST[loeschen] gestezt wurde...

da wäre dir aufgefalen das vielleicht nichts in $_POST drinsteht, oder vieleicht was verkehrtes
ähm und ich hatte dich gefragt mit was du das form übergibst... man sollte vieleicht explizit auch method="post" angeben -> zeile:13
von raiserle
und was gibt print_r($_POST) aus....
wenn du halt delete[] reinschreibst....
von mariep
es tut auch nicht ! ich hatte die [] bei delete entfernt um zu testen ob es auch daran liegen könnte.

LG,
die frustrierte
von raiserle
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
von raiserle
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
von subjective
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.
von mariep

ich habe Isset über löschen weggenommen, so was habe ich jetzt raus:
Notice: Undefined index: loeschen in C:\Programme
von languitar
Lass doch mal das isset ueber loeschen weg. Das ist ja jetzt ueberfluessig durch die Abfrage fuer delete.
von mariep
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>
von raiserle
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);
von languitar
gib mal den link zu der Seite.
von mariep
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.
von subjective
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)."')";
}
von languitar
Und du hast das Formular auch abgeschickt? ;)
von mariep
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 !

von languitar
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?
von NetDrag
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
von mariep
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();
}

Nach oben