Editierung per Textarea
Textarea bekommt Daten über DB, diese sollen editiert und wieder abgespeichert werden
Hallo Freunde der Kunst,
ich habe mal wieder ein Problem, weiß aber diesmal wenigstens schonmal, woran es liegt Ist auch wirklich dumm, ich komm nur einfach nicht drauf...naja, vielleicht landets ja in LSW Beiträgen des Jahres.
Wie oben kurz beschrieben, habe ich Texte in einer (MySql)Datenbank, welche zum Bearbeiten in eine Textarea geladen werden. So weit, so gut. Das nochmalige Abspeichern bereit mir aber irgendwie Probleme...Lösung sollte aber simpel sein, ich seh sie nur nicht.
Tabellenstruktur: id | inhalt | datum | datei
In der admin.php ist das erste Formular + Funktionsaufruf:
<code="php">
<?php
text_edit();
?>
nun die Funktion:
Was funktioniert nicht und warum?
Das Abspeichern, wie oben schon gesagt, aus folgendem Grund: Sobald ich auf "Ändern" klicke, ist natürlich die Variable $auswahl weg und damit die Datei, mit der sich die WHERE Klausel befassen kann.
Mein Problem: Wie bekomme ich das Formular dazu, die Variable $auswahl beizubehalten oder zumindest zu sagen "du speicherst nun den Text, der in der Textarea steht"?
Ich danke schonmal für eure Hilfe
Gruß
Mitchell
Hallo Freunde der Kunst,
ich habe mal wieder ein Problem, weiß aber diesmal wenigstens schonmal, woran es liegt Ist auch wirklich dumm, ich komm nur einfach nicht drauf...naja, vielleicht landets ja in LSW Beiträgen des Jahres.
Wie oben kurz beschrieben, habe ich Texte in einer (MySql)Datenbank, welche zum Bearbeiten in eine Textarea geladen werden. So weit, so gut. Das nochmalige Abspeichern bereit mir aber irgendwie Probleme...Lösung sollte aber simpel sein, ich seh sie nur nicht.
Tabellenstruktur: id | inhalt | datum | datei
In der admin.php ist das erste Formular + Funktionsaufruf:
<p>Wäle den zu bearbeitenden Text</p><br>
<form action="" method="post">
<select name="texte" size="1">
<option value="text1.php">Einleitung</option>
<option value="text2.php">Unterschriftenaktion</option>
<option value="text3.php">Datenschutz</option>
</select>
<input type="submit" value="Wählen">
</form>
<?php
text_edit();
?>
nun die Funktion:
$ausgabe = $_POST['ausgabe'];
$auswahl = $_POST['texte'];
$editieren = $_POST['edit'];
$text = $_POST['aenderung'];
$out_sql = mysql_query("SELECT inhalt, datum, datei FROM kf_texte WHERE file = '$auswahl' ORDER BY change_date DESC");
$text_out= mysql_fetch_array($out_sql);
echo "<form action='' name='aenderung' method='post'><input name='edit' type='submit' value='Ändern'><p><textarea name='ausgabe' cols='105' rows='30'>".html_entity_decode($text_out['inhalt'])."</textarea></p></form>";
// bis hier hin läufts :-)
if ($editieren == 'Ändern')
mysql_query("UPDATE tbl SET inhalt='$ausgabe', datum=NOW() WHERE datei= '$auswahl'");
Was funktioniert nicht und warum?
Das Abspeichern, wie oben schon gesagt, aus folgendem Grund: Sobald ich auf "Ändern" klicke, ist natürlich die Variable $auswahl weg und damit die Datei, mit der sich die WHERE Klausel befassen kann.
Mein Problem: Wie bekomme ich das Formular dazu, die Variable $auswahl beizubehalten oder zumindest zu sagen "du speicherst nun den Text, der in der Textarea steht"?
Ich danke schonmal für eure Hilfe
Gruß
Mitchell
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 184870
Url: https://administrator.de/contentid/184870
Ausgedruckt am: 19.11.2024 um 06:11 Uhr
13 Kommentare
Neuester Kommentar
man könnte es mit einem Hidden Formular Feld durch reichen
btw. http://de.wikipedia.org/wiki/SQL-Injection
echo '<form .... ><input type="hidden" name="texte" value="'.$auswahl.'"> .... ';
btw. http://de.wikipedia.org/wiki/SQL-Injection
Moin,
lg,
Slainte
.... type='submit' value='Ändern'> ....
if ($editieren == 'Ändern')
bau hier doch mal ein "echo $editieren" einif ($editieren == 'Ändern')
$ausgabe = $_POST['ausgabe'];
mysql_query("UPDATE tbl SET inhalt='$ausgabe' ....
Und hier wieder mein Liebliengs PHP-Thema SQL injection mysql_query("UPDATE tbl SET inhalt='$ausgabe' ....
lg,
Slainte
... ok - zum Verständnis: Dein Script wird 3-mal durchlaufen
1
2
3
... ich glaube das Punkt 3 fehlt - und um im Punkt 3 die Daten speichern zu können müsst Du aus 2. die ID ($auswahl) in einem hidden Feld durch schleifen.
1
- Anzeige des "Wäle den zu bearbeitenden Text" - Formulars
2
- Auswahl empfangen
- Daten aus der DB holen
- und Anzeige des "Änderung" Formulars mit den Daten
3
- Empfangen der Daten
- Speichern der Daten
- Formular wieder anzeigen oder zurück zum "Wäle den zu bearbeitenden Text" -Formulars oder was auch immer
... ich glaube das Punkt 3 fehlt - und um im Punkt 3 die Daten speichern zu können müsst Du aus 2. die ID ($auswahl) in einem hidden Feld durch schleifen.
zwar nicht in einem hidden Feld, aber es passiert
... na wie auch immer - ist ja nicht so wichtigNach dem Abschicken des geänderten Formulares gibt es logischerweise nur noch zwei Variablen, und zwar
... dann solltest Du evtl doch mal dem Formular ein Hidden-Input Feld spendieren, und es mit der Variablen $auswahl füllen.( und wieso $auswahl - ist ist doch eher $datei ... ich bin echt verwirrt )
echo <<<__HTML__
<form action="" name="aenderung" method="post">
<input type="hidden" name="datei" value="$datei" />
<input type="submit" name="action" value="Ändern" />
<p> <textarea name="ausgabe" cols="105" rows="30">$text</textarea> </p>
</form>
__HTML__;
BTW . da ich fasst am verzweifeln bin hab ich schon mal ein Script geschrieben dazu - mich wundert jetzt aber das deine SQL Statements
- auf unterschiedliche Tabellen verweisen
- $auswahl gegen unterschiedliche Datenfelder geprüft wird ( `datei` bzw `file` )
- das es offenbar eine Art Versions-Kontrolle gibt für die Texte, aber Du beim speichern diese aktualisiert anstatt eine neue Version anzulegen.