Artikel editieren (PHP, Sql)

Hallo,

ich würde gerne Eure Hilfe in Anspruch nehmen und zwar weiß bin ich in dem Formular soweit das ich den zu editierenden Text im Textfeld ausgeben kann, dieser aber nicht nach einer Änderung gespeichert wird. Hoffe ihr könnt mir sagen woran es liegt.

PHP:
Hier können Sie den Text von der Startseite soviel ändern wie Sie möchten !
<br />
<br />
<?
if (isset ($_POST['Submit'])) {
$aerndern = Mysql_Query ("update 'tabelle' set 'spalte' = '".$_POST['spalte']."' where 'id' = '1'") Or Die (Mysql_Error());
}
$Query = Mysql_Query ("select `spalte` from `tabelle` where `id` = '1'") Or Die (Mysql_Error ());
$Row = Mysql_Fetch_Assoc ($Query);
?>
<form method="post" action="<? echo $aendern ?>">
<input type="hidden" name="id" value="1">
<br>
Text: <br />
<textarea name="spalte"  rows="7" cols="70">
<? echo $Row['spalte'] ?>
</textarea>
<br>
<br>
<input type="submit" name="submit" value="Senden">
</form>
<br />
<br />
<u>Aktueller Text:</u>
<br />
<br />
<?php
$abfrage = "SELECT spalte FROM tabelle";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo nl2br($row->spalte);
}
?>
 
- Der Rückgabewert von mysql_query() wird in die Variable $aerndern gespeichert, die dann nie mehr verwendet wird
- In der Where-Clause beim Update-Sql-String brauchst du die 1 nicht in hochkommas zu setzen, wenn es ein Integer sein soll

PHP:
<form method="post" action="<? echo $aendern ?>">
Was soll das bewirken? Wenn $aendern nicht gesetzt ist, dann wird bei submit die gleiche Seite geladen, wenn $aendern gesetzt ist (ich nehme an $aerndern aus dem Update soll $aendern sein) zeigt action aber auf true oder false. Ist nicht deine Absicht, oder?

Prüf doch mit einem echo, ob der Update-String überhaupt erreicht wird, sprich ob der Interpreter überhaupt in die If-Abfrage rein kommt.

Oder guck dir vlt auch kurz mein Tutorial an:
http://www.tutorials.de/forum/tutor...-modifizieren-von-daten-eine-r-datenbank.html

Grüsse
De Igäl

Edit:
Habs kurz getestet: Die Keys von assoziativen Arrays sind case sensitive. Du musst also nach $_POST['submit'] abfragen, da isset($_POST['Submit']) false liefert.
 
Zuletzt bearbeitet:
Also $aendern soll es heißen, hab das ganze jetzt rausgenommen, also die beiden $aendern.Nun steht auch überall "submit" und nicht einmal "Submit" und nächstes "submit".
Hochkommata um der "1" hab ich weg also die '.

Auf das von Dir verwieseneTutorial kann ich aufgrund zu weniger Rechte nichtzugreifen.


Code sieht nun so aus:
PHP:
<?
if (isset ($_POST['submit'])) {
Mysql_Query ("update 'tabelle' set 'spalte' = '".$_POST['spalte']."' where 'id' = 1") Or Die (Mysql_Error());
}
$Query = Mysql_Query ("select `spalte` from `tabelle` where `id` = 1") Or Die (Mysql_Error ());
$Row = Mysql_Fetch_Assoc ($Query);
?>
<form method="post" action="index.php?action=edit">
<input type="hidden" name="id" value="1">
<br>
Text: <br />
<textarea name="spalte"  rows="7" cols="70">
<? echo $Row['spalte'] ?>
</textarea>
<br>
<br>
<input type="submit" name="submit" value="Senden">
</form>
<br />
<br />
<u>Aktueller Text:</u>
<br />
<br />
<?php
$abfrage = "SELECT spalte FROM tabelle";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo nl2br($row->spalte);
}
?>


Bekomme hier aber auch eine Ausgabe in Form eines Fehlers:
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 ''hallo' where 'id' = 1' at line 1
 
