& verschijnt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Henk PHP

Henk PHP

22/02/2008 23:04:00
Quote Anchor link
Hoi,

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)
PHP script in nieuw venster Selecteer het PHP script
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)
PHP script in nieuw venster Selecteer het PHP script
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
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;
}
}


Wat doe ik verkeerd en hoe kan ik dat het beste oplossen?
Gewijzigd op 01/01/1970 01:00:00 door Henk PHP
 
PHP hulp

PHP hulp

02/03/2024 17:19:17
 
Jan Koehoorn

Jan Koehoorn

22/02/2008 23:07:00
Quote Anchor link
Heb je al eens &amp; geprobeerd in plaats van &?
 
Henk PHP

Henk PHP

22/02/2008 23:08:00
Quote Anchor link
Komt er ook niet doorheen
 
Patrick Niezen

Patrick Niezen

22/02/2008 23:12:00
Quote Anchor link
Volgens mij parse jij het bericht dat jij met AJAX verstuurd naar editforumpost.php op '&', of niet? Als dat jouw probleem is, misschien moet je dan een andere 'splitter' zoeken in je bericht, of verstuur de variabelen mee als $_GET variabele.

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
 
Henk PHP

Henk PHP

22/02/2008 23:16:00
Quote Anchor link
Een tekst met breaks en alles meesturen als GET lijkt me nou niet echt ideaal, denk ik.

Dit is trouwens het stukje code in editforumpost.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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']))));
;
}
 
Patrick Niezen

Patrick Niezen

22/02/2008 23:28:00
Quote Anchor link
Ah... ik wist niet dat de parameter van xmlHttp.send(param) als variabelen over de $_POST werden gestuurd.

Het enige wat ik hier kan bedenken is het replacen van alles voortkomens van '&' in de variabelwaarden verwisselen met '&amp;', 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
 
Henk PHP

Henk PHP

22/02/2008 23:40:00
Quote Anchor link
Thanks, ik zal het morgen even uit proberen.
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 ;)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.