Avatar billede dj-hupi Nybegynder
27. juni 2007 - 13:31 Der er 10 kommentarer og
1 løsning

Udtræk i alfabet paging.

Hejsa alle sammen.

Jeg søger et php script som kan trække data ud og sortere alfabetisk. Dataerne lageres i en MySQL db.
Faktisk som dette: http://www.hostadanmark.dk/butik_show.asp?id=215

Er der nogen som ligger inde med sådan et script eller ved hvor jeg kan finde det?

Rasmus
Avatar billede jweber Nybegynder
27. juni 2007 - 14:15 #1
$sql = "SELECT * FROM tabelnavn ORDER BY navn";
$query= mysql_query($dql);
while($row = mysql_fetch_array($query)) {
  echo $row['navn'];
}
Avatar billede radion Nybegynder
27. juni 2007 - 14:16 #2
alfabetisk sortering klares sidst i din mysql- streng med "order by fornavn" fx

prøv at lure denne tutorial igennem:
http://w3schools.com/sql/sql_intro.asp så får du forhåbnetlig en ide om hvad det er du skal :)
Avatar billede dj-hupi Nybegynder
27. juni 2007 - 20:17 #3
Jeg er godt klar over hvordan man laver sortering :) Men det er hvordan den kun tager det første bogstav i en tabel og laver pagings på det ...
Avatar billede cronick Nybegynder
28. juni 2007 - 01:12 #4
Enten forklarer du ikke helt præcist hvad du er ude efter, eller også ér det altså det som jweber og radion skriver.. Ved en "order by celle" og cellen er sat til eksempelvis typen varchar, vil den sortere rækkerne ligesom du ser det, på den side du som eksempel har indsat (hostadanmark.dk/..)
Avatar billede radion Nybegynder
28. juni 2007 - 04:18 #5
du kan jo eksempelvis lave en række (a b c d ) der linker til index.php?show=a

<a href="index.php?show=a">A</a> <a href="index.php?show=b">B</a> <a href="index.php?show=c">C</a> osv osv

nede i dit sql udtræk kører du så noget ala

$start_letter=$_GET['show'];

$sql = "SELECT * FROM tabelnavn where navn LIKE '".$start_letter."%' ORDER BY navn";
$query= mysql_query($sql);
while($row = mysql_fetch_array($query)) {
  echo $row['navn'];
}



ang. selve A B C D E F liten i toppen, er den formegentlig lavet statisk, der er ingen mening i at genere den ud fra om der er noget i databasen der starter med dét bogstav
Avatar billede dj-hupi Nybegynder
05. juli 2007 - 19:01 #6
radion - Ideen med at den selv gjorde det var at så hvis der ikke var et noget som startede med N fx. Ville det ikke vises.
Nu skal jeg oprette dem alle også lave en hulens masse if sætninger og tælle om der er nogen records før den den skal skrive noget.
Avatar billede cronick Nybegynder
05. juli 2007 - 19:11 #7
Aha - tror jeg har forstået det korrekt nu. Du vil have have en liste med abc.., men kun hvor du har mindst en af dine rækker, til at starte med dette bogstav?
Avatar billede radion Nybegynder
05. juli 2007 - 22:46 #8
næh, ikke en hulens masse if sætnininger, du kan jo nøjes med at lave en string
$sPosibilities="abcdefghijklmnopqrstuvxyz";

og så løbe den gennem med en for

for($i=0;$i<strlen($sPosibilities);$i++)
{

$sql="SELECT * FROM tabelnavn where navn LIKE '".$sPosibilities[$i]."%' ORDER BY navn";

//check om der returneres noget osv osv
}
Avatar billede cronick Nybegynder
05. juli 2007 - 23:05 #9
For at præcisere radions svar yderligere:

$sPosibilities="abcdefghijklmnopqrstuvxyz";

og så løbe den gennem med en for

<?php

for($i = 0; $i < strlen($sPosibilities); $i++)
{

$sql = "SELECT * FROM tabelnavn where navn LIKE '".$sPosibilities[$i]."%' ORDER BY navn";

if(mysql_num_rows(@mysql_query("$sql")) != 0) {
  echo '<a href="index.php?show='.$sPosibilities[$i].'">'.strtoupper($sPosibilities[$i].'</a> ';
}

}
Avatar billede cronick Nybegynder
05. juli 2007 - 23:07 #10
Dvs.

<?php

$sPosibilities="abcdefghijklmnopqrstuvxyz";

for($i = 0; $i < strlen($sPosibilities); $i++)
{

$sql = "SELECT * FROM tabelnavn where navn LIKE '".$sPosibilities[$i]."%' ORDER BY navn";

if(mysql_num_rows(@mysql_query("$sql")) != 0) {
  echo '<a href="index.php?show='.$sPosibilities[$i].'">'.strtoupper($sPosibilities[$i]).'</a> ';
}

}
?>
Avatar billede dj-hupi Nybegynder
15. juni 2008 - 13:08 #11
Jeg lavede en løsning selv.

                            $Ltr = strtoupper($_REQUEST['letter']);
                           
                            $result = mysql_query( "SELECT DISTINCT LEFT(enraekke,1) FROM enraekker ORDER BY LEFT(enraekke,1)");

                            echo "<div class=\"alfabetbox\">";
                            while ($row = mysql_fetch_array($result)) {
                            echo " | ";
                           
                            $Ultr = strtoupper($row[0]);
                           
                           
                            if(Ultr <> $Ltr){
                            echo "<a href=\"index.php?all=1&letter=$Ultr\">$Ultr</a>";
                            }else{
                            echo "$Ultr";
                            }
                           
                            }
                            echo " | </div>";
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