Avatar billede Slettet bruger
19. december 2003 - 16:52 Der er 17 kommentarer og
2 løsninger

Sortering som resultater

Hej

Jeg sidder lige og leger med lidt PHP. Jeg har en adresseliste med følgende felter:
navn
adresse
telefon
mobil
mail

Så vil jeg gerne lave en funktion, som når man klikker på fx. navn, så ændre listen, så navnene står i alfabetisk orden. Hvis man så klikke på adresse, så skal den gøre det samme - dog med adressen.
Hvordan gør jeg det?

Filen som jeg bruger til at hente mine data ud fra min DB, ser sådan ud:

<?php
<table width=900 border=1 align=center cellpadding=1 cellspacing=0>
<tr>
  <td><b>Navn</b></td>
  <td><b>Adresse</b></td>
  <td><b>Postnr.</b></td>
  <td><b>Telefonnr.</b></td>
  <td><b>Mobil</b></td>
  <td><b>Fødselsdag</b></td>
  <td><b>mail</b></td>
</tr>

";


$query  = mysql_query("SELECT * FROM badminton") or die(mysql_error());
while ($row = mysql_fetch_array($query)) {

echo "

<tr>
  <td>" . $row['name'] . "</td>
  <td>" . $row['adresse'] . "</td>
  <td>" . $row['postnr'] . "</td>
  <td>" . $row['telefon'] . "</td>
  <td>" . $row['mobil'] . "</td>
  <td>" . $row['mail'] . "</td>
</tr>

";

};

echo "
</table> ";

?>

Håber der er nogen som kan hjælpe.

Glædelig jul
Avatar billede ztyxx Nybegynder
19. december 2003 - 16:56 #1
du ´kan jo lave en anden søgning
$query  = mysql_query("SELECT * FROM badminton ORDER BY name DESC") or die(mysql_error());
så lister den i omvendt alfabetisk rækkefølge
Avatar billede ztyxx Nybegynder
19. december 2003 - 17:02 #2
utestet


<table width=900 border=1 align=center cellpadding=1 cellspacing=0>
<tr>
  <td><b>Navn</b></td>
  <td><b>Adresse</b></td>
  <td><b>Postnr.</b></td>
  <td><b>Telefonnr.</b></td>
  <td><b>Mobil</b></td>
  <td><b>Fødselsdag</b></td>
  <td><b>mail</b></td>
</tr>


<?php

if($_GET["sort"] == "asc") {
    $query  = mysql_query("SELECT * FROM badminton") or die(mysql_error());
while ($row = mysql_fetch_array($query)) {

echo "

<tr>
  <td>" . $row['name'] . "</td>
  <td>" . $row['adresse'] . "</td>
  <td>" . $row['postnr'] . "</td>
  <td>" . $row['telefon'] . "</td>
  <td>" . $row['mobil'] . "</td>
  <td>" . $row['mail'] . "</td>
</tr>

";

};

echo "
</table> ";
} elseif($_GET["sort"] == "desc") {
    $query  = mysql_query("SELECT * FROM badminton ORDER BY name desc") or die(mysql_error());
while ($row = mysql_fetch_array($query)) {

echo "

<tr>
  <td>" . $row['name'] . "</td>
  <td>" . $row['adresse'] . "</td>
  <td>" . $row['postnr'] . "</td>
  <td>" . $row['telefon'] . "</td>
  <td>" . $row['mobil'] . "</td>
  <td>" . $row['mail'] . "</td>
</tr>

";

};

echo "
</table> ";
}


?>
<a href="<? echo $_SERVER["PHP_SELF"];?>?sort=asc">Alfabetisk</a><br>
<a href="<? echo $_SERVER["PHP_SELF"];?>?sort=desc">Omvendt alfabetisk</a>
Avatar billede Slettet bruger
19. december 2003 - 17:09 #3
Prøver lige. Venter tilbage
Avatar billede Slettet bruger
19. december 2003 - 23:36 #4
Denne burde kunne gøre det.

<tr>
  <td><b><a href="?sortby=name">Navn</a></b></td>
  <td><b><a href="?sortby=adresse">Adresse</a></b></td>
  <td><b><a href="?sortby=postnr">Postnr.</a></b></td>
  <td><b><a href="?sortby=telefon">Telefonnr.</a></b></td>
  <td><b><a href="?sortby=mobil">Mobil</a></b></td>
  <td><b><a href="?sortby=bday">Fødselsdag</a></b></td>
  <td><b><a href="?sortby=mail">mail</a></b></td>
</tr>

<?php

if (isset($_GET['sortby'])){
  switch ($_GET['sortby']){
    case 'name': $sortorder='ORDER BY name'; break;
    case 'adresse': $sortorder='ORDER BY adresse'; break;
    case 'postnr': $sortorder='ORDER BY postnr'; break;
    case 'telefon': $sortorder='ORDER BY telefon'; break;
    case 'mobil': $sortorder='ORDER BY mobil'; break;
    case 'bday': $sortorder='ORDER BY bday'; break;
    case 'mail': $sortorder='ORDER BY mail'; break;
    default: $sortorder='';
  }
} else {
  $sortorder='';
]

$query  = mysql_query("SELECT * FROM badminton $sortorder") or die(mysql_error());
while ($row = mysql_fetch_array($query)) {

echo "

<tr>
  <td>" . $row['name'] . "</td>
  <td>" . $row['adresse'] . "</td>
  <td>" . $row['postnr'] . "</td>
  <td>" . $row['telefon'] . "</td>
  <td>" . $row['mobil'] . "</td>
  <td>" . $row['mail'] . "</td>
</tr>

";

};

