[PHP] Aanwezigheid

Status
Niet open voor verdere reacties.
Hier kan eveneens:

PHP:
$alleSpelers = mysql_query ( "SELECT spelerid FROM spelers" );
$aantalSpelers = mysql_num_rows ( $alleSpelers );

buiten de while loop.

Vervolgens vervang je:

PHP:
$trainingen = mysql_query ( "SELECT training_id, datum FROM trainingen" );
 
while ( $training = mysql_fetch_assoc ( $trainingen ) ) {
 
  $spelers = mysql_query ( "SELECT id FROM trainingen_spelers WHERE training_id = '" . $training[ 'training_id' ] . "'");
 
  $aantalAanwezig = mysql_num_rows ( $spelers );
  $aantalAfwezig = $aantalSpelers - $aantalAanwezig;
 
  echo '<font color="green">('.$aantalAanwezig.')</font>&nbsp;<font color="red">('.$aantalAfwezig.')</font><br>';
  echo '</TD></TR>';
}

door:

PHP:
$spelers = mysql_query ( "SELECT id FROM trainingen_spelers WHERE training_id = '" . $rij_1->training_id . "'");
 
$aantalAanwezig = mysql_num_rows ( $spelers );
$aantalAfwezig = $aantalSpelers - $aantalAanwezig;
 
echo '<font color="green">('.$aantalAanwezig.')</font>&nbsp;<font color="red">('.$aantalAfwezig.')</font><br>';
echo '</TD></TR>';
 
Super bedankt super! Mijn dank is erg groot.

Wat ga ik nu (proberen te) doen:
- Zorgen dat je niet 2 keer de zelfde training/speler kan opslaan. (don't work by me)
- Alles op de website weergeven (niet zo moeilijk precies hetzelfde idee)
- Proberen om spelers en trainigen te wijzigen.
 
Niet twee keer dezelfde speler/training kunnen opslaan dwing je af op databaseniveau, niet in je code. Een UNIQUE-constraint op die twee velden zou de truc moeten zijn.
 
SvU, nu je toch aanwezig bent in dit topic, er is toch volgens mij wel een efficiëntere manier om dit resultaat te bereiken. Er zal toch wel op één of andere manier een 'slimme' query samen te stellen zijn, zodat niet voor elke speler een aparte query + telopdracht nodig is.

Of vergis ik me nu?Mijn SQL kennis is daarvoor niet toereikend, maar ik heb het idee dat jij op dit gebied meer thuis bent.
 
Het aantal spelers per training in 1 query kan best.

[sql]
SELECT training_id, COUNT(id) FROM trainingen_spelers GROUP BY training_id
[/sql]

Dan krijg je gewoon een lijst terug met training_id, en het aantal spelers :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan