[PHP] array, teamspel

Pagina: 1
Acties:

Onderwerpen


  • Mark309
  • Registratie: September 2001
  • Niet online

Mark309

Ook wel Piet

Topicstarter
Hey,

Ik kreeg de vraag of ik voor onze familiedag een invulsysteempje kon maken waarin iedereen
zijn favoriete teamsamenstelling aan kon geven (dus welke captains bij welke personen), en dat dit dan automatisch zou zorgen vooreen net overzichtje.

Dit is de tabel:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
id | captain | persoon
-------------------------
1     mark        trees 
2     mark        henk 
3     mark        bram 
4     mark        yvette 
5     erik        trees 
6     erik        bob 
7     erik        desi 
8     erik        jose 
9     mark        trees 
10    erik        trees 
11    bob         trees


met de volgende sql query geeft het deze uitvoer:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 SELECT count( * ) AS aantal, captain, deelnemer
FROM `keuzes` 
GROUP BY deelnemer, captain
ORDER BY aantal DESC 

aantal captain deelnemer 
2           mark     trees 
2           erik     trees 
1           erik     jose 
1           bob      trees 
1           mark     henk 
1           erik     bob 
1           mark     bram 
1           erik     desi 
1           mark     yvette


Deze uitvoer zit al heel erg in de richting van wat ik denk te moeten hebben, alleen zit trees dus nu nog steeds bij meerdere captains ingedeeld, door zoeken kwam ik er achter dat ik de namen waarschijnlijk in een array moet zetten zodat ik kan controleren wie er al ingedeeld is, alleen zonder gerichte zoekwoorden kom ik niet ver.

Dus wie kan mij een duw in de goede richting geven om automatisch de captains hun deelnemers te geven want ik kom er even niet meer uit :)

Productman.nl - Helpt startups in de Achterhoek en Liemers


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Iets in de zin van:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$players = array();
while ( $record = mysql_fetch_assoc($result) )
{
  $player = $record['deelnemer'];
  if ( isset($players[$player]) ) continue;
  $players[$player] = $record['captain'];
}

$captains = array();
foreach ( $players as $player => $captain )
{
  if ( !isset($captains[$captain]) ) $captains[$captain] = array();
  $captains[$captain][] = $player;
}

Die 2de constructie is mischien onnodig, zie maar wat je er mee doet.

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • b19a
  • Registratie: September 2002
  • Niet online
http://dev.mysql.com/doc/mysql/en/select.html kijk hier eens naar het DISTINCT keyword, misschien dat je daar wat mee kan?

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Mischien gaat dit ook werken:
SQL:
1
2
3
4
SELECT count( * ) AS aantal, captain, deelnemer
FROM `keuzes` 
GROUP BY deelnemer
ORDER BY aantal DESC

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Michali schreef op vrijdag 26 augustus 2005 @ 10:32:
Mischien gaat dit ook werken:
SQL:
1
2
3
4
SELECT count( * ) AS aantal, captain, deelnemer
FROM `keuzes` 
GROUP BY deelnemer
ORDER BY aantal DESC
Volgens mij is het verplicht om alle velden die niet van een aggregate function komen in de Group By clause te zetten.

Bij welke captain wil je nou dan trouwens dat Trees ingedeeld wordt? Je moet er wel een criteria voor hebben. Je database weet anders natuurlijk ook niet welke hij moet tonen.

[ Voor 19% gewijzigd door Woy op 26-08-2005 11:44 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Mark309
  • Registratie: September 2001
  • Niet online

Mark309

Ook wel Piet

Topicstarter
rwb schreef op vrijdag 26 augustus 2005 @ 11:42:
[...]

Volgens mij is het verplicht om alle velden die niet van een aggregate function komen in de Group By clause te zetten.

Bij welke captain wil je nou dan trouwens dat Trees ingedeeld wordt? Je moet er wel een criteria voor hebben. Je database weet anders natuurlijk ook niet welke hij moet tonen.
In dit geval zou Trees zoals bij bovenstaande voorbeeld bij 2 teams terecht kunnen komen omdat ze daar evenhoog in de ranglijst staat, dit maakt opzich niet veel uit, daarvoor neem ik gewoon wie het eerst kom wie het eerst krijgt.

Ik hoop er vanavond even verder mee te kunnen proberen maar ben erg druk met een 2003 migratie, bedankt voor de hulp iig.

Productman.nl - Helpt startups in de Achterhoek en Liemers


Acties:
  • 0 Henk 'm!

Verwijderd

ik zou zowieso al 2 tabellen gebruiken: personen & teams (werken met id'tjes)
Pagina: 1