compac Mester
11. juli 2020 - 22:53 Der er 6 kommentarer og
1 løsning

Sortering med æ,ø,å - visning i index

Jeg er ved at lave en formular hvor jeg skal lave et index hvor æ,ø,å skal indgå.
Det er et udtræk fra en mysql-database. Der skal være en række knapper
- een for hvert bogstav i alfabetet. Man skal kunne klikke på en knap for at få poster med det valgte forbogstav at se. Problemet er at få knapper som udtrækker  de danske tegn.
Jeg har fundet dette:
/*
Get the letter user clicked on and assign it a variable 
Always sanitize user's submited input !!!!!!!
*/
$sort = isset($_GET['firstLetter']) ? filter_input(INPUT_GET, 'firstLetter',FILTER_SANITIZE_URL) : "" ;
if($sort == "") {
$sql = "SELECT * FROM countries ORDER BY name ASC " ;
    }else{
$sql = "SELECT * FROM countries WHERE name LIKE '$sort%' ORDER BY name ASC" ;
    }
$execute = $db->query("$sql");

for ($i = 65; $i < 91; $i++) {
    echo $i;
    printf('<a href="%s?firstLetter=%s">%s</a> | ', $_SERVER['PHP_SELF'] , chr($i), chr($i));
    }
-hvordan udvider jeg den til danske tegn?
claes57 Ekspert
12. juli 2020 - 08:21 #1
Æ = 198
Ø = 216
Å = 197
Så efter } til sidst, så tilføj fx

$i = 198;
echo $i;
    printf('<a href="%s?firstLetter=%s">%s</a> | ', $_SERVER['PHP_SELF'] , chr($i), chr($i));
$i = 216;
echo $i;
    printf('<a href="%s?firstLetter=%s">%s</a> | ', $_SERVER['PHP_SELF'] , chr($i), chr($i));
$i = 197;
echo $i;
    printf('<a href="%s?firstLetter=%s">%s</a> | ', $_SERVER['PHP_SELF'] , chr($i), chr($i));
Slater Ekspert
12. juli 2020 - 09:05 #2
#1: Eller udskift for-løkken med:

foreach ([...range(65, 90), 198, 216, 197] as $i) {

for at det bliver lidt pænere og kortere.
claes57 Ekspert
12. juli 2020 - 20:14 #3
forskellen på en klamphugger og en håndværker ;) Tak for indsparket.
compac Mester
13. juli 2020 - 11:59 #4
Når jeg skifter  "for ($i = 65; $i < 91; $i++) { " ud med
  " foreach ([range(65, 90), 198, 216, 197] as $i) { " forventer at det er et array man arbejder med.
Hvordan skal jeg formulere løkken for at bruge "foreach"
Slater Ekspert
13. juli 2020 - 13:08 #5
#4: Jeg er ikke helt med. Løkken bliver det samme, variablen $i vil i begge tilfælde bare være et tal der repræsenterer et tegn.

Du får f.eks. præcis det samme output fra

for ($i = 65; $i < 91; $i++) {
    var_dump($i);
}

og

foreach ([...range(65, 90), 198, 216, 197] as $i) {
    var_dump($i);
}

- bortset fra de tre ekstra tegn. Dog forudsætter det at du kører med en rimelig ny version af PHP for at kunne bruge splat operatoren (...) på den måde.
Hvis du kører med en ældre udgave, kan du f.eks. bruge den lidt grimmere kode:

$chars = range(65, 90);
array_push($chars, 198, 216, 197);
foreach ($chars as $i) {
    var_dump($i);
}

i stedet.
compac Mester
13. juli 2020 - 13:21 #6
Ja, man skal gøre som der bliver sagt. Jeg fik ikke de tre punktummer med foran range.
Tak for hjælpen.
Slater Ekspert
13. juli 2020 - 14:56 #7
Og tak Claes. Mit svar var bare en kortere udgave af hans :)
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

Opret Preview

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





Premium
Test: Lenovos seneste budget-basker kan det hele - man skal dog leve med en alt for synlig svaghed
Computerworld tester Lenovos Ideapad 5. Maskinen er stærk, prisen er skarp og designet er vellykket. Men der er stadig en god grund til at springe modellen over.
Job & Karriere
Regner din ferie væk? Brug tiden på at søge en af disse otte stillinger, der er ledige netop nu
Det sjasker ned over hele Danmark. Du kan bruge de våde sommerdage på at søge et af disse otte job, der er ledige lige nu.
White paper
Når du skal designe, udvikle og implementere dokumenter i Dynamics 365
I dette whitepaper får du et overblik over de forskellige muligheder, der findes, når du skal designe, udvikle og implementere eksterne ERP-dokumenter i Dynamics 365 for Finance and Operations. I dokumentet kan du blandt andet se en sammenligning mellem Lasernet og en række andre løsninger. Bag whitepaperet står Tabellae, der over de seneste ni år har arbejdet med mere end 500 ERP-projekter og som har stor indsigt i Lasernet Output Management-systemet fra Formpipe Software.