TiMmEkK Geschrieben 8. Januar 2007 Geschrieben 8. Januar 2007 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! Zitieren
Carnie Geschrieben 8. Januar 2007 Geschrieben 8. Januar 2007 Als erstes mal die Eisntellung register_globals checken. Zitieren
Monty82 Geschrieben 8. Januar 2007 Geschrieben 8. Januar 2007 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... Zitieren
incredible_ente Geschrieben 8. Januar 2007 Geschrieben 8. Januar 2007 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? Zitieren
TiMmEkK Geschrieben 8. Januar 2007 Autor Geschrieben 8. Januar 2007 wow. es geht so wie monty meinte! vielen dank! und wofür war das register globals? das hab ich schon von mehreren gehört! Zitieren
hasnoname Geschrieben 8. Januar 2007 Geschrieben 8. Januar 2007 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! Zitieren
TiMmEkK Geschrieben 9. Januar 2007 Autor Geschrieben 9. Januar 2007 doch, so wie monty geschrieben hat funktioniert es ganz gut! Zitieren
hasnoname Geschrieben 9. Januar 2007 Geschrieben 9. Januar 2007 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. Zitieren
TiMmEkK Geschrieben 9. Januar 2007 Autor Geschrieben 9. Januar 2007 kann sein! aber das ist ein anderes problem nun funktioniert es ja so wie ich will Zitieren
hasnoname Geschrieben 9. Januar 2007 Geschrieben 9. Januar 2007 das sagen sich die oracle menschen wahrscheinlich auch immer *scnr* Zitieren
TiMmEkK Geschrieben 9. Januar 2007 Autor Geschrieben 9. Januar 2007 oracle kenn ich nicht mal Zitieren
diiimo Geschrieben 16. Januar 2007 Geschrieben 16. Januar 2007 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. Zitieren
TiMmEkK Geschrieben 16. Januar 2007 Autor Geschrieben 16. Januar 2007 nene.... ist nur bei uns intern! ista uch nichts schlimmes, was damit angerichtet werden kann Zitieren
hasnoname Geschrieben 16. Januar 2007 Geschrieben 16. Januar 2007 na wenn die ganze telekom so arbeitet, dann gute nacht, kein wunder dass da nie was geht... Zitieren
TiMmEkK Geschrieben 16. Januar 2007 Autor Geschrieben 16. Januar 2007 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... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.