Hallo!
Seit geraumer Zeit stehe ich hier vor einem Problem, dass ich anscheinend nicht selbst lösen kann. Ich habe ein Formular in dessen Textfeld ich im Nachhinein per Javascript den Editor laden kann. Mache ich dies, wird der Inhalt aber nicht mehr übergeben. Lasse ich es sein, geht das. Also was ich meine ist dies:
Formular:
Das Javascript dazu:
Ich benutze JQuery um den Inhalt per Ajax erst an die new_Content_CHECK.php zu übergeben welche alles auf Richtigkeit überprüft (fragt mich nicht warum
aber ich finde es angenehmer Benutzereingaben in PHP zu überprüfen). Falls die Antwort dieser Datei nur "1" ist (was es im Moment zu Testzwecken durch ein simples "echo 1"; immer ist), geht es weiter mit der Funktion senddata. Die speichert die Daten dann in meine MySQL Datenbank.
Das ganze Ajax ansich funktioniert wunderbar (danke hier an das jQuery Team
) ABER sobald, ich auf den Link "LoadTinyMCE" klicke um den Editor zu laden wird dessen inhalt dann nicht mehr weitergegeben. In der Datenbank landen dann nur noch die Werte für "caption_de" und "caption_en".
Gerade habe ich auch versucht den Editor nicht im nachhinein zu laden, sondern direkt so anzubieten. Auch dann werden die Daten im Textfeld "vergessen".
Ich weiß das ist jetzt recht viel Text gewesen
, aber womöglich hat einer von euch ne Idee?
Vielen Dank,
Maulwurf
EDIT: OK, jetzt bin ich komplett weg????
Ich habe nocheinmal alles ausprobiert und jetzt erscheint in der Datenbank bei "content_de" immer "undefined", wenn ich den Editor benutze. Sobald ich Sonderzeichen wie "&" versuche zu speichern geht es nicht mehr - so wie bei Umlauten.
ABER im moment speicher ich die Informationen mit folgendem PHP-Skript:
(ich weiß: unsicher.... aber ist ja alles im moment nur in der fehlerfindung)
Das sollte sich doch im Moment zumindest gänzlich gar nicht um Umlaute scheren???
und die mysql_insert funktion war einer meiner glanzleistungen
Seit geraumer Zeit stehe ich hier vor einem Problem, dass ich anscheinend nicht selbst lösen kann. Ich habe ein Formular in dessen Textfeld ich im Nachhinein per Javascript den Editor laden kann. Mache ich dies, wird der Inhalt aber nicht mehr übergeben. Lasse ich es sein, geht das. Also was ich meine ist dies:
Formular:
HTML:
<a href="javascript:load_tinymce();">Load TinyMCE</a>
<form id="insert_content" method="post" action="javascript:form_submit();">
<p>Überschrift Deutsch: <input id="caption_de" type="text"></p>
<p>Überschrift Englisch: <input id="caption_en" type="text"></p>
DER Inhalt AUF DEUTSCH!
<textarea id="content_de" name="content_de" style="width:100%">
</textarea>
<br />
<input id="new_content" type="submit" value="TEST">
</form>
Code:
//BEGINN TINYMCE
function load_tinymce() {
tinyMCE.init({
// General options
mode : "textareas",
theme : "advanced",
file_browser_callback : "tinyBrowser",
language : "de",
plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
// Theme options
theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : true,
// Example content CSS (should be your site CSS)
content_css : "css/example.css",
// Drop lists for link/image/media/template dialogs
template_external_list_url : "js/template_list.js",
external_link_list_url : "js/link_list.js",
external_image_list_url : "js/image_list.js",
media_external_list_url : "js/media_list.js",
// Replace values for the template plugin
template_replace_values : {
username : "Some User",
staffid : "991234"
}
});
}
//////////// ENDE TINYMCE
//BEGINN DES AJAX POSTENS
$(document).ready(function(){
$("form#insert_content").submit(function() {
// deactivate submit button
$("#new_content").attr("disabled","disabled");
$("#insert_content").hide();
$("#working").show();
// we want to store the values from the form input box, then send via ajax below
var caption_de = $('#caption_de').attr('value');
var caption_en = $('#caption_en').attr('value');
var text_de = $('#content_de').attr('value');
$.ajax({
type: "POST",
url: "ajax/new_content_CHECK.php",
data: "caption_de="+ caption_de +"&caption_en="+ caption_en +"&text_de="+ text_de,
success: function(msg) {
if(msg == 1) {
$("#php_error").hide();
senddata(text_de, caption_de, caption_en);
} else {
$("#php_error").html(msg); // Fehlermeldung anzeigen lassen
$("#php_error").show();
$("#new_content").removeAttr("disabled");
$("#working").hide();
$("#insert_content").show();
$("#info_bad").html('ERROR');
$("#info_bad").slideDown();
setTimeout('hideinfo_bad()', 3000);
}
}
});
return false;
})
});
function senddata(text, name_de, name_en) {
$.ajax({
type: "POST",
url: "ajax/new_content_insert.php",
data: "caption_de="+ name_de +"&caption_en="+ name_en +"&text_de="+ text,
});
$("#working").hide();
$("#success").fadeIn();
$("#info_good").html("Alles in Ordnung");
$("#info_good").slideDown(1000),
setTimeout('hideinfo_good()', 3000);
}
function form_submit() {
}
</script>

Das ganze Ajax ansich funktioniert wunderbar (danke hier an das jQuery Team

Gerade habe ich auch versucht den Editor nicht im nachhinein zu laden, sondern direkt so anzubieten. Auch dann werden die Daten im Textfeld "vergessen".
Ich weiß das ist jetzt recht viel Text gewesen

Vielen Dank,
Maulwurf
EDIT: OK, jetzt bin ich komplett weg????
Ich habe nocheinmal alles ausprobiert und jetzt erscheint in der Datenbank bei "content_de" immer "undefined", wenn ich den Editor benutze. Sobald ich Sonderzeichen wie "&" versuche zu speichern geht es nicht mehr - so wie bei Umlauten.
ABER im moment speicher ich die Informationen mit folgendem PHP-Skript:
(ich weiß: unsicher.... aber ist ja alles im moment nur in der fehlerfindung)
PHP:
# // CLIENT INFORMATION
$caption_de = $_POST["caption_de"];
$caption_en = $_POST["caption_en"];
$text_de = $_POST["text_de"];
$columns = array("text_de", "caption_de", "caption_en");
$data = array($text_de, $caption_de, $caption_en);
mysql_insert("content_pages", $columns, $data);
und die mysql_insert funktion war einer meiner glanzleistungen

PHP:
function mysql_insert($row, $column, $set) {
if(reject_sql($set)) {
echo $LANG_XSS_WARNING;
die();
} else {
if(is_array($set)) {
$i = 0;
while($i < count($set)) {
$set[$i] = mysql_real_escape_string($set[$i]); //mysql abfrage sichern
$i++;
}
} else {
$set = mysql_real_escape_string($set);
}
if(is_array($set)) {
$sql = "INSERT INTO ".$row." (".$column[0]."";
$i = 1;
while($i < count($set)) {
$sql = $sql.", ".$column[$i]."";
$i++;
}
$sql = $sql.") VALUES ('".$set[0]."'";
$i = 1;
while($i < count($set)) {
$sql = $sql.", '".$set[$i]."'";
$i++;
}
$sql = $sql.")";
} else {
$sql = "INSERT INTO ".$row." (".$column.") VALUES ('".$set."')";
}
$db = mysql_query($sql);
return $db;
}
}
Zuletzt bearbeitet: