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();
} |
|