Update funktion

Erstmal danke für eure Mühen
Hmm also das komische ist nun dass er mit wieder den Fehler:
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 1

Könnte es sein dass er nix Updatet weil ich nicht alle DBfelder angebe?
Ich schreibe bei einem neuen Eintrag auch das Datum in die DB und beim Update eben nicht.
 
Nö, Du kannst auch einzelne Felder updaten.
Wie die Meldung ja sagt, hast Du ein Fehler in der SQL Syntax..... nur weiss niemand für welche Version Du dich nun entschieden hast.
 
folgende Version ist bei mir aktuell
Ich könnt echt k......
PHP:
<?php
   //db verbindung
include ("inc/dbconnect.inc.php");
if ($_POST['action']=="edit" && $_POST['submit']=="ok") {
  $result = mysql_query("UPDATE news SET titel='".$_POST['titel']."', news='".$_POST['news']."' WHERE id='".$_POST['id']."'");
}
else {
$abfrage = "SELECT * FROM news WHERE id=$id";
 $ergebnis = mysql_query($abfrage) OR die(mysql_error());
while($row = mysql_fetch_assoc($ergebnis))
{


  echo "<form action=\"".$PHP_SELF."?action=edit\" method=\"post\" name=\"editieren\">";
  echo $row['id'];
  echo "<input type=\"text\" value=\"".$row['titel']."\" name=\"titel\">";
  echo "<input type=\"text\" value=\"".$row['news']."\" name=\"news\">";
  echo "<input type=\"submit\" value=\"ok\">";
  echo "</form>";
}
}

?>
 
Zuletzt bearbeitet:
Versuch es mal so:
PHP:
<?php 
//db verbindung 
include ("inc/dbconnect.inc.php"); 
if (isset($_POST['edit'])) { 
mysql_query("UPDATE news SET titel='".$_POST['titel']."', news='".$_POST['news']."' WHERE id='".$_POST['old_id']."';"); 
} 
else { 
$abfrage = "SELECT * FROM news WHERE id=$id"; 
$ergebnis = mysql_query($abfrage) OR die(mysql_error()); 
while($row = mysql_fetch_assoc($ergebnis)) 
{ 
 
 
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\" name=\"editieren\">"; 
echo $row['id']; 
echo "<input type=\"hidden\" value=\"".$row['id']."\" name=\"old_id\">";
echo "<input type=\"text\" value=\"".$row['titel']."\" name=\"titel\">"; 
echo "<input type=\"text\" value=\"".$row['news']."\" name=\"news\">"; 
echo "<input type=\"submit\" value=\"ok\" name=\"edit\">"; 
echo "</form>"; 
} 
} 
 
?>
Wo kommt $id in der SELECT Abfrage her?
Per POST oder GET?
 
Die $id kommt ohne POST oder GET in die SELECT Abfrage, verstehe den zusammenhang von GET, POST und SELECT nicht so ganz.
Der Fehler is nun weg danke!
 
Fehler gefunden :)
ich habe beim action Tag die id nicht mitübergeben :)
PHP:
echo "<form action=". $PHP_SELF. '?action=edit&id='. $row['id']. " method=\"post\" name=\"editieren\">";

Trotzdem danke an alle :)
 
Darum habe ich die ID ja auch schon in meinem erstem Posting in ein hidden Input gepackt. ;)

GET wird per URL übergeben, POST wird scriptintern übergeben.
Das hat als solches aber nichts mit SELECT zu tun.
Du könntest also auch alle Daten per GET ans SELECT übergeben.
Der Nachteil an GET ist halt dass der User die Daten manipulieren könnte, da diese ja über die URL übergeben werden.
Darum hatte ich das Formular so geändert, dass alle Daten ausschliesslich per POST übergeben werden.

Trotzdem solltest Du (wie schon erwähnt) $_SERVER['PHP_SELF'] und nicht $PHP_SELF verwenden.
$PHP_SELF funktioniert nämlich nur so lange, wie register_globals=ON eingestellt ist.
Oder anderes ausgedrückt, wenn dein Script jetzt mit $PHP_SELF funktioniert, musst Du trotzdem jeden Augenblick damit rechnen dass es plötzlich nicht mehr funktioniert..... da dein Hoster die Einstellung jeder Zeit ändern kann. :-)
 
Zurück