compac Seniormester
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 Seniormester
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 Seniormester
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
Blandt 18.000 indberetninger om databrud er menneskefejl den mest almindelige: Sådan undgår din virksomhed de mest basale databrud
18.000 anmeldelser om databrud er tikket ind hos Datatilsynet siden siden GDPR-loven trådte i kraft. "Mange af de fejl, som vi ser, beror på relativt banale fejl,” lyder det fra tilsynets it-sikkerhedspecialist Allan Frank. Se her, hvordan du relativt nemt kan undgå dem.
Computerworld
IBM vinder millionaftale om nyt toldsystem
Skatteforvaltningen har tegnet en tiårig kontrakt IBM om levering af det sidste it-system til i en omfattende systemudskiftning i toldsystemerne og som først forventes afsluttet i 2025. Se alle detaljerne her.
CIO
Podcast: Hos Viking Life-Saving Equipment er it gået fra at være backend til at være noget, som kunderne spørger aktivt efter
Podcast, The Digital Edge: Viking leverer en stadig større del af deres produkt som en tjeneste. Som en del af tjenesten tager Viking ansvar for sikkerheden ved at levere, dokumentere og vedligeholde det nødvendige sikkerhedsudstyr. Hør hvordan Henrik Balslev senior digital director hos Viking har løftet den opgave.
Job & Karriere
Microsoft i kæmpe dansk satsning - åbner tre store datacentre i Danmark
Microsoft lancerer kæmpe satsning fra hovedkvarteret i Lyngby. Selskabet åbner tre store bæredygtige datacentre på Sjælland.
White paper
Sådan outsourcer du effektivt – og undgår fælderne
Nogle outsourcer for at minimere omkostningsniveauet, andre for at skaffe ressourcer og spidskompetencer, der er svære at skaffe lokalt – eller af en helt tredje årsag. Der er dog talrige forhold, der er gode at afdække, før man overhovedet begynder at lede en outsourcingudbyder. Man skal klarlægge egne projektbehov samt de spørgsmål og krav, man vil stille samt indsamle viden og erfaringer om, hvordan samarbejdet indledes, drives og styres optimalt. Dertil skal man kende til de hyppigste faldgruber, der kan få et ellers lovende outsourcingsamarbejde til at køre i grøften.