alaninalanin
Mitglied
Hallo,
ich habe eine Erweiterung für ein Forum geschrieben, welches ich geschrieben hab. Und zwar wird beim klicken auf einen bestimmten Link ein Formular eingeblendet, mit dem man einen Eintrag ändern kann.
Das ganze hab ich mit AJAX gemacht.
Allerdings habe ich ein Problem dabei, im Safari (Mac) funktioniert alles wunderbar.
Der Firefox (Win & Mac) und der IE (Win) geben mir in dem erscheinenden Formularfeld weder Umlaute noch Zeilenumbrüche an. Beim Absenden wird dann das "falsche" in die Datenbank eingetragen.
Wenn ich um die Ausgabe einfach komplett <textarea>$text</textarea> mache, ist alles in allen Browsern wunderbar. Es liegt also meines Wissens nach an dem JavaScript, dass ich verwende.
Ich bin echt verzweifelt. Habe schon alles mögliche probiert, was mir so einfiel.
Danke Jörg
bzw:
ich habe eine Erweiterung für ein Forum geschrieben, welches ich geschrieben hab. Und zwar wird beim klicken auf einen bestimmten Link ein Formular eingeblendet, mit dem man einen Eintrag ändern kann.
Das ganze hab ich mit AJAX gemacht.
Allerdings habe ich ein Problem dabei, im Safari (Mac) funktioniert alles wunderbar.
Der Firefox (Win & Mac) und der IE (Win) geben mir in dem erscheinenden Formularfeld weder Umlaute noch Zeilenumbrüche an. Beim Absenden wird dann das "falsche" in die Datenbank eingetragen.
Wenn ich um die Ausgabe einfach komplett <textarea>$text</textarea> mache, ist alles in allen Browsern wunderbar. Es liegt also meines Wissens nach an dem JavaScript, dass ich verwende.
Ich bin echt verzweifelt. Habe schon alles mögliche probiert, was mir so einfiel.
Danke Jörg
Code:
<script type="text/JavaScript">
<!--
function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
ro = new ActiveXObject("Microsoft.XMLHTTP");
}else{
ro = new XMLHttpRequest();
}
return ro;
}
var http = createRequestObject();
function post_read(action,pid) {
http.open('get', 'include/ajax_forum.php?action='+action+'&pid='+pid);
http.onreadystatechange = handleResponse;
http.send(null);
}
function post_save() {
http.open('post', 'include/ajax_forum.php?action='+document.post.action.value+'&pid='+document.post.pid.value+'&text='+document.post.text.value);
http.onreadystatechange = handleResponse;
http.send(null);
}
function handleResponse() {
if(http.readyState == 4){
var response = http.responseText;
var update = new Array();
if(response.indexOf('|' != -1)) {
update = response.split('|');
document.getElementById(update[0]).innerHTML = update[1];
}
}
}
//-->
</script>
bzw:
Code:
switch($action) {
case 'read':
if ( $sess[gruppe] != 'admin' ) $sql_query = db_query("SELECT * FROM forum_post WHERE pid = '$pid' AND mid = '$sess[mid]' LIMIT 1") or die(mysql_error());
else $sql_query = db_query("SELECT * FROM forum_post WHERE pid = '$pid' LIMIT 1") or die(mysql_error());
$anz = mysql_num_rows($sql_query);
if ( $anz == '1' ):
$item = mysql_fetch_array($sql_query);
$text = $item[text];
$text = htmlspecialchars($text);
echo "forum_$pid|<form action=\"\" name=\"post\" onsubmit=\"javascript:post_save(); return false;\" method=\"post\">
<input type=\"hidden\" name=\"action\" value=\"save\">
<input type=\"hidden\" name=\"pid\" value=\"$pid\">
<textarea name=\"text\">$text</textarea><br>
<input type=\"submit\" value=\"Eintrag speichern\"></form>";
else:
echo "meldung_$pid|Du hast nicht die erforderlichen Rechte um diesen Artikel zu verändern.";
endif;
break;
case 'save':
$text = addslashes($text);
if ( $sess[gruppe] != 'admin' ):
$ergebnis = db_query("UPDATE forum_post SET text = '$text' WHERE pid = '$pid' AND mid = '$sess[mid]'") or die(mysql_error());
else:
$ergebnis = db_query("UPDATE forum_post SET text = '$text' WHERE pid = '$pid'") or die(mysql_error());
endif;
$sql_query = db_query("SELECT * FROM forum_post WHERE pid = '$pid' LIMIT 1") or die(mysql_error());
$item = mysql_fetch_array($sql_query);
$temp = encode($item[text]);
echo "forum_$pid|$temp";
#echo "meldung_$pid|Der Eintrag wurde gespeichert.";
break;
}