Avatar billede Skaugir Nybegynder
30. januar 2011 - 16:00 Der er 9 kommentarer og
1 løsning

Alfabetisk indeks

Hej

Jeg kunne godt tænke mig, at lave et alfabetisk indeks, så hvis man klikker på A, så kommer den ind på en side der viser alle ord, der starter med A etc...

Jeg har tiltusket mig noget kode, men mangler vist det sidste for at få det til at virke ordentligt. Nogle der kan hjælpe mig med at gøre det færdigt?

$query = mysql_query ("SELECT * FROM tabel WHERE LEFT(felt,1) = '$l' ORDER BY felt");?>
hvor "$l" er det bogstav jeg vil søge efter.

Denne kode har jeg smidt ind på siden, men får blot fejlbeskeden: Notice: Undefined variable: l in alfabetord.php on line 100.

Jeg er ny udi php så skal nok have skåret det lidt ud i pap :-)
Avatar billede jakobdo Ekspert
30. januar 2011 - 16:02 #1
$I (stort i) eller $l (lille L)
Skal komme et sted fra.
Start evt. med lige over $query, at test med:

$l = 'A'; eller $l = 'a';

og se om det virker.
Avatar billede Skaugir Nybegynder
30. januar 2011 - 16:17 #2
Ok, nu har jeg prøvet med:
$l='a';
$query = mysql_query ("SELECT * FROM ord WHERE LEFT(ord,1) = '$l' ORDER BY ord");?>

Det har fjernet fejlbeskeden, men i stedet viser den intet indhold. Det skal vel også echo'es ud på en eller anden måde?
Da jeg så prøvede med
"echo $query;" fik jeg blot fejlbeskeden: "Resource id #8"
Avatar billede jakobdo Ekspert
30. januar 2011 - 17:20 #3
Prøv følgende:

$l='a';
$query = mysql_query ("SELECT * FROM ord WHERE LEFT(ord,1) = '$l' ORDER BY ord");
if(mysql_num_rows($query)>0){
while($row = mysql_fetch_assoc($query){
echo $row['ord'] . '<br/>';
}
}else{
echo 'Der blev ikke fundet noget, som starter med: '.$l.'<br/>';
}
?>
Avatar billede Skaugir Nybegynder
30. januar 2011 - 17:36 #4
Tak, men den siger "parse error" til denne linie:
while($row = mysql_fetch_assoc($query){
Avatar billede jakobdo Ekspert
30. januar 2011 - 18:12 #5
Der mangler en )

Det skal være:
while($row = mysql_fetch_assoc($query)){
Avatar billede Skaugir Nybegynder
30. januar 2011 - 18:22 #6
Yay, nu funker det, tak :-)

Men hvordan gør jeg nu, så den viser for alle bogstaver i alfabetet? Nu virker den kun med A. Og $l kan vel ikke have flere definitioner?
Avatar billede jakobdo Ekspert
30. januar 2011 - 18:27 #7
Du bør evt. lave en side ala:

$letters = range('a','z');
$letters[] = 'æ';
$letters[] = 'ø';
$letters[] = 'å';

foreach($letters as $letter){
echo '<a href="?letter='.$letter.'">' . $letter . '</a><br />';
}

Og så laver du din kode fra før om til:

$l = $_GET['letter'];

Du bør dog lave noget ekstra kode, som tjekker for at $_GET['letter'] er et bogstav, så du ikke bliver udsat for sql injections.
Avatar billede Skaugir Nybegynder
30. januar 2011 - 20:52 #8
Yes, nu spiller det! Tak
Avatar billede jakobdo Ekspert
30. januar 2011 - 20:56 #9
Svar!
Avatar billede jakobdo Ekspert
30. januar 2011 - 21:05 #10
Takker for point.
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