2 Formularfelder in MySQL updaten

wallis

Mitglied
Mahlzeit Leute !

Ich habe eine Rangliste für ein Spiel in PHP erstellt.

Nun folgendes:

Ich möchte die Rangliste über eine Edit Datei editieren.
Okay... kein Thema... dort habe ich nun 2 Formularfelder in einer Tabelle.

PHP:
      <form action="./edit.php?id='.$result['id'].'" method="post">
      <table border="1" cellpadding="0" cellspacing="0" bordercolor="#008000" width="100%">
        <tr>
          <td width="100">pkt<input type="text" name="punkte" size="10" value="'.$result['punkte'].'"></td>
          <td width="100">entw<input type="text" name="entwicklung" size="10" value="'.$result['entwicklung'].'"></td>
          <td width="200"><input type="submit" name="usubmit" value="Spieler Editieren"></td>
        </tr>
      </table>
      </form>

Update Anweisung:

Code:
// update
if ((isset($_POST['usubmit'])) && (!empty($_POST['update']))
   && (isset($_GET['id'])) && (!empty($_GET['id']))) {
   mysql_query("UPDATE ".$tabelle." set punkte = '".$_POST['punkte']."', entwicklung = '".$_POST['entwicklung']."' WHERE id = ".$_GET['id']."")
      or die (mysql_error());

Folgendes Problem:
Bei klick auf "Spieler editieren" macht er kein Update in der MySQL.
Er soll mir nur den spieler mit der jeweilige ID in der DB updaten.
Also editiere ich Spieler (id=2), so änder ich nur die Daten "punkte" und "entwicklung" des Spieler mit der MySQL ID "2".
Nicht die ganze Tabelle.

Warum macht er das nicht ?

Gruss und danke für Antworten.....
WALLi
 
Hallo,
was gibt es denn für eine Fehlermeldung, oder gibt es gar keine?

Wenn nicht, dann lass dir in dem Update-Skript doch mal den Inhalt der Variblen ausgeben und schau nach ob da alles in Ordnung is...


mfg daniel
 
Es kommt keine Fehlermeldung.
Er macht gar nichts. Er hängt hinter die URL in der Adressleite nur ein "edit.php?id=1"

Wie mache ich das mit der Ausgabe ?
 
Code:
echo("
$_POST['usubmit'] <br>
$_POST['update'] <br>
$_GET['id'] <br>
$_POST['punkte'] <br>
$_POST['entwicklung']
");

aber ich vermute das deine Abfrage nen Fehler hat:
  • usubmit ist dein Submit-Button, den musst du nicht abfragen ob der gesetzt ist
  • Was ist denn in update enthalten?
  • Du fragst ab ob id gesetzt ist, und fragst dann noch ab ob es nicht leer ist, das is nicht nötig...

Das würde es glaub ich auch tun:
Code:
if (isset($_POST['update']) && (isset($_GET['id']))
{
  $punkte = $_POST['punkte'];
  $entwicklung = $_POST['entwicklung'];
  $query = "UPDATE $tabelle set punkte = $punkte , entwicklung = $entwicklung  WHERE id = $id";
  mysql_query($query) or die (mysql_error());
}

mfg daniel
 
Parse error: parse error, unexpected '{' in /home/www/web147/html/test/rangliste/edit.php on line 15

Das ist die Klammer von dir !
 
Ersetz mal das
PHP:
if (isset($_POST['update']) && (isset($_GET['id']))
durch das
PHP:
if ((isset($_POST['update'])) && (isset($_GET['id'])))
 
Nix.... es tut sich einfach nix.... egal was ich mache !

Hier mal der gesamte Code der "edit.php":

PHP:
<?php

//config
$host = "localhost";
$user = "webxxx";
$password = "xxx";
$dbname = "usr_webxxx";
$tabelle = "xxx";

$dbverbindung = mysql_connect ($host, $user, $password) or die("Verbindung zur Datenbank fehlgeschlagen");
$db_select = MYSQL_SELECT_DB($dbname) OR DIE (mysql_erroru()); 


if ((isset($_POST['update'])) && (isset($_GET['id']))) 
{
  $punkte = $_POST['punkte'];
  $entwicklung = $_POST['entwicklung'];
  $query = "UPDATE $tabelle set punkte = $punkte , entwicklung = $entwicklung  WHERE id = $id";
  mysql_query($query) or die (mysql_error());
}

$dbanfrage = "SELECT id, name, punkte, entwicklung FROM $tabelle ORDER BY id";
$res = mysql_db_query ($dbname, $dbanfrage, $dbverbindung) or die('Fehler');

echo '<table border="0" cellpadding="0" cellspacing="0" width="450">
  <tr>
    <td width="50"><font size="1" face="Verdana" color="#FFFFFF">Platz</font></td>
    <td width="200"><font size="1" face="Verdana" color="#FFFFFF">Name</font></td>
    <td width="100"><font size="1" face="Verdana" color="#FFFFFF">Punkte</font></td>
    <td width="100"><font size="1" face="Verdana" color="#FFFFFF">Entwicklung</font></td>
  </tr>';

while ($result = mysql_fetch_array($res))
{
echo '
  <tr>
    <td width="50"><font face="Verdana" size="1">platz</font></td>
    <td width="200"><font size="1" face="Verdana">'.$result['name'].'</font></td>
    <td width="200" colspan="2">
      <form action="./edit.php?id='.$result['id'].'" method="post">
      <table border="0" cellpadding="0" cellspacing="0" width="450">
        <tr>
          <td width="100"><input type="text" name="update_punkte" size="5" value="'.$result['punkte'].'"></td>      
          <td width="100"><input type="text" name="update_entwicklung" size="5" value="'.$result['entwicklung'].'"></td>
          <td width="100"><input type="submit" name="usubmit" value="Änderung speichern"></td>
        </tr>
      </table>
      </form>
    </td>
  </tr>
';
}

echo '</table>';

?>
 
Okay...

Jetzt geht's, jetzt habe ich aus
PHP:
<input type="submit" name="usubmit" value="Änderung speichern">

folgendes gemacht:
PHP:
<input type="submit" name="update" value="Änderung speichern">

Jetzt leert er mir die Zelle in der DB, wo er eigentlich die neue Punktzahl und die Entwicklung eintragen soll.
Er macht sie einfach leer. Selbst wenn ich eine neue Punktzahl angebe, bleiben die Zellen leer.

Komisch oder ?
 
Hi!

Mach mal aus dem:

PHP:
$query = "UPDATE $tabelle set punkte = $punkte , entwicklung = $entwicklung  WHERE id = $id";

das:

PHP:
$query = "UPDATE $tabelle SET punkte = '$punkte' , entwicklung = '$entwicklung'  WHERE id = $id LIMIT 1";

Damit hatte ich bei mir immer Probleme!
 
Zurück