& verschijnt niet
ik heb een soort ajax edit systeempje gemaakt. Je klikt op een edit knopje en dan kun je meteen je reacties aanpassen en opslaan en het resultaat krijg je meteen te zien. Het werkt verder prima. Ik kwam er alleen achter dat hij het '&' karakter niet door laat. Dus als ik het typ dan zie je hem niet meer in de db en alle tekst erna niet. Volgens mij komt dit omdat je de post vars meestuurt als :
Code (php)
1
<input type=\"button\" onclick=\"savePost(" . $_GET['id'] . ",'nieuwepost='+ document.editforumposts" . $_GET['id'] . ".nieuwepost" . $_GET['id'] . ".value + '&nieuwetitel='+ document.editforumposts" . $_GET['id'] . ".nieuwetitel" . $_GET['id'] . ".value)\" value=\"Opslaan\">
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function savePost(str, comment) {
createXMLHttpRequest();
var url = "ajax/editforumpost.php?id="+str;
url=url+"&sid="+Math.random();
xmlHttp.open("POST", url, true);
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.send(comment);
function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
parseResults();
}
}
else {
document.getElementById("post"+str).innerHTML=" Bezig met opslaan";
}
}
function parseResults() {
document.getElementById("post"+str).innerHTML=xmlHttp.responseText;
}
}
createXMLHttpRequest();
var url = "ajax/editforumpost.php?id="+str;
url=url+"&sid="+Math.random();
xmlHttp.open("POST", url, true);
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.send(comment);
function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
parseResults();
}
}
else {
document.getElementById("post"+str).innerHTML=" Bezig met opslaan";
}
}
function parseResults() {
document.getElementById("post"+str).innerHTML=xmlHttp.responseText;
}
}
Wat doe ik verkeerd en hoe kan ik dat het beste oplossen?
Gewijzigd op 01/01/1970 01:00:00 door Henk PHP
Heb je al eens & geprobeerd in plaats van &?
Komt er ook niet doorheen
Edit: dit wordt als bericht verstuurd:
'nieuwepost=Dit is een voorbeeldbericht dat moet worden gewijzigd&nieuwetitel=Dit is de nieuwe titel
Jij split deze waarschijnlijk m.b.v. explode, maar wanneer nieuwepost een '&' als waarde heeft wordt de request verkeerd geparsed.
Gewijzigd op 01/01/1970 01:00:00 door Patrick Niezen
Dit is trouwens het stukje code in editforumpost.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if($_SERVER['REQUEST_METHOD'] == "POST")
{
////////controleren if first post
$controleersql = "SELECT id FROM forumtopics WHERE firstpost = '" . mysql_real_escape_string($_GET['id']) . "'";
$controleerquery = mysql_query($controleersql) or die (mysql_error());
if(mysql_num_rows($controleerquery) == 1)
{
$sql5 = "UPDATE forumtopics SET titel = '" . mysql_real_escape_string($_POST['nieuwetitel']) . "' WHERE firstpost = '" . mysql_real_escape_string($_GET['id']) . "'";
$uitvoeren5 = mysql_query($sql5) or die (mysql_error());
}
$sql = "UPDATE forumposts SET bericht = '" . mysql_real_escape_string($_POST['nieuwepost']) . "', titel = '" . mysql_real_escape_string($_POST['nieuwetitel']) . "' WHERE id = '" . mysql_real_escape_string($_GET['id']) . "'";
$uitvoeren = mysql_query($sql) or die (mysql_error());
echo smileys(nl2br(htmlspecialchars(stripslashes($_POST['nieuwepost']))));
;
}
{
////////controleren if first post
$controleersql = "SELECT id FROM forumtopics WHERE firstpost = '" . mysql_real_escape_string($_GET['id']) . "'";
$controleerquery = mysql_query($controleersql) or die (mysql_error());
if(mysql_num_rows($controleerquery) == 1)
{
$sql5 = "UPDATE forumtopics SET titel = '" . mysql_real_escape_string($_POST['nieuwetitel']) . "' WHERE firstpost = '" . mysql_real_escape_string($_GET['id']) . "'";
$uitvoeren5 = mysql_query($sql5) or die (mysql_error());
}
$sql = "UPDATE forumposts SET bericht = '" . mysql_real_escape_string($_POST['nieuwepost']) . "', titel = '" . mysql_real_escape_string($_POST['nieuwetitel']) . "' WHERE id = '" . mysql_real_escape_string($_GET['id']) . "'";
$uitvoeren = mysql_query($sql) or die (mysql_error());
echo smileys(nl2br(htmlspecialchars(stripslashes($_POST['nieuwepost']))));
;
}
Het enige wat ik hier kan bedenken is het replacen van alles voortkomens van '&' in de variabelwaarden verwisselen met '&', zoals Jan zei...
Leuke functie: http://www.w3schools.com/jsref/jsref_encodeURI.asp -> misschien die op je variabelen loslaten voor het versturen.
Gewijzigd op 01/01/1970 01:00:00 door Patrick Niezen
Volgens mij moet ik dan wel encodeURIComponent moet gebruiken aangezien encodeURI & wel doorlaat en encodeURIComponent niet.
Toch bedankt Patrick! Ik laat nog wel weten of het gelukt is ;)