Jointure: récupérer joueur qui n'est pas dans l'autre table

Eléphant du PHP | 206 Messages

15 oct. 2010, 12:03

Bonjour à tous,

J'ai fait un script qui permet de récuperer les joueurs titulaires de chaque équipe afin d'effectuer un match.
Ce que je souhaite, c'est de vérifier que les joueurs que chaque équipe a mis sur la feuille de match (table phpl_ordres) appartiennent toujours a l'équipe (qu'il n'y ai pas eu de transfert entre temps).

<souligne>Voici les 2 tables en questions :</souligne>

Joueurs-id_joueur
-id
- equipe_id
-caracteristique1
-caracteristique2
ect

phpl_ordres-id
-match_id
-equipe_id
-joueur-id
-poste (le poste du joueur : 1 2 3 4 5)

Donc dans cette table il y a une entrée pour chaque poste (que prendra un joueur) de chaque équipe a chaque match

Mon code actuel :
<?php
// Cette premiere requete permet de récuperer les joueurs (des 2 équipes) qui joueront le match
$sql='SELECT  phpl_ordres.equipe_id AS id_equipe_ordre, joueur_id, joueurs.equipe_id AS id_equipe, poste, dribble, interception, defense
FROM phpl_ordres
LEFT JOIN joueurs
ON (phpl_ordres.joueur_id = joueurs.id)
WHERE '.$row['id_match'].' = match_id';
 $requete2 = mysql_query($sql) or die (mysql_error());
	
// ON BOUCLE CHAQUE JOUEUR
while($row2 = mysql_fetch_assoc($requete2))
{
	
// ICI on vérifie que le joueur appartient toujours bien a une des 2 équipes	
		if($row2['id_equipe'] != $row['id_equipe_dom'] && $row2['id_equipe'] != $row['id_equipe_ext'])
		{
	echo '<br /><strong> CE JOUEUR : '.$row2['joueur_id'].' nappartient plus à léquipe </strong><br />';
	
// on le remplace par un joueur qui ne joue pas
$sql3='SELECT joueur_id, joueurs.equipe_id AS id_equipe, poste, dribble, interception, defense
	FROM joueurs
	LEFT JOIN phpl_ordres
	ON (phpl_ordres.joueur_id = joueurs.id)
	WHERE joueurs.equipe_id ='.$row2['id_equipe_ordre'].' AND
      	match_id !='.$row['id_match'];
Voila ma derniere requete sert a mettre un autre joueur a sa place.
il faut que le joueur appartienne bien a l'équipe (premiere clause du WHERE)
mais aussi que le joueur ne soit pas déja sur la feuille de match a un autre poste (2eme clause du WHERE); je pensais donc prendre un joueur qui ne joue pas le match actuel !=$row['id'] et c'est cette 2eme clause du where qui ne fonctionne pas car lorsqu'un joueur n'appartient plus a l'équipe, il me le remplace par le premier joueur qui vient..


Donc j'aimerais vos conseils sur cette jointure.

Merci !
Cherche graphiste ou designer pour jeu en ligne de gestion d'une équipe de Basket. Projet fini N'hésitez pas à me contacter

Eléphant du PHP | 55 Messages

19 oct. 2010, 15:44

Bonjour,

Je ne réponds pas directement à ta question mais ne serait-il pas plus simple de supprimer les joueurs de ta table d'ordres lorsqu'il sont transférés ? Notamment en considérant que les transferts seront vraisemblablement étalés sur la semaine alors que les périodes de calcul des matchs vont représenter un pic de consommation en ressources.