Copy & Past Textarea Error beim DB Update

1uck3r

Mitglied
Hallo ich hab ein problem und zwar habe ich eine art datenbank system Programmiert was wie ein baukasten funktioniert. Das ist vllt weiter hin nicht interessant und auch nicht mein Problem. Mein problem ist nun das ich komischerweise bei allen textareas bei einem DB "INSERT" text in die Datenbank schreiben kann aber wenn ich diesen dann bearbeiten will mit DB "UPDATE" und nur ein buchstabe ändere ist der text anscheinend zu lang und er wird nicht mehr geupdatet. Woran kann das liegen.

Also nochmal kurz:

Beim "UPDATE" gibt es bei gleicher textlänge wie beim ersten "INSERT" bei textareas generell ein Problem. Daten werden nicht übermittelt.

Bin für jede hilfe dankbar.

PS: Die Postvariablen und so weiter habe ich kontrolliert da steht alles korrekt drinn.

Mfg 1uck3r
 
Zuletzt bearbeitet:
Hiho 1uck3r!

Poste doch mal bitte noch folgende Codes und Daten, damit eine dir weiterhelfende Antwort allen etwas leichter fällt.

1. Die Zeile des Textareas.
2. Eventuelle bearbeitende Zeilen der Postvariable.
3. Deine Insertzeile.
4. Deine Updatezeile.
5. Deinen ursprünglichen eingetragenen Text.
6. Den überarbeiteten Text.
7. Vom Backup der Datenbank die entsprechende Zeile, wo bei einem erneuten installieren der Datenbank, die Zeile eingetragen würde.

Wenn du all diese Daten gepostet hast, werden dir bestimmt einige helfen können.

Gruß Matze202.
 
Textarea:
PHP:
$style['TEXTAREA'] = "
<div class='formline'>
	<label ".$pflicht." for='".$element_name."'>".$bezeichner.":&nbsp;</label>
	<textarea name='".$element_name."' id='".$element_name."' rows='10' title='Bitte ausfüllen' class='".$class."'>".($_REQUEST[$element_name] ? $_REQUEST[$element_name] : ($_POST[$element_name] ? $_POST[$element_name] : $ini[$type][$element_name]))."</textarea>
</div>";

DB Insert
PHP:
function insert($mysql_tabellen, $mysql_spalten_fin, $mysql_werte_fin, $action_counter)
{	
	$insert = "INSERT INTO ".$mysql_tabellen[$action_counter]." 
	
		(".$mysql_spalten_fin.") 
		VALUES 
		(".$mysql_werte_fin.")";

	$result = @mysql_query($insert) or die(mysql_error());
}

DB Update
PHP:
function select_update($mysql_tabellen, $mysql_spalten_fin, $mysql_werte_fin, $action_counter)
{
	if($_GET['set_id'])
	{
		$_COOKIE['where'] = "WHERE vermieter_id = '".$_GET['set_id']."' ";
	}

	if($_GET['secure_id'])
	{
		$_COOKIE['where'] = "WHERE bild_id = '".$_GET['secure_id']."' ";
	}
	if($_COOKIE['where'] != ""){$where = $_COOKIE['where'];}	
	
	$select_spalten = explode(",", $mysql_spalten_fin);
	$select_werte 	= explode(",", $mysql_werte_fin);
	
		$update = mysql_query("UPDATE ".$mysql_tabellen[$action_counter]." SET ".$select_spalten[$action_counter]." = ".$select_werte[$action_counter]." ".$where." ");
		
	$select = mysql_query("SELECT * FROM ".$mysql_tabellen[$action_counter]." ".$where." ");
}

So das sind die Code Stücke wie gesagt das ist alles dynamisch die variablen für INSERT und UPDATE werden in einem array übermittelt. Das Textfeld steht in einer PHP Datei ebenfalls array so kann ich es von überall erreichen. Alles ist dynamisch auch meine Formulare. Man kann per ini datei und ohne befehle schenll was ändern ohne Programmieren zu können. Die Post Variablen sind korrekt nur danach geht es nicht weiter.

Ich hab nochmal getestet also wenn ich copy & paste mache geht es nur bis zu einer bestimmten textlänge dann ist schluss auf einmal. Auch wenn ich peer hand viel eingebe woran das liegen kann weiß ich nicht genau.

Also mal ein Fall beispiel:
Ich lege ein Objekt an mit beschreibung also benutze ich den befehl insert mit langem text in der Textarea. Funktioniert einwandfrei wird in die DB geschrieben. Dann gehe cih vielleicht nochmal auf das Objetkt und bearbeite es. Ändere den text ohne sonderzeichen und alles nur buchstaben.. schreib vllt test dahinter und will speichern kommt nix in der DB an. Kürze ich den text auf 20 zeichen oder so wird auch dieser geupdatet. Wieso ist der text auf einmal zu lang das verstehe ich nicht das ist mein Problem.

Mfg 1uck3r
 
Zuletzt bearbeitet:
Erstmal wäre sehr interessant, welche Länge hast du für den Text überhaupt eingestellt bzw. hast du als Typ, Text oder Longtext eingestellt?

Bring bitte noch die Beispiele an, die du vor dem Updaten und mit dem Updaten verwendet hast.

Meine Vermutung liegt sehr stark bei folgendem Code, weil du ja damit, aus der einen Variable, die du vorher aus der Datenbank geladen haben wirst, viele Array-Teile machst, welche du ja auf.

PHP:
    $select_spalten = explode(",", $mysql_spalten_fin);
    $select_werte     = explode(",", $mysql_werte_fin);

