Avatar billede f-andersen Nybegynder
21. august 2006 - 20:32 Der er 12 kommentarer og
1 løsning

Mysql order by ?

Hej

Jeg er ved at lave en fodbold side for en af mine kammerater...

Jeg er ved at lave en spiller side, hvor alle spillerne skal blive listet efter deres position (målmand, forsvar, midtbane, angreb)

I min mysql database har jeg et felt der hedder position.

Kode:
<?php
//Database forbindelse
include ("config.php");
$result = mysql_query("SELECT * FROM spillere ORDER BY position");
while ($row = mysql_fetch_array ($result)) {
?>
    <div>
        <a href="vis_spillere.php?id=<?php echo $row['id'];?>"><?php echo $row['navn']; ?></a>
    </div>
<?php
}
?>
Nu vil jeg jo så gerne kunne differencere mellem hvad indholdet i feltet position er. Så jeg kan skrive:

Forsvar:
Navn 1
Navn 2

Midtbane:
Navn 3
Navn 7

Angreb:
Navn 4
Navn 5

Er det muligt at lave i en query, eller skal jeg have 4 (målmand, forsvar, midtbane, angreb)??

Håber i forstår spørgsmålet...
Avatar billede nielle Nybegynder
21. august 2006 - 20:38 #1
Noget i denne stil?

<?php
//Database forbindelse
include ("config.php");
$result = mysql_query("SELECT * FROM spillere ORDER BY position");

$prevPosition = "";
while ($row = mysql_fetch_assoc($result))
{
    $position = $row["position"]
    if ($position != $prevPosition)
    {
        echo $position . ":<br>":
        $position = $prevPosition;
    }
?>
    <div>
        <a href="vis_spillere.php?id=<?php echo $row['id'];?>"><?php echo $row['navn']; ?></a>
    </div>
<?php
}
?>
Avatar billede f-andersen Nybegynder
21. august 2006 - 20:41 #2
Er der mulighed for at gruppere dem i positioner

Sådan at det på siden ser ud sådan:

Forsvar:
Navn 1
Navn 2

Midtbane:
Navn 3
Navn 7

Angreb:
Navn 4
Navn 5

Så man på en eller anden måde kan få skrevet, forsvar, midtbane, angreb??

Jeg prøver lige alligevel at prøve det script du skriver.. Jeg var nemlig ved at rode med noget GROUP BY, men det synes jeg ikke lige virker helt optimalt
Avatar billede nielle Nybegynder
21. august 2006 - 20:43 #3
Var det ikke "Forsvar", "Midtbane" og "Angreb" du havde i feltet position?
Avatar billede nielle Nybegynder
21. august 2006 - 20:45 #4
Der skal i hvert fald ikke brgues GROUP BY i dette tildfæde. Den bruges i helt andre sammenhæmge. :^)
Avatar billede f-andersen Nybegynder
21. august 2006 - 20:45 #5
Aaah det gør den jo sådan set :)...

Fandme smart!

Jeg prøver lige at rode lidt med det..
Avatar billede f-andersen Nybegynder
21. august 2006 - 20:47 #6
Ah, jeg tror der skal laves nogle små tilretninger:

Angreb:
Test
Forsvar:
Jacob Krogh
Forsvar:
Benny Hansen
Forsvar:
Børge Hansen
Midtbane:
Frank Andersen
Målmand:
Jens Hansen

Alle forsvarer skal samles under forsvar :)

Er det noget der er muligt?
Avatar billede nielle Nybegynder
21. august 2006 - 20:50 #7
Ret denne her:

$position = $prevPosition;

- til:

$prevPosition = $position;
Avatar billede f-andersen Nybegynder
21. august 2006 - 20:52 #8
Det lader ikke til at ændre noget...

Kode:
<?php
//Database forbindelse
include ("config.php");
$result = mysql_query("SELECT * FROM spillere ORDER BY position");
$prevPosition = "";
while ($row = mysql_fetch_assoc($result))
{
    $position = $row["position"];
    if ($position != $prevPosition);
    {
        echo $position . ":<br>";
        $prevPosition = $position;
    }
?>
    <div>
        <a href="vis_spillere.php?id=<?php echo $row['id'];?>"><?php echo $row['navn']; ?></a>
    </div>
<?php
}
?>

Viser:
Angreb:
Test
Forsvar:
Jacob Krogh
Forsvar:
Benny Hansen
Forsvar:
Børge Hansen
Midtbane:
Frank Andersen
Målmand:
Jens Hansen
Avatar billede nielle Nybegynder
21. august 2006 - 21:00 #9
Det kan jeg ikke finde hoved eller hale i... Prøv lige med denne version hvor der også er noget debug-kode med:

<?php
// Database forbindelse
include("config.php");

$result = mysql_query("SELECT * FROM spillere ORDER BY position");

$prevPosition = "";
while ($row = mysql_fetch_assoc($result))
{
    $position = $row["position"];
    echo "DEBUG: [$position] [$prevPosition]<br>";
    if ($position != $prevPosition);
    {
        echo $position . ":<br>";
        $prevPosition = $position;
    }
?>
    <div>
        <a href="vis_spillere.php?id=<?php echo $row['id'];?>"><?php echo $row['navn']; ?></a>
    </div>
<?php
}
?>
Avatar billede f-andersen Nybegynder
21. august 2006 - 21:04 #10
Resultatl:
DEBUG: [Angreb] []
Angreb:
Test
DEBUG: [Forsvar] [Angreb]
Forsvar:
Jacob Krogh
DEBUG: [Forsvar] [Forsvar]
Forsvar:
Benny Hansen
DEBUG: [Forsvar] [Forsvar]
Forsvar:
Børge Hansen
DEBUG: [Midtbane] [Forsvar]
Midtbane:
Frank Andersen
DEBUG: [Målmand] [Midtbane]
Målmand:
Jens Hansen
Avatar billede nielle Nybegynder
21. august 2006 - 21:07 #11
Å ja. Suk, hvad et lille ;-tegn for meget kan gøre.

Sådan:


<?php
// Database forbindelse
include("config.php");

$result = mysql_query("SELECT * FROM spillere ORDER BY position");

$prevPosition = "";
while ($row = mysql_fetch_assoc($result))
{
    $position = $row["position"];
    if ($position != $prevPosition)
    {
        echo $position . ":<br>";
        $prevPosition = $position;
    }
?>
    <div>
        <a href="vis_spillere.php?id=<?php echo $row['id'];?>"><?php echo $row['navn']; ?></a>
    </div>
<?php
}
?>
Avatar billede f-andersen Nybegynder
21. august 2006 - 21:12 #12
Perfekt, det spiller bare :)

Tak skal du have - smider du et svar :)
Avatar billede nielle Nybegynder
21. august 2006 - 21:12 #13
Svar :^)
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