Tabellen-Einträge ändern

sheeba1507

Erfahrenes Mitglied
Hallo zusammen,

ich habe ein Problem mit einem Script. Irgendwo ist ein Schreib-/Denk-Fehler drin,
aber ich sehe den Wald vor lauter Bäumen nicht.
Deshalb benötige ich etwas Hilfe.

Folgendes Problem stellt sich mir :

Es kommt vor, daß ich in meinem Termin-Kalender einen Eintrag ändern muß.
Im ersten Schritt wähle ich über die ID den Eintrag aus, der zu ändern ist.

Im zweiten Schritt gebe ich diesen Eintrag aus, und zwar in drei Spalten
- Spalte 1 = Bezeichnung (Datum, Uhrzeit, Ort/Beschreibung)
- Spalte 2 = alte Einträge
- Spalte 3 = Eingabe-Felder für Änderungen

Auszug aus dem Code
PHP:
<form action="termin_upd_act.php" method="post" />
      
      <tr>
        <td align="left" width="140px">Datum :</td>
        <td align="left" width="300px"><?php echo $datensatz["datum"];?></td>
        <td align="left" width="300px">
          <input name="upd_datum" type="text" id="upd_datum" 
            style="background-color:#CCCCCC; font-size:12px; 
            border : 1px solid #000000; width:186px" />
          <?php 
          if ($upd_datum == "") 
          { 
            $upd_datum = $datensatz["datum"]; 
          } 
          ?>
        </td>
      </tr>
Das gleiche gilt für die Felder "Uhrzeit" und "Ort/Beschreibung"

Die "IF"-Abfrage soll prüfen, ob das Feld leer ist und dann ggf. die alten Daten
übernehmen.

Im 3. Schritt werden dann die Daten in die Tabelle zurück geschrieben und die
Admin-Seite wieder aufgerufen.

PHP:
<?php
$id_upd = $_POST["upd_id"];
$datum = $_POST["upd_datum"];
$zeit = $_POST["upd_zeit"];
$ort = $_POST["upd_ort"];
include ("db_connect.inc.php");
$sqlupdate = "UPDATE ms_termine SET datum='$datum' zeit='$zeit' ort='$ort'
  WHERE id = $id_upd";
$ergebnis = mysql_query($sqlupdate);
header("Location: admin.php");
?>
<form action="admin.php" type="submit" /></form>

Leider stehen in der Tabelle nach dieser Aktion immer noch die alten Daten.

Erkennt hier jemand den Fehler und kann mich wieder auf den richtigen Weg bringen ?
Schon jetzt ein großes Dankeschön für die Hilfe.

Gruß, Mike
 
Das Update schlägt fehl weil die Query so ungültig ist... dir fehlen auf jeden Fall Kommas zwischen den einzelnen spaltenupdates:

SQL:
UPDATE ms_termine SET datum='$datum', zeit='$zeit', ort='$ort'  WHERE id = $id_upd

PS: Viel Sinn hat es nicht mehr das noch HTML Code folgt wenn du fest einen header redirect auf die admin.php eingetragen hast.
 
Zuletzt bearbeitet von einem Moderator:
Dann mach den header redirect raus und lass dir den mysql_error() anzeigen, am besten nochmal die Query und dann genau lesen.
 
PHP:
<?php
$id_upd = $_POST["upd_id"];
$datum = $_POST["upd_datum"];
$zeit = $_POST["upd_zeit"];
$ort = $_POST["upd_ort"];
include ("db_connect.inc.php");
$sqlupdate = "UPDATE ms_termine SET datum='$datum', zeit='$zeit', ort='$ort'
  WHERE id = $id_upd";
$ergebnis = mysql_query($sqlupdate);
echo $ergebnis
?>

Es erscheint lediglich eine leere Seite.
 
Update liefert nichts zurück. Darum geben wir den mysql_error aus, und die query die gesendet wird. Wenns einen Fehler gibt dann sagt die dir schon ziemlich genau was nicht geht.

PHP:
<?php
$id_upd = $_POST["upd_id"];
$datum = $_POST["upd_datum"];
$zeit = $_POST["upd_zeit"];
$ort = $_POST["upd_ort"];
include ("db_connect.inc.php");
$sqlupdate = "UPDATE ms_termine SET datum='$datum', zeit='$zeit', ort='$ort'
  WHERE id = $id_upd";
mysql_query($sqlupdate);
echo $sqlupdate."<br>".mysql_error();
?>
 
Folgende Fehlermeldung erfolgte :

UPDATE ms_termine SET datum='03.07.2007', zeit='', ort=' ' WHERE id =
You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near '' at line 2

Es sieht so aus, als wenn die "IF"-Abfrage aus Schritt 2 fehlgeschlagen ist,
da ich lediglich das Datum geändert habe, die anderen Werte aber beibehalten wollte.

Solltest du der gleichen Meinung sein, kannst du mal einen Blick auf mein erstes
Posting werfen, insbesondere den ersten PHP-Code mit der Abfrage ?

Vieleicht steckt hier ja der Fehler im Detail und ich kann ihn nur nicht sehen.

Gruß, Mike
 
Du ließt in deinem Script 4 Variablen aus POST aus:

PHP:
$id_upd = $_POST["upd_id"];
$datum = $_POST["upd_datum"];
$zeit = $_POST["upd_zeit"];
$ort = $_POST["upd_ort"];

Aber nur eine der 4 ist gesetzt, das datum. Darum bleibt die WHERE Bedinungung auf "id = " hängen. Und ist so ungültig.

Was kannst du dagegen tun? Du kannst dein Formular überarbeiten wo die Angaben getätigt werden. Und du solltest in deinem script drigend upd_id validieren.
 
Dann werde ich mal die beiden Scripte überarbeiten, da ich jetzt ja eine etwas
bessere Vorstellung habe, wo ich suchen und ändern muß.

Erst einmal vielen Dank für deine Hilfe. Werde mich wieder melden, wenn entweder
das Problem gelöst wurde oder immer noch hinkt.

Gruß, Mike
 
Habe soeben das Problem durch ein paar Hilfen von einem anderen Kollegen
lösen können.

Ich hatte einen Fehler in der Übergabe der Variable "ID" im 2. Schritt.
PHP:
<input name="id_select" type="hidden" id="id_select"
        value="<?php echo $datensatz["id"] ?>" />
Nur so kann sie im 3. Schritt auch mit _Post einbezogen werden.

Nochmals Danke an alle Helfer.

Gruß, Mike
 
Zurück