Bei MySQL-Bezeichnern sind die Anführungszeichen für Bezeichner die so genannten Backticks (`) wie du sie auch schon in der zweiten Datenbankabfrage verwendest.
 
Also ich möchte das jede News sichtbar ist und zum updaten in ein Textfeld ausgegeben wird (oder auch Input, je nach Feld). Für die gesamte News einen Button. Leider wird hier mal garnichts ausgelesen und ich weiß nicht wo dran es liegen könnte.
Hier mal der Code (anderer als oben, hat aber auch mit dem Topic zu tun):

PHP:
<?php
include("inc/db.php");
if($submit)
{
$titel = mysql_real_escape_string($_POST['titel']);
$newstext = mysql_real_escape_string($_POST['newstext']);
$autor = mysql_real_escape_string($_POST['autor']);
$datum = mysql_real_escape_string($_POST['datum']);
$url = mysql_real_escape_string($_POST['url']);
$id = mysql_real_escape_string($_POST['id']);
$result = mysql_query("UPDATE news SET titel='$titel', newstext='$newstext', autor='$autor', datum='$datum', url='$url' WHERE id='$id' ",$ms);
echo "<b>Danke! News erfolgreich editiert!";
}
elseif($id)
{
$result = mysql_query("SELECT * FROM news WHERE id='$id' ",$ms);
while($myrow = mysql_fetch_assoc($result))
{
$titel = mysql_real_escape_string($_POST['titel']);
$newstext = mysql_real_escape_string($_POST['newstext']);
$autor = mysql_real_escape_string($_POST['autor']);
$datum = mysql_real_escape_string($_POST['datum']);
$url = mysql_real_escape_string($_POST['url']);
$id = mysql_real_escape_string($_POST['id']);
?>
<br>
<h3>::News editieren</h3>
<form method="post" action="index.php?action=newsedit">
<input type="hidden" name="id" value="<? echo $myrow['id']; ?>">
Titel: <input name="titel" size="40" maxlength="255" value="<? echo $myrow['titel']; ?>">
<br>
Newstext: <textarea name="newstext"  rows="7" cols="30"><? echo $myrow['newstext']; ?></textarea>
<br>
Autor: <input name="autor" size="40" maxlength="128" value="<? echo $myrow['autor']; ?>">
<br>
URL: <input name="url" size="80" maxlength="255" value="<? echo $myrow['url']; ?>">
<br />
Datum: <input name="datum" size="80" maxlength="255" value="<? echo $myrow['datum']; ?>">
<br />
<input type="submit" name="submit" value="Update News">
</form>
<?
}
}
?>
 
Hab es jetzt so, dummerweise muss ich die id selber eingeben und wenn die restlichen felder leer sind, wird die id überschrieben - logisch. aber wieso wird es nicht ausgegeben und zum editieren verfügbar gemacht?

PHP:
<?
include("db.php");

if(isset ($_POST['submit'])) {
Mysql_Query ("update `news` set `id` = '".$_POST['id']."',`titel` = '".$_POST['titel']."',`newstext` = '".$_POST['newstext']."',`autor` = '".$_POST['autor']."',`datum` = '".$_POST['datum']."',`url` = '".$POST['url']."' where `id` = '".$_POST['id']."' ");
}
$Query = Mysql_Query ("select `id` = '".$_POST['id']."',`titel` = '".$_POST['titel']."',`newstext` = '".$_POST['newstext']."',`autor` = '".$_POST['autor']."',`datum` = '".$_POST['datum']."',`url` = '".$_POST['url']."' from `news` where `id` = '".$_POST['id']."' ORDER BY datum DESC");
$Row = Mysql_Fetch_Assoc ($Query);
?>
<br>
<h3>::News editieren</h3>
<form method="post" action="index.php?action=newsedit">
ID (<u>Nicht</u> &auml;ndern) <input name="id" value="<? echo $Row['id']; ?>">
<br />
Titel: <input name="titel" size="40" maxlength="255" value="<? echo $Row['titel']; ?>">
<br>
Newstext: <textarea name="newstext"  rows="7" cols="30"><? echo $Row['newstext']; ?></textarea>
<br>
Autor: <input name="autor" size="40" maxlength="128" value="<? echo $Row['autor']; ?>">
<br>
URL: <input name="url" size="80" maxlength="255" value="<? echo $Row['url']; ?>">
<br />
Datum: <input name="datum" size="80" maxlength="255" value="<? echo $Row['datum']; ?>">
<br />
<input type="submit" name="submit" value="Update News">
</form>

Würd emich über eine helfende Antwort freuen.
 
Was ist denn das für ein Select-Statement?

SELECT row=value, row=value?

Wär mir neu wenn das funktionieren würde.

Tip:
mysql_query(SQL_STRING) or die(mysql_error());
 
Zurück