Hallo beisammen,
ich habe mal wieder ein Problem. Ich möchte eine kleine Administrationsseite für Blogeinträge machen. Das habe ich so gelöst, dass ich mir über PHP eine Tabelle ausgeben lasse, wo die Blogeinträge untereinander weg eingetragen sind. Dazu habe ich Links eingebaut, mit denen man Löschen und Bearbeiten soll.
Das mache ich so:
Funktioniert auch prima. Beim klick auf diese Links, sende ich per JS eine AJAX-Anfrage an den Server, der diese dann weiter verarbeitet. Das funktioniert auch super so weit. Mein Problem liegt jetzt bei folgendem: Ich habe ein Popupfenster, indem ein Formular ist, womit man den Inhalt eines Blogeintrags ändern kann. Der vorhere Inhalt wird durch eine AJAX-Anfrage reingeladen, das funktioniert. Wenn ich das Formular nun abschicke, soll er eine weitere Anfrage versenden, womit ich die Daten dann an den Server liefere, der dann die Datenbankeinträge updatet. Das funktioniert bei mir in Dreamweaver in der Live-Vorschau auch sehr gut. Bei Chrome nicht. Es ist egal, ob ich über POST oder GET die Werte übermittele, unter Chrome bekomme ich nicht einmal Rückmeldung, ob die Anfrage vom Server angenommen wurde. Da ich bei der Anfrage mehrere Werte übermitteln muss, habe ich irgendwie das Gefühl, dass es daran liegt, aber dann dürfte es in anderen Browsern auch nicht klappen.
Hier mal mein Script zum Erstellen des Bearbeitungsformulars und das Füllen mit den vorherigen Werten. (funktioniert):
Und nun das Skript, was die Daten dann abschickt:
Ich speicher die ID des Eintrags in einem Hiddenfeld, das funktioniert, daran liegt es nicht. Ich habe auch bereits versucht, die Werte anhand "encodeURIComponent()" zu bearbeiten und die "&"-Zeichen zwischen den POST-Werten auch schon zu "&" geändert, bringt alles nichts.
Hier nochmal das dazu passende Serverscript:
Bis zu der Ausgabe der 3 zu übergebenden Werte komme ich in Chrome gar nicht, IE macht das problemlos.
Ich würde mich riesig freuen, wenn mir jemand helfen könnte
Dankeschön und einen schönen Abend wünsche ich
MfG
ElementZ
ich habe mal wieder ein Problem. Ich möchte eine kleine Administrationsseite für Blogeinträge machen. Das habe ich so gelöst, dass ich mir über PHP eine Tabelle ausgeben lasse, wo die Blogeinträge untereinander weg eingetragen sind. Dazu habe ich Links eingebaut, mit denen man Löschen und Bearbeiten soll.
Das mache ich so:
Code:
<a href=\"javascript:sendDelete($id);\">Löschen</a>
<a href=\"javascript:createUpdate($id)\">Bearbeiten</a>
Funktioniert auch prima. Beim klick auf diese Links, sende ich per JS eine AJAX-Anfrage an den Server, der diese dann weiter verarbeitet. Das funktioniert auch super so weit. Mein Problem liegt jetzt bei folgendem: Ich habe ein Popupfenster, indem ein Formular ist, womit man den Inhalt eines Blogeintrags ändern kann. Der vorhere Inhalt wird durch eine AJAX-Anfrage reingeladen, das funktioniert. Wenn ich das Formular nun abschicke, soll er eine weitere Anfrage versenden, womit ich die Daten dann an den Server liefere, der dann die Datenbankeinträge updatet. Das funktioniert bei mir in Dreamweaver in der Live-Vorschau auch sehr gut. Bei Chrome nicht. Es ist egal, ob ich über POST oder GET die Werte übermittele, unter Chrome bekomme ich nicht einmal Rückmeldung, ob die Anfrage vom Server angenommen wurde. Da ich bei der Anfrage mehrere Werte übermitteln muss, habe ich irgendwie das Gefühl, dass es daran liegt, aber dann dürfte es in anderen Browsern auch nicht klappen.
Hier mal mein Script zum Erstellen des Bearbeitungsformulars und das Füllen mit den vorherigen Werten. (funktioniert):
Code:
function createUpdate(id) {
var titel = document.getElementById('titel');
var text = document.getElementById('text');
var hide = document.getElementById('hide');
document.getElementById("hover").style.display = "block";
req = getRequest();
if(req) {
req.onreadystatechange = function() {
if(req.readyState == 4 && req.status == 200) {
var str = req.responseText;
var inhalt = str.split("(((())))");
titel.value = inhalt[0];
text.value = inhalt[1];
hide.value = id;
}
}
req.open("get", "update.php?id="+id, true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.send(null);
}
}
Und nun das Skript, was die Daten dann abschickt:
Code:
function sendUpdate() {
var req = getRequest();
if(req) {
var hide = document.getElementById('hide');
var titel = document.getElementById('titel');
var text = document.getElementById('text');
req.onreadystatechange = function() {
if(req.readyState == 4 && req.status == 200) {
alert(req.responseText);
}
}
req.open("post", "update.php", true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.send('id='+hide.value+'&titel='+titel.value+'&text="+text.value);
}
}
Ich speicher die ID des Eintrags in einem Hiddenfeld, das funktioniert, daran liegt es nicht. Ich habe auch bereits versucht, die Werte anhand "encodeURIComponent()" zu bearbeiten und die "&"-Zeichen zwischen den POST-Werten auch schon zu "&" geändert, bringt alles nichts.
Hier nochmal das dazu passende Serverscript:
Code:
<?
include("config.inc.php");
if(isset($_POST['id'])) {
if(isset($_POST['titel']) && isset($_POST['text'])) {
$id = $_POST['id'];
$titel = $_POST['titel'];
$text = $_POST['text'];
echo "$id, $titel, $text";
/*
$con = mysqli_connect($host, $user, $password, $database);
$befehl = "UPDATE `$table` SET title='$titel', article='$text' WHERE id=$id";
mysqli_query($con, $befehl);
mysqli_close($con);
echo "ERFOLGREICH!";*/
} else {
$id = $_POST['id'];
$connection = mysqli_connect($host, $user, $password, $database) or exit("Fehler beim Verbinden mit der Datenbank.");
$befehllesen = "SELECT `title`, `article` FROM `$table` WHERE id=$id";
$query = mysqli_query($connection, $befehllesen);
$data = mysqli_fetch_object($query);
$vtitel = $data -> title;
$vtext = $data -> article;
mysqli_close($connection);
echo "$vtitel (((()))) $vtext";
}
} else{
echo "Es wurde kein zu bearbeitender Beitrag ausgewählt.";
}
?>
Ich würde mich riesig freuen, wenn mir jemand helfen könnte
Dankeschön und einen schönen Abend wünsche ich
MfG
ElementZ