Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Frage Entwicklung PHP

GELÖST

Editierung per Textarea

Mitglied: Mitchell

Mitchell (Level 2) - Jetzt verbinden

11.05.2012, aktualisiert 18.05.2012, 5410 Aufrufe, 13 Kommentare

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:

01.
<p>W&auml;le den zu bearbeitenden Text</p><br> 
02.
	<form action="" method="post"> 
03.
	<select name="texte" size="1"> 
04.
		<option value="text1.php">Einleitung</option> 
05.
		<option value="text2.php">Unterschriftenaktion</option> 
06.
		<option value="text3.php">Datenschutz</option> 
07.
	</select> 
08.
	<input type="submit" value="W&auml;hlen"> 
09.
	</form>
01.
<?php 
02.
text_edit(); 
03.
?>
nun die Funktion:

01.
	$ausgabe = $_POST['ausgabe']; 
02.
	$auswahl = $_POST['texte']; 
03.
	$editieren = $_POST['edit']; 
04.
	$text = $_POST['aenderung']; 
05.
 
06.
 
07.
	$out_sql = mysql_query("SELECT inhalt, datum, datei FROM kf_texte WHERE file = '$auswahl' ORDER BY change_date DESC"); 
08.
	$text_out= mysql_fetch_array($out_sql); 
09.
 
10.
	echo "<form action='' name='aenderung' method='post'><input name='edit' type='submit' value='&Auml;ndern'><p><textarea name='ausgabe' cols='105' rows='30'>".html_entity_decode($text_out['inhalt'])."</textarea></p></form>"
11.
 
12.
// bis hier hin läufts :-) 
13.
 
14.
	if ($editieren == 'Ändern') 
15.
	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
Mitglied: nxclass
11.05.2012 um 14:19 Uhr
man könnte es mit einem Hidden Formular Feld durch reichen
01.
echo '<form  ....   ><input type="hidden" name="texte" value="'.$auswahl.'"> ....  ';
btw. http://de.wikipedia.org/wiki/SQL-Injection
Bitte warten ..
Mitglied: SlainteMhath
11.05.2012 um 14:24 Uhr
Moin,

.... type='submit' value='&Auml;ndern'> ....
....
if ($editieren == 'Ändern')
bau hier doch mal ein "echo $editieren" ein


$ausgabe = $_POST['ausgabe'];
mysql_query("UPDATE tbl SET inhalt='$ausgabe' ....
Und hier wieder mein Liebliengs PHP-Thema SQL injection

lg,
Slainte
Bitte warten ..
Mitglied: Mitchell
11.05.2012 um 18:47 Uhr
@nxclass: Hatte ich anfangs auch, bringt aber genau das selbe. Auch das hidden Formular ist natürlich beim Absenden des Formulares weg.

@Slan...: Ich habe schon alle Variablen durchexerziert, aber wenns dich weiterbringt ^^. Die Ausgabe von $editeren bringt mir ein "'Ändern" (nach Abschicken des Editbuttons natürlich).

Zu euren Injektions...auf was bezieht ihr das, die Variablen? Keine Angst, vor dem Update wird $ausgabe natürlich noch durch htmlentities und mysql_real_escape geschickt

Mfg
Mitchell
Bitte warten ..
Mitglied: nxclass
11.05.2012 um 18:58 Uhr
Auch das hidden Formular ist natürlich beim Absenden des Formulares weg
.. Zauberei.

... schade das die OO Programmierung schon wieder aus der Mode ist.

Evtl. solltest Du deinen Code mal etwas umbauen, so dass erst die Daten verarbeitet werden und erst am Schluss die Ausgabe erfolgt.
Bitte warten ..
Mitglied: Mitchell
12.05.2012 um 12:43 Uhr
.. Zauberei.

ich mag dich auch :-P

es soll am Schluss aber gar keine Ausgabe erfolgen, also was soll ich hier umbauen?

Mfg
Mitchell
Bitte warten ..
Mitglied: nxclass
12.05.2012 um 15:43 Uhr
es soll am Schluss aber gar keine Ausgabe erfolgen, also was soll ich hier umbauen?
01.
// 1 - prüfen ob Formular Daten gesendet wurden und diese in der DB speichern 
02.
// 2 - prüfen ob Formulardaten aus der DB geholt werden müssen und Daten holen 
03.
// 3 - Formular mit den Daten darstellen (oder auch nicht)
Bitte warten ..
Mitglied: Mitchell
12.05.2012 um 21:02 Uhr
Es geht doch darum, dass ich eine Variable erhalten will, da gibts vorher nichts zu prüfen. Auch nicht, ob die Formulardaten aus der DB geholt werden müssen, weil das ja definitiv der Fall ist.

Der User hat sein Dropdown, dort wählt er den Text zum Editieren. Sobald er diesen ausgewält hat, wird dieser angezeigt, also die Daten aus der DB genommen. Nun soll der editierte Text neu abgespeichert werden...hab ich mich falsch ausgedrückt am Anfang?

Außerdem hattest du doch schon vorgeschlagen, es mit einem hidden-field durchzureichen...was halt nicht klappt. Die Antwort ".. Zauberei." lässt mich irgendwie denken, dass du das wusstest :-P

Mfg
Mitchell
Bitte warten ..
Mitglied: nxclass
12.05.2012 um 23:38 Uhr
... ok - zum Verständnis: Dein Script wird 3-mal durchlaufen

1
  • Anzeige des "W&auml;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&auml;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.
Bitte warten ..
Mitglied: Mitchell
13.05.2012 um 19:25 Uhr
Punkt 3 fehlt, korrekt. Leider geht dein Plan so nicht ganz auf...$auswahl wird ja bei Punkt 2 schon durchgeschleift, zwar nicht in einem hidden Feld, aber es passiert . So, nun sind die Daten von $auswahl also da und mir wird auch ordentlich z. B. "text 2" angezeigt. Sobald ich aber nun auf "Ändern" klicke, ist die Variable $auswahl weg und das UPDATE funktioniert natürlich nicht mehr.

Nach dem Abschicken des geänderten Formulares gibt es logischerweise nur noch zwei Variablen, und zwar

- $edititeren | mit der ausgabe "Ändern"
und
- $ausgabe | mit dem geänderten Text

Mfg
Mitchell
Bitte warten ..
Mitglied: nxclass
14.05.2012 um 20:24 Uhr
zwar nicht in einem hidden Feld, aber es passiert
... na wie auch immer - ist ja nicht so wichtig

Nach 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 )
01.
echo <<<__HTML__ 
02.
<form action="" name="aenderung" method="post"> 
03.
	<input type="hidden" name="datei" value="$datei" /> 
