anfänger: Tabellen editieren/löschen - id Problem

Hallo!

Kurze Info zu dem Ganzen:
Man kann Daten über ein Formular in die Datenbank schreiben.
Diese sich anzeigen lassen und nun möchte ich, dass man diese auch bearbeiten und löschen kann.

Und da stehe ich nun da mit meinem Problem:

Ich bekomm es leider nicht auf die Reihe, über die id einen Datensatz in der Datenbank zu löschen oder zu editieren.

Mein Code:
playeradmin.php

  
<table>  
  <tr>  
   <td width="5"><strong>ID</strong></td>  
   <td width="20"><strong>Spielername</strong></td>  
  <td width="20"><strong>Team</strong></td>  
  <td width="20"><strong>Formation</strong></td>  
  <td width="100"><strong>Taktik</strong></td>  
  <td width="20"><strong>Verbindung</strong></td>  
  <td width="200"><strong>Spielweise</strong></td>  
  <td width="100"></td>  
  <td width="100"></td>  
  
  </tr>  
  <tr>  
   <td></td>  
   <td></td>  
  <td></td>  
  <td></td>  
  <td></td>  
  <td></td>  
  <td></td>  
  <td></td>  
  <td></td>  
  </tr>  
<?php  
 error_reporting(E_ALL);  
 include ("config.php");  
 $tabelle = "spieler";  
 $connection = @mysql_connect($host, $user, $password);  
 $query = "SELECT * FROM $tabelle ORDER BY id DESC";  
 $result = mysql_db_query ($database, $query, $connection);  
  
 while($spieler = mysql_fetch_object ($result)) {  
  
 echo "  <form method=\"get\" action=\"admin/playeredit\">\n";  
 echo " <tr>\n";  
 echo "   <td>$spieler->id</td>\n";  
 echo "   <td>$spieler->spielername</td>\n";  
 echo "   <td>$spieler->team</td>\n";  
 echo "   <td>$spieler->formation</td>\n";  
 echo "   <td>$spieler->taktik</td>\n";  
 echo "   <td>$spieler->verbindung</td>\n";  
 echo "   <td>$spieler->spielweise</td>\n";  
 echo "  <td><a href=\"admin/playeredit.php&id=$spieler->id\">editieren</a></td>\n";  
  echo "  <td><a href=\"admin/playerdelete.php&id=$spieler->id\">l&ouml;schen</a></td>\n";  
 echo "  </tr>\n";  
  echo "  </form>\n";  
  
  }  
?>  
</table>  

Die Anzeige läuft Fehlerfrei. Wenn ich nun auf ein editieren beispielsweise gehe von einem Spieler, dann kommt "Objekt nicht gefunden!". In der Adressleiste kommt zwar der Link samt id des Spielers  - bspw. admin/playeredit.php&id=13 - allerdings wird diese Seite nicht geöffnet.
Ich mache denke ich irgendetwas Grundlegendes falsch, allerdings habe ich erst begonnen mit php und mysql, deshalb würde ich mich freuen, wenn mich jemand korregieren könnte.

in der playeredit.php steht folgendes, falls das noch hilfreich sein sollte:

  
<?php  
 error_reporting(E_ALL);  
 include ("../config.php");  
 $tabelle = "spieler";  
 $connection = @mysql_connect($host, $user, $password);  
 $query = "SELECT * FROM $tabelle ORDER BY id DESC";  
  
 $id = $_GET['id'];  
  
 $query = "SELECT * FROM $tabelle WHERE ID='$id'";  
 $result = mysql_db_query ($database, $query, $connection);  
 $data = mysql_fetch_array($result);  
?>  
  <form action="playereditaction.php" method="post">  
   <fieldset>  
  <legend>Formular</legend>  
  <table>  
    <tr>  
     <td></td>  
    <td></td>  
    </tr>  
   <tr>  
     <td><label for="spielername">Spielername:</label></td>  
    <td><input type="text" name="spielername" value="<?php echo $data['spielername']; ?>"></td>  
   </tr>  
   <tr>  
     <td><label for="team">Team:</label></td>  
    <td><input type="text" name="team" value="<?php echo $data['team']; ?>"></td>  
   </tr>  
   <tr>  
     <td><label for="formation">Formation:</label></td>  
    <td><input type="text" name="formation" value="<?php echo $data['formation']; ?>"></td>  
   </tr>  
   <tr>  
     <td><label for="taktik">Taktik:</label></td>  
    <td><input type="text" name="taktik" value="<?php echo $data['taktik']; ?>"></td>  
   </tr>  
   <tr>  
     <td><label for="verbindung">Verbindung:</label></td>  
    <td><input type="text" name="verbindung" value="<?php echo $data['verbindung']; ?>"></td>  
   </tr>  
   <tr>  
     <td><label for="spielweise">Spielweise:</label></td>  
    <td><textarea name="spielweise" cols="40" rows="4"><?php echo $data['spielweise']; ?></textarea></td>  
   </tr>  
  </table>  
  <input type="submit" name="SUBMIT" value=" Speichern ">  
  <input type="hidden" name="id" value="<?php echo $data['id']; ?>">  
  </fieldset>  
  </form>  
