EKKi: Tabellen editieren/löschen - id Problem

Beitrag lesen

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:|