Veröffentlicht 8. Januar 200718 j hey... habe mal nen Problem! mein script will einfach nicht den datensatz aus der mysqltabelle löschen! wo liegt hier der fehler? <html> <p align="center"> </p> <table border="1" cellpadding="3" cellspacing="3" style="border-collapse: collapse" bordercolor="#C0C0C0" width="800"> <tr> <td align="center" width="20"><b>ID</b></td> <td align="center" width="100"><b>Wann</b></td> <td align="center" width="40"><b>Vorname</b></td> <td align="center" width="40"><b>Nachname</b></td> <td align="center" width="100"><b>von</b></td> <td align="center" width="100"><b>bis</b></td> <td align="center" width="300"><b>Begründung</b></td> <td align="center" width="100"><b>löschen / bearbeiten</b></td> </tr> <? error_reporting(E_ALL); include ("config.inc.php"); $connect = @mysql_connect($host, $user, $password) OR die(mysql_error()); mysql_select_db($db, $connect) OR die(mysql_error()); $result = mysql_query("SELECT * FROM $db ORDER by zeit DESC",$connect) or die (mysql_error()); while($row = mysql_fetch_object($result)) { print '<tr>'; print '<td align="center" width="16">'.$row->ID.'</td>'; print '<td align="center" width="260">'.date("d.m.Y - H:i",$row->zeit).'</td>'; print '<td align="center" width="4">'.$row->vorname.'</td>'; print '<td align="center" width="6">'.$row->name.'</td>'; print '<td align="center" width="6">'.$row->datumvon.'</td>'; print '<td align="center" width="79">'.$row->datumbis.'</td>'; print '<td align="center" width="6">'.$row->statement.'</td>'; $ID = $row->ID; print '<td align="center" width="261"> <a href=auslesen.php?loeschen=1&ID='.$ID.'> <img src="gfx/b_drop.png" width="16" height="16"></a> || <a href=auslesen.php?action=bearbeiten&ID='.$ID.'><img src="gfx/b_edit.png" width="16" height="16"></a></td>'; print '</tr>'; } if ($loeschen == '1') { mysql_query("DELETE FROM $db WHERE ID = '$ID'",$connect) or die (mysql_error()); } mysql_close($connect); ?> </table> </body> </html>[/PHP] danke!
8. Januar 200718 j Und auf jeden Fall den übergebenen Wert vor der Verwendung im Query validieren und am besten zusätzlich noch maskieren: http://forum.fachinformatiker.de/skript-webserverprogrammierung/79449-php-datenbanksicherheit-strings.html In Deinem Beispiel würde ein if ($_REQUEST['loeschen'] == '1') { mysql_query("DELETE FROM $db WHERE ID = '".intval($_REQUEST['ID'])."'",$connect) or die (mysql_error()); } schon helfen...
8. Januar 200718 j DELETE FROM $db WHERE ID = '$ID' Hast du mal getestet ob das Query überhaupt funktionert? Direkt im phpMyAdmin und nimm einfach einen Beispiel Wert... Bin zwar ein Anfänger und mit PHP auf dem Kriegsfuss... Aber muss es nicht DELETE * FROM ... heissen?
8. Januar 200718 j wow. es geht so wie monty meinte! vielen dank! und wofür war das register globals? das hab ich schon von mehreren gehört!
8. Januar 200718 j irgendwie kann ich mir nocht vorstellen, dass dein code funktioniert, denn: mysql_select_db($db, $connect) mysql_query("DELETE FROM $db WHERE ID = '$ID'",$connect) fällt dir was auf? löschen tust du aus der tabelle, nicht aus der datenbank... ansonsten ist dein code extrem unübersichtlich und sicherheitsmäßig... naja null checks halt... zu register globals etc: PHP: Hypertext Preprocessor die php seite ist wirklich top!
9. Januar 200718 j hmm ich könnte mir vorstellen, dass man alternativ eben wie du ne db angeben kann, sofern eindeutig ist, was gemeint ist. aber wenn du z.b. 2 tabellen mit ner spalte ID in der db hast, woher soll mysql wissen, welcher eintrag gemeint ist? selbst wenn es funktioniert, es ist falsch und wird dir irgendwann mächtig probleme bringen.
9. Januar 200718 j kann sein! aber das ist ein anderes problem nun funktioniert es ja so wie ich will
16. Januar 200718 j Ich hoffe du lässt dieses Script nicht Öffentlich laufen, es wäre sonst möglich das jeder jeden Datensatz bei dir löschen kann, da du den Lösch Befehl inkl. id per Get übergibst.
16. Januar 200718 j nene.... ist nur bei uns intern! ista uch nichts schlimmes, was damit angerichtet werden kann
16. Januar 200718 j na wenn die ganze telekom so arbeitet, dann gute nacht, kein wunder dass da nie was geht...
16. Januar 200718 j hab ich gesagt, dass es für die telekom ist? man man man... es ist für ein paar azubis und mich ... stell dich mal nicht so an...
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.