Suchen
Inside Forum
Nützliche Links
PHP Jobs
phpforum.de Tipp
 
phpforum.de bei Facebook
 
phpforum.de bei Twitter
 

Zurück   PHP Forum: phpforum.de > PHP > PHP

PHP Alles rund um PHP

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 31.03.2012, 15:38
PatrikB1985 PatrikB1985 ist offline
Besucher
 
Registriert seit: 24.03.2012
Beiträge: 43
Frage Datensatz löschen mit Markierung durch eine Checkbox

Guten Tag Community!
Ich will durch eine Checkbox Markierung einen bestimmten Datensatz löschen! Ich lese mit PHP die Datenbanktabelle dafür aus.

Hier mein jetziger Code:
PHP Quellcode:
<?php
session_start();
$checkbox = "<input type=\"checkbox\" name=\"fahrzeug\" value=\"". $row->Funkrufname ."\">";
$loeschen = "DELETE FROM links WHERE $checkbox";
if (isset($_SESSION["username"])) {
?> 
 
<html>
    <head>
        <meta name="Author" content="Author" />
        <link rel="stylesheet" type="text/css" href="fahrzeuguebersicht.css">
        <title>Fahrzeuguebersicht</title>
    </head>
    <body>
<div id="Anfang">
    <a href="Fahrzeugeingabe.php" name="Fahrzeugeingabe" target="_blank">Fahrzeugeingabe</a>
</div>
<div id="Fahrzeugliste">
<?php
$verbindung = mysql_connect("localhost", "root", "root")
or die ("Verbindung zum System konnte nicht Aufgebaut werden...");
                       
mysql_select_db("leitsoft")
or die ("Verbindung zur DB gescheitert...");

$abfrage = "SELECT * FROM fahrzeuge ORDER BY Funkrufname";
$ergebnis = mysql_query($abfrage);
    echo "<form method=\"POST\" action=\"Fahrzeuguebersicht.php\">";
    echo "<table id='Fahrzeuge'>";
    echo "<tr>" . "<td>" . Markieren. "</td>" . "<td>" . Funkrufname . "</td>" . "<td>" . Status . "</td>" . "<td>" . Einsatznummer . "</td>" . "<td>" . Alarmiert . "</td>" .
         "<td>" . Benutzer . "</td>" . "<td>" . Besetzt . "</td>" . "<td>" . Wache . "</td>" . "<td>" . Fahrzeugart . "</td>" . "<td>" . Fahrzeugmarke . "</td>" .
         "<td>" . Fahrzeugtyp . "</td>" . "<td>" . Kennzeichen . "</td>" . "<td>" . Indienststellung . "</td>" . "<td>" . Beldaung . "</td>" . "</tr>";
while ($row = mysql_fetch_object($ergebnis)) {
    echo "<tr>" . "<td>" . $checkbox . "</td>" . "<td>" . $row->Aktueller_status . "</td>" . "<td>" . $row->Einsatznummer . "</td>" . "<td>" . $row->Alarmiert . "</td>" .
         "<td>" . $row->Benutzer . "</td>" . "<td>" . $row->Besetzt . "</td>" . "<td>" . $row->Wache . "</td>" . "<td>" . $row->Fahrzeugart . "</td>" .
         "<td>" . $row->Fahrzeugmarke . "</td>" . "<td>" . $row->Fahrzeugtyp . "</td>" . "<td>" . $row->Kennzeichen . "</td>" . "<td>" . $row->Indienststellung . "</td>" .
         "<td>" . $row->Beladung . "</td>" . "</tr>";
    echo "<p />";
   
}
    echo "</table>";
    echo "<p />";
    echo "<input type=\"submit\" name=\"Loeschen\" value=\"Loeschen\">";
    echo "</form>";
mysql_close($verbindung);

if ($checkbox == 1) {
    $loeschen;
}
}?> 
</div>
<div id="Ende">
    <a href="../Leitstelle.php" name="Zurück zur Leitstelle">Zurueck</a>
</div>
    </body>
</html>


Ist der Code so in Ordnung???

LG Patrik
Mit Zitat antworten
  #2  
Alt 31.03.2012, 15:49
Gary Gary ist offline
Forum-Mitarbeiter
 
Registriert seit: 25.05.2004
Beiträge: 13.880
Standard AW: Datensatz löschen mit Markierung durch eine Checkbox