Desweiteren wundert mich der Einsatz deiner Variable $action_counter, welche dauerhaft gleichbleiben wird und weil du ja kein abarbeitenden Schleifen dazu in der Funktion verwendest.

Im großen und ganzen, wirst du die gesamten Einträge, die du in das Textarray feld einträgst, bei jedem Komma trennen und dauernd in ein und das selbe Feld eintragen wollen.

Ersetze mal folgendes:
PHP:
    $select_spalten = explode(",", $mysql_spalten_fin);
    $select_werte     = explode(",", $mysql_werte_fin);
    
        $update = mysql_query("UPDATE ".$mysql_tabellen[$action_counter]." SET ".$select_spalten[$action_counter]." = ".$select_werte[$action_counter]." ".$where." ");

durch folgendes:
PHP:
//    $select_spalten = explode(",", $mysql_spalten_fin);
//    $select_werte     = explode(",", $mysql_werte_fin);
    
        $update = mysql_query("UPDATE ".$mysql_tabellen[$action_counter]." SET ".$select_spalten_fin." = ".$select_werte_fin." ".$where." ");

und schon müßte es meines erachtens funktionieren.

Gruß Matze202.
 
also das hier ist eine INI Datei mit Formular Daten

PHP:
[Form]
Handel			= "HANDEL"
Linktext#		        = "INPUT"
Straße/Hausnr	        = "INPUT"
Objekt URL:URL	= "INPUT"
Kategorie#		= "SELECT"
Lage im Ort#	= "GOOGLE_POS"
Preis A:PREIS	= "INPUT"
Preis B:PREIS	= "INPUT"
Preis C:PREIS	= "INPUT"
Preis D:PREIS	= "INPUT"
Suchkriterien#	= "CHECKBOX"
Personen#:ZAHL	= "INPUT"
Bild#			        = "INPUT_BILD"
Beschreibung#	        = "TEXTAREA"
Portal#			= "CHECKBOX"
Übernehmen		= "SUBMIT"

[SQL_CONFIG]
; Defaulttabelle 
Defaulttabelle			= "objekte"


[ sql]
handel				        = "SELECT_UPDATE=|vermieter_id|"
linktext				        = "SELECT_UPDATE=|linktext|"
straße/hausnr			        = "SELECT_UPDATE=|adresse|"
objekturl				        = "SELECT_UPDATE=|objekt_url|"
kategorie				        = "SELECT_UPDATE=|kategorie|"
preisa					= "SELECT_UPDATE=|preis_a|"
preisb					= "SELECT_UPDATE=|preis_b|"
preisc					= "SELECT_UPDATE=|preis_c|"
preisd					= "SELECT_UPDATE=|preis_d|"
suchkriterien			        = "SELECT_UPDATE=|suchkriterien|"
personen				        = "SELECT_UPDATE=|personen|"
beschreibung			        = "SELECT_UPDATE=|beschreibung|"
portal					= "SELECT_UPDATE=|portal|"

So dort kannst du per hand dynamisch Formular inhalte ändern

Das dabei wichtige ist eigendlich nur der SQL Teil dort steht am anfang das in dem Formular angesprochene feld dann "SELECT_UPDATE" ist die funkction die gestartet werden soll und dahinter steht das zu beschreibende feld in der default tabelle.

Mit dem action counter spreche ich jeweils die dazugehöriegen Arraywerte an wie du schon sagtest das ändert sich pro Form element nicht. Um den Update string zu erstellen wird es nacher zu einem array. Deine lösung funktioniert nicht. Weil jedes andere Formular Objekt gleichermaßen behandelt wird.

Das Problem ist nur das bei den Textareas der Text beim Update iwann zu lang wird.

Hier mal ein arrayauszug des ganzen kur vor dem Update Funtions aufruf wirklich genau kurz davor es wird nichts mehr gemacht nur danach noch die funktion gestartet.

HTML:
Array ( [0] => 3 [1] => test [2] => [3] => [4] => Reiterferien [5] => [6] => [7] => [8] => [9] => Nichtraucher [10] => 4 [11] => Diese Kriterien beziehen sich einerseits auf die Merkmale des Textes selbst (Kohäsion und Kohärenz), andererseits auf die Merkmale einer Kommunikationssituation, aus der der betreffende Text entsteht bzw. in der er eingesetzt wird (Intentionalität, Akzeptabilität, Informativität, Situationalität).rnrnDie Kohäsion ist der grammatische Zusammenhalt des Textes: Sprachliche Oberflächenstrukturen verschiedener Sätze und anderer Teile des Textes beziehen sich aufeinander und sorgen so für eine erkennbare Zusammengehörigkeit. Die Kohärenz bezeichnet dagegen den inhaltlichen, logischen Zusammenhang in einem Text. Kohäsion und Kohärenz gehören zu den am weitesten akzeptierten Textualitätskriterien, aber auch hier gibt es Abweichungen: Es gibt durchaus Texte, welche aus zusammenhanglosen Worten oder gar Lauten, zum Teil auch aus bis zu bloßen Geräuschen reduzierten Klangmalereien bestehen, und die im Ganzen dennoch vielschichtig interpretierbar, eine eigene Art von Textualität erreichen (z. B. Dada-Gedichte). [12] => Hooksiel )
 
Zuletzt bearbeitet von einem Moderator:
@Matze202 du bist Genial alter der Fehler waren Kommas im text habe mein array jetzt durch ein anderes trennzeichen teilen lassen vielen dank für die schnell hilfe ;)

BIG THX
 
Bitte gern geschehen, aber ich meinte eigentlich dass Trennen ganz weg lassen, da du bei dem ersten eintragen, diese ja auch nicht trennst.

Gruß Matze202.
 
Zurück