blola: Datenbankeinträge per php modifizieren

Hallo!
Versuche Datenbankeinträge per php zu modifizieren. Leider werden die geänderten Daten nach "speichern" nicht in der Tabelle eingefügt.
Kann mir dabei jemand helfen?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
      <title>Forum</title>
      <link rel="stylesheet" type="text/css" href="Style.css" >
</head>
<body>

<?php
$op = $_GET["op"];
$ID = $_GET["m"];

$user ='WEGWI_WS0910';
$pass= 'pwWEGWI_WS0910';

try{
$dbh = new PDO('mysql:host=localhost; dbname=DB_WEGWI_WS0910', $user, $pass);

}
catch (PDOException $e)
{print "Error!: " .$e->getMessage();

}

if( $op == "delete") {
$stmt = $dbh->query ('DELETE FROM fs_wf_forum WHERE ID = '.$ID);
}

if( $op == "modify\_input" ){  
   $sql = ('SELECT BEITRAG,AUTHOR,KURZBESCHREIBUNG,DATUM,Kategorien FROM fs\_wf\_forum WHERE ID=' . $ID);  
	 //echo $sql;  
   $stmt = $dbh->query( $sql );  
	 if( $row = $stmt->fetch(PDO::FETCH\_OBJ) ) {  

}
?>
  <form action="Index.php" method="get">
 <input type="hidden" name="op" value="modify" />
<fieldset>
<caption>Beitrag modifizieren:</caption><br />
 <table>
 <p>Nummer=<input type="text" name="id" value="<?php echo $row->ID?>"></p>
 <p>Beitrag=<input type="text" name="beitrag" value="<?php echo $row->BEITRAG?>"></p>
 <p>Author=<input type="text" name=" author" value="<?php echo $row->AUTHOR?>"></p>
 <p>Kurzbeschreibung=<input type="text" name="kurz" value="<?php echo $row->KURZBESCHREIBUNG?>"></p>
 <p>Datum=<input type="text" name="datum" value="<?php echo $row->DATUM?>"></p>
 <p>Kategorie=<input type="text" name="kat" value="<?php echo $row->Kategorien?>"></p>
 <select>
 <option>1</option>
  <option>2</option>
  <option>3</option>

</select>

<input type="submit" name="modify" value="Speichern"></button>
 <input type="submit" name="Abbrechen" value="Abbrechen"></button>

</table>
 </fieldset>
  </form>
<?php
}

?>

<table border="1">
<caption>Das KochForum</caption>
<thead>

<td> Nummer</td>
    <td>Beitrag</td>
    <td>Author</td>
    <td>Kurzbeschreibung</td>
    <td>Datum</td>
    <td>Kategorie</td>

</thead>
<?php
if ( $op == "modify" )
{
   $SQL= "UPDATE fs_wf_forum Set ".

 "Beitrag ='". $\_GET["beitrag"]."',".  
 " Author ='". $\_GET["author"]."',".  
 " Kurzbeschreibung ='". $\_GET["kurz"]."'".  
 " Datum ='". $\_GET["datum"]."'".  
 " Kategorie ='". $\_GET["kat"]."'".  
  
  "WHERE ID= " .$\_GET["id"];  
 echo $SQL;  
 $dbh->query ($SQL);  

}

?>

<?php

$stmt = $dbh->query ('SELECT ID, BEITRAG, AUTHOR, KURZBESCHREIBUNG, DATUM,Kategorien  FROM fs_wf_forum ');

while( $row = $stmt->fetch(PDO::FETCH_OBJ))
{

echo '<tr><td align="center" valign="middle">'.$row->ID.'</td><td align="center" valign="middle">'.$row->BEITRAG.' </td><td align="center" valign="middle"> '.$row->AUTHOR. ' </td><td align="center" valign="middle">  '. $row->KURZBESCHREIBUNG. '  </td><td align="center" valign="middle">  '.$row->DATUM.' </td><td align="center" valign="middle"> '. $row->Kategorien. '</td><td align="center" valign="middle"><a href="Index.php?op=modify_input&m='.$row->ID.'">Ändern!</a></td><td align="center" valign="middle"><a href="Index.php?op=delete&m='.$row->ID.'">Löschen!</a></td></tr>';
  }

?>

</table>

</body>
</html>

  1. Hi!

    Versuche Datenbankeinträge per php zu modifizieren. Leider werden die geänderten Daten nach "speichern" nicht in der Tabelle eingefügt.
    Kann mir dabei jemand helfen?

    Vielleicht nicht so direkt, wie du dir das erhoffst. Üblicherweise haben die Wenigsten Lust, sich durch einen Haufen Code mit einer wenig detaillierten Fehlerbeschreibung zu hangeln. Was hast du bereits gemacht, um den Fehler zu finden? Ich sehe ein paar Kontrollausgaben der SQL-Statement-Strings - soweit so gut - aber was ist ihr Ergebnis, was hast du daraus entnommen und was sind deine konkreten Fragen dazu? Welche anderen Fehlermeldungen erhältst du?

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    Kürze Probleme auf das Wesentliche ein. Unrelevanter HTML-Code hilft beim Fehlersuchen wenig. Üblicherweise sinkt dadurch nur die Bereitschaft, sich mit deinem Problem zu beschäftigen.

    $op = $_GET["op"];
    $ID = $_GET["m"];

    Dieses Umkopieren ist meist wenig sinnvoll. Mit den zusätzlichen Variablen erhöhst du nur die Programmkomplexität und damit die Unübersichtlichkeit.

    try{
    $dbh = new PDO('mysql:host=localhost; dbname=DB_WEGWI_WS0910', $user, $pass);
    }
    catch (PDOException $e)
    {print "Error!: " .$e->getMessage();
    }

    An dieser Stelle reagierst du auf Fehler. Die Fehlermeldung an all deine Seitenbesucher zu geben und nicht nur an dich selbst, ist jedoch meist nicht sinnvoll.

    if( $op == "delete") {
    $stmt = $dbh->query ('DELETE FROM fs_wf_forum WHERE ID = '.$ID);
    }

    Allerdings interessierst du dich hier und bei den anderen Querys nicht mehr dafür, ob die Anweisung ordnungsgemäß ausgeführt werden konnte. Stattdessen fährst du so fort, als ob immer alles gut geht.

    Desweiteren solltest du die Kontextwechsel-Problematik beachten, um dir SQL-Injection und andere unschöne Fehler zu ersparen.

    Den Rest habe ich mir nicht mehr genau angesehen, denn ich bitte zunächst dich um weitere Vorarbeiten, das Problem einzukreisen. An welcher Stelle genau ist der Programmfluss nicht mehr so wie du ihn dir erhofft hast? Wie sagen die dafür notwendigen Variableninhalte und Ergebnisse von Ausdrücken? Mit var_dump() kannst du sie prüfen und erhältst die genaueste Ausgabe. (Das error_reporting steht auch auf E_ALL und display_errors auf on?)

    Lo!