<?php  
  
$ergebnis = mysql_query($query) OR die("Query: <pre>".$query."</pre>\n".  
"Fehler: ".mysql_eror());  
?>  

Grüße

  1. Hallo,

    versuchs mal kit 'nem ?

    echo "  <td><a href="admin/playeredit.php?id=$spieler->id">editieren</a></td>\n";
      echo "  <td><a href="admin/playerdelete.php?id=$spieler->id">l&ouml;schen</a></td>\n";

    Gruß Rainer

  2. Mahlzeit anfänger,

    Mein Code:
    playeradmin.php
    [code lang=php]
    <table>
      <tr>
       <td width="5"><strong>ID</strong></td>
       <td width="20"><strong>Spielername</strong></td>
      <td width="20"><strong>Team</strong></td>
      <td width="20"><strong>Formation</strong></td>
      <td width="100"><strong>Taktik</strong></td>
      <td width="20"><strong>Verbindung</strong></td>
      <td width="200"><strong>Spielweise</strong></td>

    Bist Du Dir sicher, dass Du nicht lieber <http://de.selfhtml.org/html/tabellen/aufbau.htm#definieren@title=<th>> verwenden willst?

    <td width="100"></td>
      <td width="100"></td>

    </tr>
      <tr>
       <td></td>
       <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      <td></td>
      </tr>

    Was soll das? Eine komplett leere Zeile?

    <?php
    error_reporting(E_ALL);
    include ("config.php");
    $tabelle = "spieler";
    $connection = @mysql_connect($host, $user, $password);
    $query = "SELECT * FROM $tabelle ORDER BY id DESC";
    $result = mysql_db_query ($database, $query, $connection);

    Schlechte Idee. Informiere Dich über das EVA-Prinzip: Eingabe-Verarbeitung-Ausgabe. Nimm erst alle übergebenen Parameter entgegen und prüfe sie, verarbeite sie dann und erzeuge Ausgaben und beginne erst ganz zum Schluss damit, HTML-Code an den Browser zu schicken.

    while($spieler = mysql_fetch_object ($result)) {

    echo "  <form method="get" action="admin/playeredit">\n";
      echo " <tr>\n";
      echo "   <td>$spieler->id</td>\n";

    Du solltest Variableninhalte bei der Verwendung IMMER kontextsensitiv behandeln. Da Du in diesem Fall den Wert einer Variablen als HTML ausgeben willst, bietet sich die Funktion htmlspecialchars() an.

    Die Anzeige läuft Fehlerfrei.

    Warum zeigst Du uns dann den Code?

    Wenn ich nun auf ein editieren beispielsweise gehe von einem Spieler, dann kommt "Objekt nicht gefunden!".

    Da "kommt" sicher noch mehr. Warum verschweigst Du den Rest der Fehlermeldung?

    In der Adressleiste kommt zwar der Link samt id des Spielers  - bspw. admin/playeredit.php&id=13 - allerdings wird diese Seite nicht geöffnet.

    Naja, kein Wunder, wenn ein Fehler auftritt.

    in der playeredit.php steht folgendes, falls das noch hilfreich sein sollte:

    Relevanter Quellcode ist IMMER hilfreich ...

    [code lang=php]
    <?php
    error_reporting(E_ALL);
    include ("../config.php");
    $tabelle = "spieler";
    $connection = @mysql_connect($host, $user, $password);
    $query = "SELECT * FROM $tabelle ORDER BY id DESC";

    $id = $_GET['id'];

    Dies ist überflüssig und führt nur zu trügerischer Sicherheit.

    $query = "SELECT * FROM $tabelle WHERE ID='$id'";

    Du solltest Dich über das Thema "SQL-Injection" informieren und anschließend auch hier Variableninhalte kontextsensitiv zu behandeln. Da es sich in diesem Fall um SQL-Code handelt, bietet sich hier die Funktion mysql_real_escape_string() an.

    <td><label for="spielername">Spielername:</label></td>
        <td><input type="text" name="spielername" value="<?php echo $data['spielername']; ?>"></td>

    Das wird so nicht funktionieren: das Attribut "for" eines <http://de.selfhtml.org/html/formulare/strukturieren.htm#label@title=<label>>-Elements bezieht sich immer auf eine ID - die Du aber gar nicht definiert hast. Zum Thema kontextsensitive Behandlung: s.o.

    Behebe die genannten Probleme und teile die vollständige Fehlermeldung mit - vorher kann man Dir nur mittels Glaskugeln helfen ... und die sind hier im Forum - entgegen den Annahmen vieler Fragesteller - nicht besonders häufig verbreitet.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|