Zitat:
Ist der Code so in Ordnung???
Macht er das was du willst? Ich denke mal nicht. Also lautet die Antwort auf diese Frage ganz einfach: Nein.

Was fällt mir auf:
1. EVA-Prinzip missachtet.
2. Deine Löschabfrage wird nirgendwo ausgeführt.
3.
Standardantwort/FAQ:
Richtig debuggen
  1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
  2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
  3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
  4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
  5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
  6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
  7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
  8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
  9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

Die Ausgaben per var_dump oder echo kann man sich ersparen, in dem man einen Debugger benutzt.

Wiki Links:
Ausführliche Informationen zum Thema Debuggen
Dokumentationen und Tutorials in Tutorials

4.
Standardantwort/FAQ:
MySQL Fehlermeldungen werden normalerweise nicht angezeigt. Um sie trotzdem anzuzeigen, musst du eine Fehlerabfrage starten. Je nach eingesetzter MySQL-Zugriffsschicht geht dies mit einer der folgenden Funktionen:

mysqli: mysqli_error()
mysql (veraltet): mysql_error()
PDO: PDO::errorInfo(), bzw. PDOStatement::errorInfo()

Das kann dann z.B. so aussehen:
PHP Quellcode:
$sql = 'SELECT spalte FROM tabelle';
mysqli_query($db, $sql)
  or trigger_error('Fehler in Query "' . $sql . '". Fehlermeldung: ' . mysqli_error($db), E_USER_ERROR);
Schlägt eine Query jetzt fehl, so sorgt die Zeile mit trigger_error() und mysqli_error() dafür, dass wir sowohl die Query einmal genau so zu Gesicht bekommen, wie sie an die Datenbank geschickt wurde, als auch, dass wir die Fehlermeldung der Datenbank angezeigt bekommen. Durch den Parameter E_USER_ERROR wird die weitere Verarbeitung des Skriptes beendet.

Wenn Update- oder Replace-Abfragen fehl schlagen, ohne eine Fehlermeldung zu produzieren, dann ist oft auch der Rückgabewert der Funktionen mysqli_info oder mysql_info (veraltet) bei der Fehlersuche hilfreich.

Wurde der Fehler gefunden, behoben und die Seite geht in den Produktiveinsatz, so gilt es alle mysqli_error() wieder zu entfernen oder das error_reporting so einzustellen, dass Fehlermeldungen der Kategorie E_USER_ERROR nicht angezeigt werden.

Hinweise zum korrekten Debuggen findest du auch im phpforum.de Wiki: Debuggen

5.
Standardantwort/FAQ:
Dein Code ist anfällig für SQL Injections. Benutzereingaben (z.B. aus einem Formular oder aus der URL), dürfen niemals ungefiltert in SQL-Strings eingebaut werden. Ein Angreifer wäre sonst in der Lage aktiven Code in Dein SQL einzuschleusen. SQL Injections gehören zu den gefährlichsten und weitverbreitesten Fehlern bei Webanwendugen. Dabei ist ihre Vermeidung recht einfach. PHP stellt für jede unterstützte Datenbank eine Funktion zum Entschärfen von Benutzereingaben zur Verfügung.

Für mysqli erledigt das mysqli_real_escape_string() bzw. für die veraltete mysql-Extension mysql_real_escape_string().

Außerdem bieten die beiden neueren Extensions PDO und mysqli die Möglichkeit, prepared Statements zu verwenden. In diesem Fall kümmern sich PHP und die Datenbank selbst um das Maskieren von gefährlichen Sonderzeichen.

In unserem Wiki gibt es einen Artikel zu SQL Injections mit einem konkreten Beispiel.
__________________
Gary
=============================
Schreie nach Besserem, bis du es auch erhältst. Das noch Bessere verabschiedet sich rechtzeitig vor deinem Lärm.
© Martin Gerhard Reisenberg (*1949)
Mit Zitat antworten


Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu
Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
mp3 durch checkbox starten Fortmann PHP 19 02.07.2010 21:32
Markierung in Checkbox beibehalten mori PHP 10 06.06.2007 08:54
Datensatz löschen ,Checkbox & Array Problem BoZo PHP 14 02.06.2006 11:39
Durch Checkbox eine Zeile in html einfügen Gewissen JavaScript 2 30.01.2006 14:17
Datensatz über Checkbox löschen peacey PHP 4 03.01.2006 18:58


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:14 Uhr.


Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Powered by NuWiki v1.3 RC1 Copyright ©2006-2007, NuHit, LLC