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!
Carnie Geschrieben 8. Januar 2007 Geschrieben 8. Januar 2007 Als erstes mal die Eisntellung register_globals checken.
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...
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?
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!
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!
TiMmEkK Geschrieben 9. Januar 2007 Autor Geschrieben 9. Januar 2007 doch, so wie monty geschrieben hat funktioniert es ganz gut!
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.
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
hasnoname Geschrieben 9. Januar 2007 Geschrieben 9. Januar 2007 das sagen sich die oracle menschen wahrscheinlich auch immer *scnr*
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.
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
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...
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...
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden