[PHP/MYSQL] Store Locator / Speciale tekens in DB *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben al een tijdje druk bezig met het maken van een Store Locator. Zoals de naam al zegt kan je hiermee filialen zoeken.

De Locator bestaat uit 4 kolommen te weten: Productcategorie, Land, Plaats, Reseller.
In de MYSQL db staan alle velden zoals adres, telefoonnummer, website etc..

De voorkant gaat goed, echter het kleine admin gedeelte aan de achterkant vind ik moeilijk.
Ik zit nu een paar dagen behoorlijk te Googlen en fora te lezen over functies als
htmlentities, urlencode, mb_convert_encoding en dergelijke.

Ik heb het bijna voor elkaar dat PHP veel tekens afvangt voordat ze in de database komen.
Ook krijg ik ze weer goed uit de database. Maar net doe ik een bedrijf die een +
in de naam had, en dan slokt PHP het plusje op...

Ik zie niet meer wat ik nou nog moet doen om dat op te lossen.

Uit de database halen..
PHP:
1
$name = mb_convert_encoding($data['Store_Naam'],'UTF-8','HTML');


In de database stoppen..(met een JS URLDecode)
PHP:
1
$name = mb_convert_encoding($data['Store_Naam'],'HTML','UTF-8');


Waarom verdwijnt mijn + in het niets?

Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 22:47
Waarom gebruik je niet mysql_real_escape_string om het in je database te zetten en htmlentities om het weer te geven? :?

Sowieso vraag ik me af of 'HTML' wel een valide character encoding is om naar om te zetten, maar dat terzijde :)

[ Site ] [ twitch ] [ jijbuis ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Aaight, ik weet ook niet waarom ik dat niet gebruik.

Ik ben er echt serieus al ongeveer een week mee bezig, en er zijn zoveel functies die
allemaal tekst omzetten, escapen, converten etc..

Het probleem wat ik heb is dat in mijn lijst van winkels (internationaal)
nogal veel verschillende karakters voorkomen. Dus van hoofletters met trema's, kleine letters met dakjes, tot ampersand tekens, plusjes en nog wat van dit soort: Ç, Ñ, Ú, Ŝ

mysql_real_escape_string had ik nog niet gebruikt..eens kijken wat die doet..

Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 22:47
Als je met "vreemde" tekens werkt moet je er op letten dat je wel alles op UTF-8 zet. Dat betekend je database table, je kolommen zelfs (als deze niet op standaard staan), PHP settings, etcetera.

Wat mysql_real_escape_string doet is zelf de character encoding van de string aanpassen naar die van je database en onveilige tekens escapen zodat de data precies zo in je database komt als hij is ingevoerd. Als zowel de data als je database UTF-8 zijn en je ook de juiste char encoding header meegeeft met je HTML zouden ze ook weer precies zo uit moeten komen in je browser :)

[ Site ] [ twitch ] [ jijbuis ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dus het klopt als ik
Ç, Ñ, Ú, Ŝ
in de UTF database stop, UTF tabel,
dat ik dan
Ç, Ñ, Ú, Å
in de database krijg?

Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 22:47
In principe niet - als je iets als MySQL query tools gebruikt om het te bekijken hoort het ook exact zo in je database te staan als je het invoert. Als dit niet gebeurt kan dit, zoals gezegd, aan een van de legio settings liggen die character encoding beinvloeden.

Een goede 'guide' hiervoor kun je hier vinden, sterkte! ;)

[ Site ] [ twitch ] [ jijbuis ]

Pagina: 1