Avatar billede mccookie Seniormester
18. januar 2013 - 10:32 Der er 15 kommentarer og
1 løsning

Søgning i MySQL via PHP

Hej....

Jeg har en database hvori der er nogle poster, en af kolonnerne indeholder oplysninger om et bynavn, som en del af registrering.

Og blandt flere felter vil jeg jo gerne søge på dette felt! Heri feltet postby, som jo referer til en by i kongeriget - Heriblandt smilets by Århus! Her opstår problemet:

Når jeg søger på bynavnet kunne søgning jo se sådan ud:

%Ã¥rhus%

el.

%Ã…rhus%

Åbenrå kunne jo mageligt være en god kombi..... er der en snedig måde at håndterer dette på i SQL eller PHP??

Jeg bruger utf8_encode til at generer søgestrengen!

Mvh.
H
Avatar billede mccookie Seniormester
18. januar 2013 - 10:54 #1
i databasen står by som:
aaÃ...rhus C

Og når jeg hiver den i html ser den jo sådan ud:
aaÅrhus C
Avatar billede mccookie Seniormester
18. januar 2013 - 11:16 #2
if($stmt = $mysqli->prepare('SELECT id,knr,navn,adresse,postnr,postby,serienummer,tlf,ipadresse,version FROM liste where postby LIKE ?'))

Sådan her ser min SQL ud....
Ville jo gerne tilføje % omkring min LIKE del
Avatar billede mccookie Seniormester
18. januar 2013 - 13:45 #3
Jeg vil i bund og grund lave en søgefunktion der virker på følgende måde:

1. Søger på alt
2. Tilsidesætter store/små bogstaver
3. Kan søge æøåÆØÅ
4. Og den skal søge på like
Avatar billede olebole Juniormester
18. januar 2013 - 18:21 #4
<ole>

Hvorfra ved du, at: "i databasen står by som: aaÃ...rhus C"? Hvis du bruger phpMyAdmin, så pas på - for den ses ofte sat op som iso-8859-1.

Hvis du har styr på tegnsæt i din applikation, bør det ikke være aktuelt at bruge utf8_encode.

Hvilket tegnsæt er din database sat op til at bruge? Hvad er collations på tabellerne sat til? Er alle dine filer gemt som utf-8?

/mvh
</bole>
Avatar billede mccookie Seniormester
18. januar 2013 - 21:20 #5
Hej Ole

1. Filerne er gemt som utf8 via DreamWeaver
2. I DB er Århus = Ã...rhus
3. Men præsenteres korrekt på oversigten når jeg henter data frem
4. Alle siderne har en header med utf8
5. DB står kolonnen til:      varchar(50)     utf8_danish_ci
6. Umiddelbart ser DB ud til at være som ovenstående utf8 via PhpMyadmin
Avatar billede mccookie Seniormester
18. januar 2013 - 21:34 #6
Uden at jeg kan sige problemet ligger der, eller der - Så kan jeg skrive æøå direkte ud på skærmen udenom databasen. Så måske er fejlen her?
Avatar billede olebole Juniormester
18. januar 2013 - 21:57 #7
1) Hvilket tegnsæt er databasen sat til at arbejde med?

2) Hvad er phpMyAdmin selv sat op til? Prøv bl.a. at se i kildekoden ('View Source' i browseren)
Avatar billede mccookie Seniormester
18. januar 2013 - 22:01 #8
character_set_client utf8
character_set_connection     utf8
character_set_database     latin1
character_set_filesystem     binary
character_set_results     utf8
character_set_server     latin1
character_set_system     utf8
character_sets_dir     /usr/share/mysql/charsets/

Hentet fra DB
Avatar billede mccookie Seniormester
18. januar 2013 - 22:05 #9
PHPmyAdmin
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xml:lang="da"
    lang="da"
    dir="ltr">
<head>
<link rel="icon" href="./favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="./favicon.ico" type="image/x-icon" />
<title>phpMyAdmin 3.5.4 -
    dbadmin.one.com</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="robots" content="noindex,nofollow" />
<script type="text/javascript">
// <![CDATA[
Avatar billede mccookie Seniormester
18. januar 2013 - 22:17 #10
Hmm... Det lader til at følgende hjælper:
/* change character set to utf8 */
if (!$mysqli->set_charset("utf8")) {
    printf("Error loading character set utf8: %s\n", $mysqli->error);
} else {
    printf("Current character set: %s\n", $mysqli->character_set_name());
}
Så nu har alt utf8
Avatar billede olebole Juniormester
18. januar 2013 - 22:19 #11
Hvis også filerne i framesettet er utf-8, er der ikke noget galt dér  =)
Avatar billede mccookie Seniormester
18. januar 2013 - 22:31 #12
Hej Ole

Det hjalp at sætte UTF8 via PHP mod databasen, så det var lige der årsagen skulle findes! Glædeligt kan jeg også konstatere at den søger på tværs af store og små bogstaver.

Om ikke du har givet mig den direkte løsning, så har du fået rettet min opmærksomhed mod problemet - Så smid et svar :-)
Avatar billede mccookie Seniormester
20. januar 2013 - 19:31 #13
Hej Ole

Smid venligst et svar :-)
Avatar billede olebole Juniormester
20. januar 2013 - 19:45 #14
Ellers tak, jeg samler ikke point. Læg selv et svar og accepter det, så tråden lukkes  =)
Avatar billede mccookie Seniormester
20. januar 2013 - 19:51 #15
olebole>> Ok, og mange tak for hjælpen :-)
Avatar billede olebole Juniormester
20. januar 2013 - 20:10 #16
You're welcome  *o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester