---
title: "Hämta rätt spelare på rätt position?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/178235-hämta-rätt-spelare-på-rätt-position"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "streetrobban"
published: "2009-04-22T20:40:45.000Z"
updated: "2009-05-22T11:50:45.000Z"
replies: 3
views: 577
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/178235-hämta-rätt-spelare-på-rätt-position"
---

# Hämta rätt spelare på rätt position?

## #1 — streetrobban, 2009-04-22T20:40Z

Tja,

Jag håller på att skriva ut en laguppställning på en bild av en fotbollsplan. Jag har angett spelarna i en tabell och vilka positioner de har hämtas via ett ID på positionerna från en annan tabell. 

Jag undrar dock hur jag skriver ut alla spelarna på en gång för att sedan sätta ut dem på rätt plats på plan?

I dagsläget skulle jag kunna lösa det genom att göra en SELECT sats för varje position och använda WHERE Position = 29, där t.ex. 29 = AC (Anfallare Center). Men då kommer jag att behöva göra 11 SELECT satser med olika WHERE Position = XX, och det känns som det kanske finns en bättre lösning?

Så, hur hämtar jag alla spelarna (som har rätt GameID för den aktuella matchen) samtidigt och även positionerna som används för den aktuella uppställningen?

Detta är koden jag använder för att hämta en spelare med position 29:

```php
			<?php
			// Öppna databasen
			require 'includes/db.php';

			// Hämta matchens ID
			$ThisGameID = $_GET['ID'];

			// Hämta spelaren på rätt position
			$get = mysql_query("SELECT Pl.ID, Pl.Firstname, Pl.Lastname, Li.PlayerID, Li.GameID, Li.Captain, Li.Position, Po.ID AS PositionID, Po.Name
			FROM Lineups Li
			LEFT JOIN Players AS Pl ON Pl.ID = Li.PlayerID
			LEFT JOIN Positions AS Po ON Po.ID = Li.Position
			WHERE Li.GameID = '$ThisGameID' && Li.Position = 29");
			while($row = mysql_fetch_array($get)) 
			{
				// Hämta från Players
				$ID = $row['ID'];
				$Firstname = $row['Firstname'];
				$Lastname = $row['Lastname'];

				// Hämta från Lineups
				$PlayerID = $row['PlayerID'];
				$GameID = $row['GameID'];
				$Captain = $row['Captain'];
				$Position = $row['Position'];

				// Hämta från Positions
				$PositionID = $row['PositionID'];
				$Name = $row['Name'];

				echo "<!-- #### START TABELL - PLAN #### -->";
				echo "<table style=\"width: 550px; height: 400px; background-image: url('images/field.gif')\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">";
				echo "<tr>";
				echo "<td style=\"width: 550px; height: 80px; padding: 0px; text-align: center\">";
				echo "<span class=\"field\">$Firstname $Lastname</span>";
				echo "</td>";
				echo "</tr>";
			}

			// Stäng databasen
			mysql_close($open);
			?>
```

Jag försökte vara så tydlig som möjligt, men det kanske är svårt att förstå vad jag menar?

Permalänk: https://www.webforum.nu/p/178235

## #2 — drew, 2009-04-23T04:30Z

Förutsätter att PositionID är unik per uppsättning.

```php
while($row = mysql_fetch_array($get)) 
{
	$spelar_arr[$row['PositionID']] = $row;
}
```

Sen ekar du ut $spelar_arr\[position\]\['Firstname'\] osv. Du behöver inte kopiera över dom till variabler först utan kan använda dom direkt från arrayen.

Permalänk: https://www.webforum.nu/p/2182803

## #3 — LarsG, 2009-04-23T06:43Z

Gör sorteringen direkt i SQL-frågan

```
order by case position 
       when 'MV' then 1
...
       when 'AC' then 10
       when 'AH' then 11 end
```

Permalänk: https://www.webforum.nu/p/2182808

## #4 — streetrobban, 2009-05-22T11:50Z

drew: Hur menar du? På följande kod får jag bara ut en spelare. Sedan blir det tomt.

```php
			<?php
			// Öppna databasen
			require 'includes/db.php';

			// Hämta matchens ID
			$ThisGameID = $_GET['ID'];

			// Hämta spelaren på rätt position
			$get = mysql_query("SELECT AtPl.ID, AtPl.Firstname, AtPl.Lastname, AtLi.PlayerID, AtLi.GameID, AtLi.Captain, AtLi.Position, AtPo.ID AS PositionID, AtPo.Name
			FROM Lineups AtLi
			LEFT JOIN Players AS AtPl ON AtPl.ID = AtLi.PlayerID
			LEFT JOIN Positions AS AtPo ON AtPo.ID = AtLi.Position
			WHERE AtLi.GameID = '$ThisGameID' && AtLi.Position = 29");
			while($row = mysql_fetch_array($get)) 
			{
				// Hämta från Players
				$ID = $row['ID'];
				$Firstname = $row['Firstname'];
				$Lastname = $row['Lastname'];

				// Hämta från Lineups
				$PlayerID = $row['PlayerID'];
				$GameID = $row['GameID'];
				$Captain = $row['Captain'];
				$Position = $row['Position'];

				// Hämta från Positions
				$PositionID = $row['PositionID'];
				$Name = $row['Name'];

				$spelar_arr[$row['PositionID']] = $row;

				echo "<!-- #### START TABELL - PLAN #### -->";
				echo "<table style=\"width: 550px; height: 400px; background-image: url('images/field.gif')\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\">";
				echo "<tr>";
				echo "<td style=\"width: 550px; height: 80px; padding: 0px; text-align: center\">";
				echo "<span class=\"field\">".$spelar_arr['29']['Lastname']."</span>";
				echo "</td>";
				echo "</tr>";

				echo "<tr>";
				echo "<td style=\"width: 550px; height: 80px; padding: 0px; text-align: center\">";
				echo "<span class=\"field\">".$spelar_arr['20']['Lastname']."</span>";
				echo "</td>";
				echo "</tr>";

				echo "<tr>";
				echo "<td style=\"width: 550px; height: 80px; padding: 0px; text-align: center\">";
				echo "<span class=\"field\">".$spelar_arr['10']['Lastname']."</span>";
				echo "</td>";
				echo "</tr>";

			}

			// Stäng databasen
			mysql_close($open);
			?>
```

Permalänk: https://www.webforum.nu/p/2185518

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/178235-hämta-rätt-spelare-på-rätt-position
