Hallo GoT'ers 
Ik heb een irritant probleem waar ik serieus uren mee heb zitten stoeien, maar het nog niet heb kunnen oplossen. (Noot: ik wist niet zeker of ik hem in programming of hier moest plaatsen)
Ik heb namelijk een soort kladblok op mijn site. Persoonlijke notities waar je dus tekst in op kan slaan (kan handig zijn
).
Opzich functioneert het. Maar het doet zijn werk niet goed.
Dit systeempje werkt met javascript en zijn AJAX techniek. En het lijkt er op dat het probleem bij de javascript ligt, maar weet niet hoe ik het moet oplossen.
Probleem :
Dit is tijdens het opslaan van het kladblok. Normale tekst zoals 'abcd09' slaat hij prima op. Alleen als ik een é of een € teken wil plaatsen krijg ik rare tekens. Hij kan er niet goed mee overweg.
Als ik deze tekens rechtstreeks in de database invoer worden ze wel goed weergegeven als ik hetkladblok weer ophaal, maar als ik hem dan weer opsla is het weer een raar teken.
Nu dacht ik dus dat dit aan de charset lag. Ik had zelfs in mijn verwerkingsscript de volgende regel bovenaan staan geprobeerd:
Maar dit mocht niet baten.
En opzich is dat wel logisch imo, WANT... bij een gewoon form (zoals bij je hobby's invullen bij je profiel) gaat dit wel goed. Dus het probleem moet bij de javascript liggen dacht ik zo. Alleen ik weet mijn god niet wat te doen om dit op te lossen.
Ik zal even wat code posten.
Functie om een request te maken en data te sturen:
Via javascript de request maken
En dit is een stukje PHP code, waar voor zover ik weet het probleem niet ziet. Want als ik een extra teken toevoeg in de $value bijvoorbeeld $value.= 'é' dan komt die wel gewoon in de database. Hier had ik dus ook die extra PHP header toegevoegd:
Kan iemand mij misschien helpen
want het werkt nu wel een beetje, maar niet zoals het hoort. Graag wil ik ook normaal é en euro-tekens opslaan enzo
Ik heb een irritant probleem waar ik serieus uren mee heb zitten stoeien, maar het nog niet heb kunnen oplossen. (Noot: ik wist niet zeker of ik hem in programming of hier moest plaatsen)
Ik heb namelijk een soort kladblok op mijn site. Persoonlijke notities waar je dus tekst in op kan slaan (kan handig zijn
Opzich functioneert het. Maar het doet zijn werk niet goed.
Dit systeempje werkt met javascript en zijn AJAX techniek. En het lijkt er op dat het probleem bij de javascript ligt, maar weet niet hoe ik het moet oplossen.
Probleem :
Dit is tijdens het opslaan van het kladblok. Normale tekst zoals 'abcd09' slaat hij prima op. Alleen als ik een é of een € teken wil plaatsen krijg ik rare tekens. Hij kan er niet goed mee overweg.
Als ik deze tekens rechtstreeks in de database invoer worden ze wel goed weergegeven als ik hetkladblok weer ophaal, maar als ik hem dan weer opsla is het weer een raar teken.
Nu dacht ik dus dat dit aan de charset lag. Ik had zelfs in mijn verwerkingsscript de volgende regel bovenaan staan geprobeerd:
PHP:
1
| header('Content-Type: text/html; charset=iso-8859-1'); |
Maar dit mocht niet baten.
En opzich is dat wel logisch imo, WANT... bij een gewoon form (zoals bij je hobby's invullen bij je profiel) gaat dit wel goed. Dus het probleem moet bij de javascript liggen dacht ik zo. Alleen ik weet mijn god niet wat te doen om dit op te lossen.
Ik zal even wat code posten.
Functie om een request te maken en data te sturen:
JavaScript:
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
32
33
34
| function make_request(url, callback_function, http_method, post_values, return_xml) { http = create_http_object(); if(!http) { alert('Je browser ondersteunt deze feature niet.'); return false; } http.onreadystatechange = function() { //overbodig voor dit topic denk ik, wat statussen checken en de callback functie uitvoeren } if(!post_values) { post_values = null; } if(!http_method) { http_method = "GET"; } http.open(http_method, url, true); if(http_method == "POST") { http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); } http.send(post_values); } |
Via javascript de request maken
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| //---------------------------------------------------------------- // Save 'em //---------------------------------------------------------------- function save_usernotes() { var value = document.getElementById('usernotes').value; value = trim(value); // eigen functie: value = value.replace(/^\s+/,''); value.replace(/\s+$/,''); if( value.length > 5000 ) { document.getElementById('notes-saved').innerHTML = 'Je hebt meer dan 5000 tekens ingevoerd'; document.getElementById('notes-saved').style.display = 'block'; } else { var post_string = "value=" + value; make_request(url + 'app/js/notes.php', 'handle_save_usernotes', 'POST', post_string); } } |
En dit is een stukje PHP code, waar voor zover ik weet het probleem niet ziet. Want als ik een extra teken toevoeg in de $value bijvoorbeeld $value.= 'é' dan komt die wel gewoon in de database. Hier had ik dus ook die extra PHP header toegevoegd:
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
32
33
34
35
36
37
38
| if( isset($_POST['value']) ) { if( $core->user->logged_in === true ) { $value = trim($_POST['value']); // hier voegde ik dan $value .= ' ééé'; toe. dat werkte wel gewoon if( strlen($value) > 5000 ) { echo '200::too_long'; } else { $query = $core->db->prepare (' UPDATE members SET notes = :notes WHERE id = :uid LIMIT 1 '); $query->bindParam(':notes', $value, PDO::PARAM_STR); $query->bindParam(':uid', $core->user->fetch['id'], PDO::PARAM_INT); $query->execute(); echo '100::success'; } } else { echo '300::not_logged_in'; } } |
Kan iemand mij misschien helpen