echo "
</table> ";

?>
Avatar billede sukos Juniormester
20. december 2003 - 07:27 #5
Eller så'n:

$sorttypes = array("name", "adresse", "postnr", "telefon", "mobil", "bday", "mail");

if(isset($_GET["sortby"]) && in_array($_GET["sortby"], $sorttypes)) {
$qu = "ORDER BY ". $_GET["sortby"];
}else{
$qu = "ORDER BY name";
}
$query  = mysql_query("SELECT * FROM `badminton` ". $qu ."") or die(mysql_error());
Avatar billede sukos Juniormester
20. december 2003 - 07:31 #6
Nåh,

$sorttypes = array("name", "adresse", "postnr", "telefon", "mobil", "bday", "mail");

if(isset($_GET["sortby"]) && in_array($_GET["sortby"], $sorttypes)) {
$qu = " ORDER BY ". $_GET["sortby"];
}else{
$qu = "";
}
$query  = mysql_query("SELECT * FROM `badminton`". $qu ."") or die(mysql_error());
Avatar billede Slettet bruger
20. december 2003 - 12:08 #7
Tak for hjælpen, men fik min egen model til at virke:

<table width=900 border=1 align=center cellpadding=1 cellspacing=0>
<tr>
  <td><b><a href=oversigt.php?mode=1>Navn</a></b></td>
  <td><b><a href=oversigt.php?mode=2>Adresse</a></b></td>
  <td><b><a href=oversigt.php?mode=3>Postnr.</a></b></td>
  <td><b><a href=oversigt.php?mode=4>Telefonnr.</a></b></td>
  <td><b><a href=oversigt.php?mode=5>Mobilnr.</a></b></td>
  <td><b><a href=oversigt.php?mode=6>Fødselsdag</a></b></td>
  <td><b><a href=oversigt.php?mode=7>Mail</a></b></td>
</tr>

";



if ($mode == 1) {
   
    $data = mysql_query("SELECT * FROM badminton ORDER BY name asc") or die(mysql_error());
   
} elseif ($mode == 2) {
   
    $data = mysql_query("SELECT * FROM badminton ORDER BY adresse asc") or die(mysql_error());
   
} elseif ($mode == 3) {
   
    $data = mysql_query("SELECT * FROM badminton ORDER BY postnr asc") or die(mysql_error());
   
} elseif ($mode == 4) {
   
    $data = mysql_query("SELECT * FROM badminton ORDER BY telefon asc") or die(mysql_error());
   
} elseif ($mode == 5) {
   
    $data = mysql_query("SELECT * FROM badminton ORDER BY mobil asc") or die(mysql_error());
   
} elseif ($mode == 6) {
   
    $data = mysql_query("SELECT * FROM badminton ORDER BY faedselsdag asc") or die(mysql_error());
   
} elseif ($mode == 7) {
   
    $data = mysql_query("SELECT * FROM badminton ORDER BY mail asc") or die(mysql_error());
   
while ($row = mysql_fetch_array($data)) {

echo "
<tr>
  <td>" . $row['name'] . "</td>
  <td>" . $row['adresse'] . "</td>
  <td>" . $row['postnr'] . "</td>
  <td>" . $row['telefon'] . "</td>
  <td>" . $row['mobil'] . "</td>
  <td>" . $row['faedselsdag'] . "</td>
  <td>" . $row['mail'] . "</td>
</tr>

";



Hvis I lige smider et svar, så for I lige lidt julegaver :-D
Avatar billede ztyxx Nybegynder
20. december 2003 - 12:09 #8
:-)
Avatar billede Slettet bruger
20. december 2003 - 12:18 #9
Venter lige til Sukos også har lagt et svar
Avatar billede ztyxx Nybegynder
20. december 2003 - 12:19 #10
klart :-)
Avatar billede sukos Juniormester
20. december 2003 - 13:33 #11
Jamen ok da! :O=) (skal barberes idag!)
Avatar billede sukos Juniormester
20. december 2003 - 13:33 #12
ahh, shit!
Avatar billede sukos Juniormester
20. december 2003 - 13:41 #13
Hvis du ønsker at liste alle kolonner, og lave en sort en ud fra disse, kan du kikke på
mysql_list_fields()
Avatar billede ztyxx Nybegynder
20. december 2003 - 14:06 #14
takker for point

sukos skal du da ikke være julemand, siden du skal barneres idag :-)
Avatar billede ztyxx Nybegynder
20. december 2003 - 14:07 #15
damn, ligger stadig 3 point efter sukos i php ;-)
Avatar billede Slettet bruger
20. december 2003 - 15:28 #16
Jeg vil foreslå, at du skifter enten til min eller sukos' 20/12-2003 07:31:28

Det bliver lettere at overskue end din egen meget lange if-konstruktion.

ztyxx: Hvorfor se på så gamle tal. Det er denne måned, der er interessant. ;-)
Avatar billede ztyxx Nybegynder
20. december 2003 - 15:29 #17
sandbox> hehe, er nu helt bedøvende med point, bare for sjov, har ikke tjek på denne måneds pointgivning :-)
Avatar billede ztyxx Nybegynder
20. december 2003 - 15:32 #18
hehe, det er derfor denn måned er så interessant*LOL*
Avatar billede Slettet bruger
20. december 2003 - 15:42 #19
Jeg opdagede det lige igår.

Nu så jeg forresten også, at du kan bruge den også. Der ligger du nemlig 75 point over sukos.
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