|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() gregory Étudiant Inscription : décembre 2011 Messages : 6 ![]() |
bonjour je crée un tournoi de tennis(c'est un pti pour mon bts) et je sèche sur la requête me permettant de choisir 2 joueur et de leur attribuer une date de match
j'ai 3 table: 1 adherent (celle la n'est pas utilie dans le cas présent) 1 tournoi (id, date_heure) 1 participe(adherent_id, tournoi_id, participation) je souhaite donc faire apparaitre le même tournoi_id pour 2 adherent_id et la rien a faire j'ai trouvé une requête mais celle si me met le tournoi_id sur tous mes adherent_id ?? UPDATE participe JOIN tournoi SET tournoi_id=id WHERE id=.... je sais que c'est faux si quelqu'un peut m'aider merci d'avance |
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Adeline Consultant informatique Inscription : décembre 2011 Messages : 20 ![]() |
Tout d'abord une question à quoi sert le champ 'participation' dans ta table participe???
Ensuite pourquoi un update??? tu voudrai pas plutôt ajouter un enregistrement dans ta table participe? ou même ajouter deux enregistrements (un pour chacun des joueurs)? |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() gregory Étudiant Inscription : décembre 2011 Messages : 6 ![]() |
le champs participation ne renvoi qu'un booleen il participe ou non donc la pas de soucis j'ai récuperé tous mais adherent qui participe
rajouter un enregistrement pourquoi pas mais mon problème reste le même ces de faire correspondre le même "tournoi_id" avec 2 "adherent_id" et pas plus car avec ma requête il est rattaché a tous mes id? |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Adeline Consultant informatique Inscription : décembre 2011 Messages : 20 ![]() |
Tu peux me donner un exemple de jeux de données pour que je vois ce que tu as dans tes tables?
Et me dire ce que tu voudrais que ta requête ajoute ou modifie. |
|
|
00
|
|
|
#5 | ||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 726 ![]() |
Salut
Faudrait peut être en 1er faire une requête SELECT pour récupérer les 2 joueurs en questions (il y aurait alors un LIMIT 2 à cette requête). Faudrait mieux préciser sous quelle condition il faudrait récupérer tel joueur plutôt qu'un autre, s'il y en a bien sûr. Comme par exemple exclure les joueurs qui participent déjà. Un exemple : Code :
Par ailleurs, il faudrait peut être une table "rencontre" ayant des couples d'IDs d'adhérents pour savoir quel joueur joue avec tel autre joueurs, car sinon, comment feras tu pour le savoir ? Le booleen que tuas indique seulement si on participe ou pas, rien de plus, non ? C'est assez maigre comme info, non ? Dans ce cas d'ailleurs, cette table "participe" ne servirait pas à grand chose (inutile même), c'est grâce à ces couples d'IDs de cette table "rencontre" qui dira si tel joueur participe ou pas, donc chaque couple d'IDs feront office de booleen. Pas présent -> False Présent -> True Et en plus on sait qui joue avec qui. Vois tu ce que je veux dire ? Petite parenthèse. A savoir qu'il aurait été mieux (à mon sens) que le champ "id" de la table "tournoi" ait le même nom que la table "participe" vu qu'il s'agit de la même donnée (clé primaire - clé étrangère). Donc "tournoi_id" dans les 2 tables. A noter que ça ne cause pas de problème d'ambiguïté grâce aux alias. Pour ce qui est de sélectionner une date, il est préférable de le prévoir au niveau de l'interface, genre choisir cette date dans un calendrier (Javascript serait un bon moyen) à la même étape que lorsqu'on valide cette rencontre. Que ceci reste une opération "humaine" serait plus simple à mon sens. Si tu veux vraiment automatiser l'acquisition de cette date, alors il faudrait peut être avoir une notion de cours (les terrain de tennis) et des plages horaire. En gros, d'avoir au préalable cette liste, puis il suffit de prendre à chaque fois la plage horaire suivante (libre) pour chaque rencontre. Sachant aussi que la durée d'un match ne sera connu que lorsqu'il sera terminé, sans compter que la météo peu aussi se mettre de la partie. Bref, il y aura toujours une part d'incertitude, donc le "tout automatisé" sera à mon sens difficile à obtenir.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
||
|
|
00
|
|
|
#6 |
|
Membre expérimenté
![]() |
Re ; +1 Run
je crois aussi faut spécifier les critères de choix de joueur afin de permettre une sélection automatique sans intervention humaine !!!!! sauf cas contraire. donc faut faire un algorithme de choix ...... je crois qu'il faut passé par une étude de l'existant et voir les règles de gestion de ce type de tournois et les différentes contraintes pour avoir une bonne modélisation optimisé.
|
|
|
00
|
|
|
#7 | ||
|
Invité de passage
![]() gregory Étudiant Inscription : décembre 2011 Messages : 6 ![]() |
merci pour vos réponses mais je suis assez limité car pour le site que je fais je ne peux pas utiliser de javascript ou autre dao etc.. je doit rester en procédurale. par contre j'ai réussi a attribuer 1 id date a deux joueur mais je ne sais pas comment faire une boucle pour qu'il me prenne en compte l'id 1 puis l'id 2 etc.. voici mon code sa sera peut être plus clair
Code :
si quelqu'un peut m’éclairer merci d'avance |
||
|
|
00
|
|
|
#8 | |||||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 726 ![]() |
N'hésite pas à parcourir les forums, comme celui-ci, tu obtiendras pas mal d'exemples de code.
Un exemple très courant : Code :
Citation:
Comment ce fait-il que tu ait un ID de tournoi valant 0 ? Le 1er tournoi ne devrait il pas avoir comme valeur 1 ? Je te donne mon avis (pure hypothèse bien sûr) sur ce qui me semble le plus logique. Normalement tu devrais avoir un ou plusieurs tournois dans cette table "tournoi". 1er tournoi : ID = 1 2ème tournoi : ID = 2 ... etc ... Il ne devrait pas avoir de lignes avec comme ID 0. Lorsqu'on veut créer des adhérents (joueurs) pour un tournoi en particulier parmi les différents tournoi, par exemple le 2, alors il faut faire un INSERT INTO, une insertion (et non un UPDATE). Exemple : Code :
Si on a déjà créer des joueurs dans cette table "participe", puis pour X raison il y a un adhérent qui ne souhaite pas participer au tournoi 2 mais plutôt au tournoi 1, alors cette fois on fera un UPDATE (une mise à jour) uniquement sur l'ID du tournoi en relation de cet adhérent (adherent_id). Exemple : Code :
UDPATE participe SET tournoi_id = 1 WHERE adherent_id = 1 AND tournoi_id = 2 A coté de ça, faire une liste de participants, certes, pourquoi pas. Mais dans ton domaine, il y a tout de même une notion très forte de "rencontre", de "match". D'ailleurs, toi même tu as utiliser naturellement comme nom de variable $match. Or, ce n'est pas du tout le cas, un match, c'est très précisément 2 joueurs bien précis qui joue entre eux, ce que ne représente pas cette table "participe". Il y a une notion de couples de joueurs. De plus, un match débouche sur un score, il y a aussi un gagnant et un perdant. Mais encore, si dans cette table "participe" il venait à avoir un nombre impair de joueurs, il y aura alors un joueur isolé. Comment fera t-il pour faire un match (ou une rencontre) ? Autrement dit, si ta Bdd ne représente pas la réalité, ne couvre pas le secteur dont tu traites, tu auras beaucoup de peine a obtenir ce que tu veux.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com