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
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";
}
}
?>
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 !
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";
}
}
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 ?
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";
}
}
?>