login  Naam:   Wachtwoord: 
Registreer je!
 Forum

select query met umlaut

Offline roy - 24/07/2009 00:04 (laatste wijziging 24/07/2009 00:06)
Avatar van royPHP gevorderde Hi all,

Als ik de volgende query in phpMyAdmin uitvoer dan krijg ik er een resultaat uit.
Maar wanneer ik deze query op de website zelf uitvoer dan krijg ik geen resultaat. Op de website zelf voer ik de query uit met adoDB

de query is:

SELECT * FROM art WHERE art.title = 'geflügelte'

Wie weet hoe ik dit op kan lossen.

10 antwoorden

Gesponsorde links
Offline MiST - 24/07/2009 00:07
Avatar van MiST Lid waarschijnlijk een charsetprobleempje ofzo?

probeer de charsets van je HTML en db eens te matchen. beide utf8 of latin1 (latin1 wsl beste optie voor umlauts, maar minder uit technisch standpunt denk ik)
Offline roy - 24/07/2009 00:10 (laatste wijziging 24/07/2009 00:17)
Avatar van roy PHP gevorderde html staat al op: <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>

in de db: utf8_general_ci en latin1_swedish_ci geprobeerd.

Beide zonder succes, en wat kan ik nu nog proberen?
Offline vinTage - 24/07/2009 00:29
Avatar van vinTage Nieuw lid Wat gebeurd er als je LIKE gebruikt ?

Gebruik je mss htmlentities oid voor je inputs ?
Offline snxs - 24/07/2009 00:30 (laatste wijziging 24/07/2009 00:34)
Avatar van snxs Nieuw lid Dat mag niet uitmaken voor het krijgen van content... Oh wacht, die "ü", probeer dit zo veel mogelijk te voorkomen.

Wanneer je dit niet kan voorkomen, moet je even kijken wat voor encoding de site van PMA gebruikt, daar zou het verschil in moeten zitten.

Probeer niet te veel met de encodings van de data in je database om te knoeien, dat gaat geheid voor problemen zorgen. (Ik spreek uit ervaring) Probeer de standaard encoding te houden, en je pagina af te stemmen op PMA.

Als het goed is heb je:
  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


Dit zou je kunnen vervangen voor:
  1. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

Iso-8859-1 ondersteunt namelijk de latin1 encoding van je database. Althans, zou moeten.
Offline roy - 24/07/2009 00:42 (laatste wijziging 24/07/2009 02:45)
Avatar van roy PHP gevorderde Iso-8859-1 heb ik dus geprobeerd, zonder resultaat

Wat is PMA??

Ik ga nu het proberen met LIKE..
EDIT: like werkt ook niet.

Als ik de query echo, dan ziet ie er wel goed uit. Als ik het ge-echode dan kopier naar phpMyAdmin dan komt het resultaat er gewoon uit.


vinTage schreef:
pma == phpmyadmin
Offline snxs - 24/07/2009 02:55
Avatar van snxs Nieuw lid PMA = PhpMyAdmin, mijn excusses.

Als PMA het voor elkaar krijgt dan moet jij het ook voor elkaar kunnen krijgen. Ik zou niets veranderen aan je Database, maar gewoon je app goed scripten. ;)

Mijn tip al geprobeerd?
Offline roy - 24/07/2009 03:00 (laatste wijziging 24/07/2009 03:00)
Avatar van roy PHP gevorderde Ik maak gebruik van de database library van adoDB.
De Collation van de kolommen is latin1_swedish_ci.
Dit staat in mijn HTML: <meta content="text/html; charset=utf-8"
http-equiv="Content-Type"/>

Citaat:
Als PMA het voor elkaar krijgt dan moet jij het ook voor elkaar kunnen krijgen

Helaas is dat eenvoudiger gezegd dan gedaan.

Hier alle Server variables and settings.

character set client utf8
(Global value) latin1
character set connection utf8
(Global value) latin1
character set database latin1
character set results utf8
(Global value) latin1
character set server latin1
character set system utf8
character sets dir /opt/mysql-4.1.21/share/mysql/charsets/
collation connection utf8_unicode_ci
(Global value) latin1_swedish_ci
collation database latin1_swedish_ci
collation server latin1_swedish_ci

Zijn er nog andere opties??
Offline snxs - 24/07/2009 03:59 (laatste wijziging 24/07/2009 04:07)
Avatar van snxs Nieuw lid Het punt is dat PMA de results kan krijgen, dit is een php applicatie net als die van jou dat is. Dus technisch gezien zou je de karakter set van PMA moeten kunnen kopieren, en dan zou het goed moeten zijn. Ik ben geen ster in Encodings, maar weet wel dat ISO die ik gaf Latin1 ondersteunt, waar je naar opzoek zou moeten zijn.

In php kun je ook een encoding gebruiken, want daar gaat het nu eigenlijk om. (bedenk ik mij net) Wanneer bepaalde karakters niet goed weergegeven worden op een website heb je en andere encoding nodig in je meta. Maar wanneer je een actie moet uitvoeren op een server, door middel van php, dan moet php wel de juiste encoding gebruiken.

Als je MySQL gebruikt zou je PHP.net: mysql_set_charset moeten gebruiken voor je MySQL query. Maar aangezien je ADOdb gebruikt kan dit ook weer problemen geven.

Misschien iets van code plaatsen op plaatscode.be?

EDIT: Dit vind ik net op de website van PHP.net: mysql_set_charset:
Citaat:
I needed to access the database from within one particular webhosting service. Pages are UTF-8 encoded and data received by forms should be inserted into database without changing the encoding. The database is also in UTF-8.

Neither SET character set 'utf8' or SET names 'utf8' worked properly here, so this workaround made sure all variables are set to utf-8.


  1. <?php
  2.  
  3. // ... (creating a connection to mysql) ...
  4.  
  5. mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $conn);
  6.  
  7. $re = mysql_query('SHOW VARIABLES LIKE "%character_set%";')or die(mysql_error());
  8. while ($r = mysql_fetch_assoc($re)) {var_dump ($r); echo "<br />";} exit;
  9.  
  10. ?>


Citaat:
All important variables are now utf-8 and we can safely use INSERTs or SELECTs with mysql_escape_string($var) without any encoding functions.


Misschien dat je hier iets mee kan.
Offline roy - 24/07/2009 04:18 (laatste wijziging 24/07/2009 11:52)
Avatar van roy PHP gevorderde Als ik uitvoer wat jij schrijft, dan worden alle andere vreemdetekens in de content die ik ophaal anders weergegeven...

ik denk niet zozeer dat het weergeven verkeerd gebeurd, maar juist hoe de query naar de server wordt verstuurd.. Of hoe de server de query afhandeld......
Offline snxs - 24/07/2009 12:20
Avatar van snxs Nieuw lid Dat melde ik ook, het gaat om de query, daar zou je die mysql_query voor moeten gebruiken. Onder in mijn vorige post.

Ik zat er eerst zelf naast met mijn met, dat klopt. Dat corrigeerde ik in mijn vorige post.

Maar heb je dat geprobeerd? (Die laatste code.)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.205s