04.
	<input type="submit" name="action" value="&Auml;ndern" /> 
05.
	<p> <textarea name="ausgabe" cols="105" rows="30">$text</textarea> </p> 
06.
</form> 
07.
__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.
!?
Bitte warten ..
Mitglied: Mitchell
15.05.2012 um 17:24 Uhr
kopf > tisch | auuuuuuuuuuuuutttttttttsssssssscccccccchhhhhhhhhhh

Da könnt ich mir doch...danke für dein Script, seit gestern brauche ich es aber nicht mehr . Ich Depp habe dem falschen Formular das hidden Feld übergeben...dem mit dem Text-Select nämlich. So läufts dann endlich:

01.
$textwahl = $_POST['textauswahl']; 
02.
 
03.
echo "<form action='panel.php' method='post'><input type='hidden' name='textauswahl' value=".$auswahl."><input class='panel_button' name='edit' type='submit' value='&Auml;ndern'><p><textarea name='ausgabe' cols='105' rows='30'>".$text_out['inhalt']."</textarea></p></form>"
04.
	if ($editieren == 'Ändern'
05.
	mysql_query("UPDATE tbl SET inhalt='$ausgabe', datum=NOW() WHERE datei = '$textwahl'");
Tschuldige die Verwirrung, ich wars halt auch und konnte es nicht ändern ^^.

"auf unterschiedliche Tabellen verweisen" | wie meinst du das? Es werden 3 Tabellen verwenden (inhalt, datum, datei)
"$auswahl gegen unterschiedliche Datenfelder geprüft wird ( `datei` bzw `file` )" | ähm...nö, wo denn?
"das es offenbar eine Art Versions-Kontrolle gibt für die Texte, aber Du beim speichern diese aktualisiert anstatt eine neue Version anzulegen." | nein, eine Kontrolle findet nicht statt. Der Text wird so ausgegeben, wie er einst in der DB abgespeichert wurde. Beim Abspeichern gibts nur ein Update des eben editierten Textes, richtig.

Mfg
Mitchell
Bitte warten ..
Mitglied: nxclass
15.05.2012 um 21:42 Uhr
So läufts dann endlich
... gut das freut mich - und ich hoffe Du versucht mal mehr mit Objekten und MVC zu Arbeiten. Am Anfang wird dir das sicherlich als viel unnötige coderei vorkommen, aber man hat im Endeffekt eine bessere Struktur im Code.
Bitte warten ..
Mitglied: Mitchell
16.05.2012 um 08:37 Uhr
Ich habe bei Klassen ehrlich gesagt noch nicht den richtigen Durchblick (Aufbau und Sinn sind mir aber bekannt ^^)...brings mir zwar bei, aber leider momentan wenig Zeit dafür. MVC halte ich irgendwie nichts von...bei kleinen Projekten wie diesen sehe ich den Nutzen nicht wirklich.

Danke nochmal für die Gedult...noch einer, dem ich ein Bier schulde

Mfg
Mitchell
Bitte warten ..
Ähnliche Inhalte
PHP
MySQL Abfrage aus Textarea ausführen und anzeigen.
gelöst Frage von MrHToastPHP2 Kommentare

Hallo, ich habe die Aufgabe eine HTML Seite zu erstellen. Mit der man eine variable MySQL Abfrage ausführen kann, ...

JavaScript
Textarea mit java und vbs zum sprechen bringen also ich will dass der Text dehn ich in die Textarea eingebe mit voise vbs oder java voise spricht
gelöst Frage von KekeheldtJavaScript16 Kommentare

<html><head> <body> <script Language="vbscript" Type="Text/vbscript" Function 5() Set Objvoice = CreateObject("sapi.spvoice") Set objFile = CreateObject("sapi.spFileSream.1") Objvoice.speak text Text = ...

Neue Wissensbeiträge
Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 4 StundenDatenschutz

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Microsoft

Letzte Updates für Win10 und Server2016 müssen bei Bedarf über den Update catalogue in den WSUS importiert werden!

Tipp von DerWoWusste vor 9 StundenMicrosoft1 Kommentar

automatisch kommt da nichts an im WSUS und auch nicht im SCCM. Siehe Hinweise zum Bezug der jeweils neuesten ...

Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 3 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 4 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement22 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...

Windows Server
Terminal Server 2016 erkennt Berechtigungen nicht
gelöst Frage von Thomas2Windows Server10 Kommentare

Hallo Administratoren, folgendes Problem stellt sich dar: Es gibt zwei Windows Server 2016, die als Terminal Server fungieren. Jetzt ...

SAN, NAS, DAS
Wer kennt sich mit QNAP und CISCO aus ?
gelöst Frage von MachelloSAN, NAS, DAS10 Kommentare

Hallo Zusammen hier im Forum, Ich habe ein QNas 451+ und dieses NAS hat zwei GBit Lan Adapter die ...