Avatar billede morten-s Nybegynder
12. december 2003 - 16:01 Der er 16 kommentarer og
1 løsning

Sorter efter click

Har et alfabet listet op (A, B, C, D, osv osv)

Jeg vil have at når man trykke på "A" skal der nedenunder bliver listet alle efternavne begyndende med "A" fra tabellen people. Men jeg vil selvfølgelig ikke have 28 .php-dokumenter... kan man lave en funktion eller lignende, så det ikke bliver så umuligt.
Haster.
Avatar billede exp Juniormester
12. december 2003 - 16:08 #1
du laver en side, der indeholder (og udskriver) følgende sql-sætning:

sql = "select * where efternavn like '".$_GET['sort']."%' order by efternavn asc"

og i adresselinien skriver du:
www.domæne.dk/fil.php?sort=bogstav
Avatar billede detox Nybegynder
12. december 2003 - 16:08 #2
Ja, prøv med:

$start = $_GET['bogstav'];
SELECT efternavn FROM tabel WHERE efternavn LIKE '$start%'
Avatar billede exp Juniormester
12. december 2003 - 16:08 #3
nåja...

sql = "select * from tabel where efternavn like '".$_GET['sort']."%' order by efternavn asc"
Avatar billede morten-s Nybegynder
12. december 2003 - 16:33 #4
hmm må have den lidt mere uddybbet...

hvordan skal linket se ud?

kan heller ikke få sql til at virke..
Avatar billede exp Juniormester
12. december 2003 - 16:43 #5
linket skal se ud som jeg skrev...

www.domæne.dk/fil.php?sort=a

og hvis vi siger din tabel hedder "personer" og kolonnen du vil sortere efter hedder efternavn, så skriver du:

$sort = htmlentities($_GET['sort']);
sql = "select * from `personer` where `efternavn` like '".$sort."%' order by `efternavn` asc"

//connect til database
//kør $sql
mysql_query($sql);
Avatar billede detox Nybegynder
12. december 2003 - 16:51 #6
Fx:

<?
if (isset($_GET['bogstav'])) {
    require 'db.php'; // Forbindelse til databasen
    $res = mysql_query("select * from tabelnavn where efternavn like '".$_GET['bogstav']."%' order by efternavn");
    while ($row = mysql_fetch_assoc($res)) {
        echo $row['efternavn']."<br />";
    }
} else {
    $arr = range('A', 'Z');
    foreach ($arr as $bogstav) {
        echo "<a href='".$_SERVER['PHP_SELF']."?bogstav=".$bogstav."'>".$bogstav."</a> ";
    }
}
?>
Avatar billede morten-s Nybegynder
12. december 2003 - 17:02 #7
detox hvordan skal linket se ud ud fra det forslag du havde der?
Avatar billede exp Juniormester
12. december 2003 - 17:10 #8
fil.php?bogstav=a
Avatar billede morten-s Nybegynder
12. december 2003 - 17:14 #9
ok detox - nu har jeg fået det til at virke men...


hva gør jeg med Æ Ø og Å, seperate a hrefs til dem?
Avatar billede detox Nybegynder
12. december 2003 - 17:25 #10
<?
if (isset($_GET['bogstav'])) {
    require 'db.php'; // Forbindelse til databasen
    $res = mysql_query("select * from tabelnavn where efternavn like '".$_GET['bogstav']."%' order by efternavn");
    while ($row = mysql_fetch_assoc($res)) {
        echo $row['efternavn']."<br />";
    }
} else {
    $arr = array();
    $arr = range('A', 'Z');
    $arr[] = 'Æ';
    $arr[] = 'Ø';
    $arr[] = 'Å';
    foreach ($arr as $bogstav) {
        echo "<a href='".$_SERVER['PHP_SELF']."?bogstav=".$bogstav."'>".$bogstav."</a> ";
    }
}
?>
Avatar billede morten-s Nybegynder
12. december 2003 - 17:40 #11
det er klasse detox

du har fortjent pointene.

jeg har dog en lille ting som ikke virker som det skal:

når jeg trykker på et bogstav lister den de navne de skal, men alfabet forsvinder! Det skal blive stående så man kan vælge et andet bogstav
Avatar billede detox Nybegynder
12. december 2003 - 17:45 #12
<?
$arr = range('A', 'Z');
$arr[] = 'Æ';
$arr[] = 'Ø';
$arr[] = 'Å';
foreach ($arr as $bogstav) {
    echo "<a href='".$_SERVER['PHP_SELF']."?bogstav=".$bogstav."'>".$bogstav."</a> ";
}
echo "<br /><br />";
if (isset($_GET['bogstav'])) {
    require 'db.php'; // Forbindelse til databasen
    $res = mysql_query("select * from tabel where efternavn like '".$_GET['bogstav']."%' order by efternavn");
    while ($row = mysql_fetch_assoc($res)) {
        echo $row['efternavn']."<br />";
    }
}
?>
Avatar billede detox Nybegynder
12. december 2003 - 17:47 #13
Hvis du kun skal bruge efternavnet behøver du selvfølgelig ikke bruge 'select *'

$res = mysql_query("select efternavn from tabel where efternavn like '".$_GET['bogstav']."%' order by efternavn");
Avatar billede morten-s Nybegynder
12. december 2003 - 18:04 #14
tak for det detox - du ved sq hva du snakker om :)
Avatar billede morten-s Nybegynder
12. december 2003 - 18:13 #15
Jeg kan kun poste denne ene række ud (efternavn), ville også gerne have postet fornavnet ud efter efternavnet (Efternavn, Fornavn)??
Avatar billede detox Nybegynder
12. december 2003 - 18:16 #16
Ja, det burde du kunne med:

echo $row['efternavn'].", ".$row['fornavn']."<br />";
Avatar billede morten-s Nybegynder
13. december 2003 - 12:17 #17
jepper, tak der
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