HTMLEntities
Ik ben bezig met een klein CMS systeem. Nu lukt het afhandelen van de HTML me niet. Deze kan worden aangepast met TinyMCE. Vervolgens pas ik hier de htmlentities functie op toe. Tot hier gaat het goed. Als ik het nu bij het ophalen met html_entity_decode weer decode gaat het inprincipe goed. Ik maak echter gebruik van ajax, en jquery/javascript gaat er niet goed mee om. Deze laat het zien als text (dus ook de html tags). Hierbij maakt het niet uit of ik de decode functie wel of niet gebruik.
Weet iemand hoe ik dit kan oplossen?
Alvast bedankt
htmlentities met vervolgens de omgekeerde bewerking is nogal loos niet?
Mogelijke complicatie hierbij is dat je niet overal consequent dezelfde character encoding gebruikt. Functies zoals htmlentities werken alleen correct als je (overal) de juiste (en liefst één) character encoding hanteert en je bronmateriaal ook in deze character encoding is opgeslagen.
Is er een speciale reden waarom je overal htmlentities overheen wilt gooien?
"Een klein CMS" klinkt ook een beetje paradoxaal :s.
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'text-decoration: line-through;">Als je op een van de pijltjes op het dashboard d' at line 2
Dat komt denk ik door de ", hierdoor word waarschijnlijk in PHP de query afgesloten en dat veroorzaakt de error (denk ik).
Beveiliging in de query mist waarschijnlijk.
1) Je HTML document:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<html>
<head>
<meta charset="UTF-8">
<title>TODO supply a title</title>
</head>
<body>
<div>TODO write content</div>
</body>
</html>
<head>
<meta charset="UTF-8">
<title>TODO supply a title</title>
</head>
<body>
<div>TODO write content</div>
</body>
</html>
2) je mysql tabellen: Collatie: utf8_unicode_ci
3) je mysql connectie:
1) ik heb nu dit <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
2) Is ingesteld
3) $this->mysqli->set_charset('utf8');
Dit helpt allemaal niet, blijf hetzelfde probleem hebben
@Thomas van den Heuvel
$verhaal = $this->connection->real_escape_string($verhaal); Heb dit toegevoegd, helpt niet.
Quote:
Dan zit daar waarschijnlijk de fout.Ik maak echter gebruik van ajax, en jquery/javascript gaat er niet goed mee om. Deze laat het zien als text (dus ook de html tags). Hierbij maakt het niet uit of ik de decode functie wel of niet gebruik.
Kun je relevante code posten waarmee je informatie ophaalt / afdrukt via jQuery?
EDIT: en post ook je uiteindelijke INSERT / UPDATE query.
Gewijzigd op 05/03/2015 23:41:38 door Thomas van den Heuvel
Ophalen data uit database (ajax request)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$query = 'SELECT v.id, v.naam, v.verhaal, lv.lokaal, lv.kaart
FROM opendag_vakken as v
JOIN opendag_leerweg_has_vakken as lv
ON v.id = lv.vakken_id
WHERE v.id = "' . $vak . '"';
$this->connection->SetError('Ophalen van vak info mislukt!');
$load = $this->connection->load($query);
$load['data'][0]['verhaal'] = html_entity_decode($load['data'][0]['verhaal']);
json_encode($load);
?>
$query = 'SELECT v.id, v.naam, v.verhaal, lv.lokaal, lv.kaart
FROM opendag_vakken as v
JOIN opendag_leerweg_has_vakken as lv
ON v.id = lv.vakken_id
WHERE v.id = "' . $vak . '"';
$this->connection->SetError('Ophalen van vak info mislukt!');
$load = $this->connection->load($query);
$load['data'][0]['verhaal'] = html_entity_decode($load['data'][0]['verhaal']);
json_encode($load);
?>
Opslaan in de database van text
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$verhaal = $this->connection->real_escape_string($verhaal);
// update verhaal
$query = 'UPDATE opendag_vakken
SET verhaal = "' . $verhaal . '"
WHERE id = ' . $vak . ' ';
$this->connection->SetError('Opslaan van verhaal mislukt!');
$load = $this->connection->save($query);
return $load;
?>
$verhaal = $this->connection->real_escape_string($verhaal);
// update verhaal
$query = 'UPDATE opendag_vakken
SET verhaal = "' . $verhaal . '"
WHERE id = ' . $vak . ' ';
$this->connection->SetError('Opslaan van verhaal mislukt!');
$load = $this->connection->save($query);
return $load;
?>
EDIT: Probleem opgelost. Bij het opslaan htmlentities() gebruiken, en dan ophalen en met de onderstaande code decoden in de javascript
Gewijzigd op 06/03/2015 10:45:39 door Matthijs Vos
index.htm
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
30
31
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
30
31
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
</head>
<body>
<div id="test"></div>
<script type="text/javascript">
//<![CDATA[
$().ready(function() {
$.ajax({
'type': 'GET',
'url': 'test.php',
'dataType': 'json',
'success': function(data) {
console.log(data);
if (data.status == 'success') {
$('#test').html(data.html);
} else {
$('#test').html('<p>failed to load content</p>');
}
}
});
});
//]]>
</script>
</body>
</html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
</head>
<body>
<div id="test"></div>
<script type="text/javascript">
//<![CDATA[
$().ready(function() {
$.ajax({
'type': 'GET',
'url': 'test.php',
'dataType': 'json',
'success': function(data) {
console.log(data);
if (data.status == 'success') {
$('#test').html(data.html);
} else {
$('#test').html('<p>failed to load content</p>');
}
}
});
});
//]]>
</script>
</body>
</html>
test.php