Requete pour la récupération de l'ID des joueurs :
$query_idjoueurs = 'SELECT biben_joueur.bjid FROM biben_joueur';
Requete pour la liste des matchs :
$query_matchs = 'SELECT biben_match.bjid, biben_match.type_match , biben_match.nb_victoires, biben_match.nb_defaites, biben_match.diff_matchs FROM biben_match';
Ensuite pour chaque id de joueur, je regarde dans chaque ligne de matchs.
J'arrive à récupérer le nb_victoires total pour chaque joueurs et à le stocker dans la BDD mais je me demandais si il n'y avais pas possibilité de ne pas repasser par la base 
Voici mon code pour le moment :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| <?php
include("connexion.inc.php");
/* code du script
*/
echo "<p>Classement Bibendum :</p>";
// Liste des requêtes SQL
$query_matchs = 'SELECT biben_match.bjid, biben_match.type_match , biben_match.nb_victoires, biben_match.nb_defaites, biben_match.diff_matchs FROM biben_match';
$query_idjoueurs = 'SELECT biben_joueur.bjid FROM biben_joueur';
// Exécution des requêtes SQL
$liste_matchs = pg_query($query_matchs) or die('Échec requête : ' . pg_last_error());
$liste_idjoueurs = pg_query($query_idjoueurs) or die('Échec requête : ' . pg_last_error());
// Nombre de lignes dans les requêtes
$nbjoueurs = pg_num_rows($liste_idjoueurs);
$nbmatchs = pg_num_rows($liste_matchs);
$id = 0;
echo "<p>Nb de joueurs : $nbjoueurs<br>";
echo "Nb de matchs : $nbmatchs</p>";
for($i = 0; $i<$nbjoueurs; $i++)
{
// Variables
$nbvictoires = 0;
$nbdefaites = 0;
// Récupération de l'id du joueur
$id = pg_fetch_result($liste_idjoueurs, $i, 0);
// Requete, execution de la requete et comptage du nombre de lignes
$requete_victoires = "SELECT nb_victoires FROM biben_match WHERE bjid='$id';";
$resultat_victoires = pg_query($requete_victoires) or die('Échec requête : ' . pg_last_error());
$nblignesvictoires = pg_num_rows($resultat_victoires);
for ($j = 0; $j<$nblignesvictoires; $j++)
{
$nbvictoires = $nbvictoires + pg_fetch_result($resultat_victoires, $j, 0);
}
$req_update_victoires = "UPDATE biben_joueur SET nb_victoires='$nbvictoires' WHERE bjid='$id';";
$update_victoires = pg_query($req_update_victoires) or die('Échec requête : ' . pg_last_error());
// Libere le resultset
pg_free_result($resultat_victoires);
pg_free_result($update_victoires);
}
// Libère le resultset
pg_free_result($liste_matchs);
pg_free_result($liste_idjoueurs);
/* Déconnexion du serveur */
pg_close($dbconn);
//echo "Deconnexion du serveur.";
?> |
Mais pour cela j'ai du rajouter un champs nbvictoires dans ma table biben_joueur donc si je veux faire la différence simple/double/mixte, il faudrait que je créé les champs nbvictoires_simple, nbvictoires_double et nbvictoires_mixte et de même pour nbdefaites et diff_match.
Je pense que cela ferais un peu doublon avec la table biben_match et ne serais pas génial pour ce qui est des performances mais si il n'y a pas d'autres solutions.
Partager