Avatar billede leif Seniormester
08. januar 2005 - 23:19 Der er 5 kommentarer og
1 løsning

Liste a-z men kun dem der findes noget med

Hej,

Lad os antage jeg har en database med feltet titel.

Jeg vil lave en liste, hvor jeg har mulighed for at trykke b og få alle dem der starter med B, men i listen vil jeg ikke have C hvis der ikke er en Titel som starter med C.

Er der en som kan hjælpe mig ?

Fra
Leif
Avatar billede hmortensen Nybegynder
09. januar 2005 - 07:21 #1
En mulighed kunne være sådan her:
<?php

$liste = array();
include("connect.php");
$hentliste = mysql_query("SELECT LEFT(titel, 1) AS forbogstav FROM liste GROUP BY forbogstav");
while ($row = mysql_fetch_array($hentliste))
{
    $liste[] = $row['forbogstav'];
}


for ($i = A; $i <= Z; $i++) {
    if (in_array($i, $liste))
    {
        echo "<a href=\"liste.php?letter=".$i."\">".$i."</a><br />\n";
    }
}

?>
Avatar billede leif Seniormester
09. januar 2005 - 16:51 #2
Nu har jeg nogen poster med Lille for Bogstav ! Hvordan det løses bedst ? Samt nogen med Første bogstav som tal !

Hvis jeg ændrer for ($i = A; $i <= Z; $i++) { til for ($i = a; $i <= 9; $i++) {, så får jeg kun dem med små bogstaver, og hverken dem med Store startbogstaver eller tal !
Avatar billede hmortensen Nybegynder
09. januar 2005 - 17:39 #3
Vil tro det vil virke med UPPER():
SELECT UPPER(LEFT(titel, 1)) AS forbogstav....

Du kan vel bare lægge en ny løkke nedenunder med tal:
for ($i = 0; $i <= 9; $i++) {
    if (in_array($i, $liste))
    {
        echo "<a href=\"liste.php?letter=".$i."\">".$i."</a><br />\n";
    }
}
Avatar billede leif Seniormester
09. januar 2005 - 18:00 #4
Bare kald mig besværlig ! Men nu ser jeg at jeg mangler ÆØÅ det er jo klart da den tager fra A til Z men hvis jeg sætter A til Å fejler den med:
Fatal error: Maximum execution time of 30 seconds exceeded in ...../filnavn.php

Hvorfor ?
Avatar billede hmortensen Nybegynder
10. januar 2005 - 00:02 #5
PHP genkender ikke special tegn som æøå.
Jeg har derfor lavet et array med de tegn der skal bruges, altså A-Å + 0-9.

I tilrettet og testet udgave:
<?php

include("connect.php");
$liste = array();

$hentliste = mysql_query("SELECT UPPER(LEFT(titel, 1)) AS forbogstav FROM liste GROUP BY forbogstav");
while ($row = mysql_fetch_array($hentliste))
{
    $liste[] = $row['forbogstav'];
}

$chars = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'Æ', 'Ø', 'Å', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');

foreach ($chars AS $val)
{
    if (in_array($val, $liste))
    {
        echo "<a href=\"liste.php?letter=".$val."\">".$val."</a><br />\n";
    }
}

?>
Avatar billede leif Seniormester
10. januar 2005 - 00:06 #6
Du er en guttermand !
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