15. juli 2020 - 20:35Der er
6 kommentarer og 1 løsning
Udskriv af æ,ø,å -poster i index til database.
Jeg har en database, hvor jeg skal vise poster der begynder med forbogstav a, b, c, osv. indtil æøå. Jeg har oprettet en række links med forbogstaverne i alfabetet. Ved aktivering af et bogstav vises alle poster med det aktiverede bogstav.. Problemet er, at Æ,Ø Å ikke virker. ÆØÅ står som link, men der sker intet når de aktiveres. Jeg har kontrolleret at php.ini og databasen er UTF:8.
<head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> </head> <?php $db = new mysqli('localhost','root','passw','demo'); mysqli_set_charset( $db, 'utf8'); $sort = isset($_GET['firstLetter']) ? filter_input(INPUT_GET, 'firstLetter',FILTER_SANITIZE_URL) : "" ; if($sort == "") { $sql = "SELECT * FROM countries ORDER BY name DESC" ; }else{ $sql = "SELECT * FROM countries WHERE name LIKE '$sort%' ORDER BY name DESC" ; } $execute = $db->query("$sql"); $alphachar = array_merge([...range('A', 'Z'), 'Æ','Ø', 'Å']); foreach ($alphachar as $element) { printf('<a href="%s?firstLetter=%s">%s</a> | ', $_SERVER['PHP_SELF'] , $element, $element); } printf('<a href="%s">ALL</a> | ', $_SERVER['PHP_SELF'] ); $rowcount = $execute->num_rows ; echo "<table id=\"thetable\" cellspacing=\"0\" width=\"520\">"; echo "<tr> <th>name</th> </tr>";
$c = 1; if ($rowcount > 0 ) { $row = $db->query($sql) ; echo "<br>"; while ($row = $execute->fetch_assoc()) { echo '<br>'; echo $row['name']; echo "</td><td WIDTH='50'>"; echo "</td></tr>"; } } echo "</table>"; Forlen dag var jeg her med et andet spørgsmål til koden, men det er løst.
I min my.ini er ;Path to the language sat til: lc-messages=en_US - hvis jeg retter den til lc-messages=en_DK vil serveren ikke starte (det er WAMP) De andre ting er OK: Database og tabel er gemt som UTF-8, og php-fil er gemt som UTF-8.
Jeg tror ikke det er det rigtige sted at rette, for Wamp kan rette sprog i sine indstillinger. (højreklik på ikonen og language). Det har jeg naturligvis gjort, men desværre løste ikke mit problem. Jeg forstår ikke at det er så besværlig at løse. Der må være nogen der har forsøgt at trække ord ud af en database med ÆØÅ. Det er let nok at sortere alfabetisk. Men når man vil have fat i ord, der begynder med med de danske tegn opstår der problemer. Er der nogen der har et forslag til hvordan jeg skal gribe det an?
Denne kode kan oprette et indeks fra en database, hvorfra man kan vælge bogstaver A, B, C, osv. og få vist hvilke poster, der findes med det valgte bogstav, ligesom i leksikon.
<head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> </head> <?php $db = new mysqli('localhost','root','passw','demo'); mysqli_set_charset( $db, 'utf8'); $sort = isset($_GET['firstLetter']) ? filter_input(INPUT_GET, 'firstLetter',FILTER_SANITIZE_STRING) : "" ; if($sort == "") { $sql = "SELECT * FROM countries ORDER BY name DESC" ; }else{ $sql = "SELECT * FROM countries WHERE name LIKE '$sort%' ORDER BY name DESC" ; } $execute = $db->query("$sql"); $alphachar = array_merge([...range('A', 'Z'), 'Æ','Ø', 'Å']); foreach ($alphachar as $element) { printf('<a href="%s?firstLetter=%s">%s</a> | ', $_SERVER['PHP_SELF'] , $element, $element); } printf('<a href="%s">ALL</a> | ', $_SERVER['PHP_SELF'] ); $rowcount = $execute->num_rows ; echo "<table id=\"thetable\" cellspacing=\"0\" width=\"520\">"; echo "<tr> <th>name</th> </tr>";
Løsningen på spørgsmålet er meget banal: FILTER_SANITIZE_URL skal rettes til FILTER_SANITIZE_STRING
Synes godt om
1 synes godt om dette
Ny brugerNybegynder
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.