Logo du forum
 

Forum TTH-News

| Inscription | | Recherche | | FAQ | | Accueil | | Liste des membres |
| Calendrier |
 
Vous n'êtes pas identifié! [Connexion] ou [Inscription] Forum » Programmation » [PHP] » besoin d'aide pour coder une fonction
Login Mot de passe

1 visiteurs sur ce topic (0 membre(s), 1 invité(s) )


Auteur
Sujet : besoin d'aide pour coder une fonction
Maitre Kanter
Moderateur par la même occasion...même pas en rêve
Membre # 2522

 Avatar du membre
Lieu : Poitiers

Messages :
3465 (0.55 par jour)


Score :

Message du 10-11-2006 @ 20:30   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   


Bonjour a tous,

Encore une fois je fais appel a vos talent de programmeur pour m'aider à résoudre ce problème. Tout d'abord les données.

Je fais un site web en ce moment pour le club de basket dans lequel j'étais en France. Je souhaiterais avoir les résultats des matchs ainsi que le classement des équipes. Pour cela, j'ai trouvé quelque chose de tout fait (pourquoi s'embêter a inventer ce qui existe déjà). J'utilise donc phpleague (faire une recherche google si ca vous intéresse). Malheureusement ce composant est designé pour les championnats de football. Quelle différence allez vous dire?

En fait le classement final au foot, en cas d'équipes à égalité de points se fait par la différence de buts marqués et de buts pris. En cas d'égalité sur ce point, ils pivilégient l'attaque (je crois). Au basket (ainsi qu'au handball) c'est différent. Dans un premier temps, on regarde si les équipes ont jouées l'une contre l'autre. Si oui, on fait le total des points marqués par équipes lors des deux matchs (aller et retour). Le plus grand score sera devant le plus faible. Si les deux équipes n'ont pas jouées l'une contre l'autre ou si le score aller compense le score retour (par exemple 70-50 au match aller et 70-50 au match retour), on regarde le quotient point pris/points contre. Le plus haut quotient est devant l'autre.

J'ai fait dans ce graphe un schéma de la base de données que j'ai (raccoucie car des infos ne sont pas pertinentes).

En gros:
dans la table phpl_match, j'ai tous les enregistrements des matchs de toutes les saisons et des tous les championnats. Je suis donc capable de trouvé les enregistrements correspondants à A contre B et B contre A. Si le score de ces enregistrements est NULL, cela signifie que le match n'a pas encore eu lieu. Dans ce cas, je peux ajouter un champ quotient dans la table phpl_clmnt car j'ai déja les butspour et les butscontre.
Si le match aller et/ou le match retour entre deux équipes ex aequo a/ont eu lieu, il doit être possible de faire ce que je veux.

En fait le code, a mon avis devrait ressembler (en résumé) à quelque chose comme ca:
Code :

if(buts_dom=="NULL"&&buts_ext=="NULL")
sort by quotient descending
else if (buts_dom>buts_ext)
id_equipe_dom devant id_equipe_ext
else if (buts_dom<buts_ext)
id_equipe_ext devant id_equipe_dom



Ce bout de "code" :D est très succint et ne prend pqs en compte tous les cas indiqués plus haut. En fait je ne sait pas comment mettre une équipe devant l'autre.

J'aurais certainement également des problèmes lors de la réalisation du code à proprement parler mais je ferais évoluer ce topic au fur et à mesure. Mes connaissances en PHP/mySQL remontent à seulement 2 ans mais je n'ai pas du tout pratiqué depuis.

Je suis également au courant que si 3 équipes sont ex-aequo et que A bat B, B bat C et C bat A, le classement donnera n'importe quoi mais je verrais ca plus tard car cela représente uniquement 10% des cas.

Merci de votre aide et de votre patience si vous êtes arrivé à la fin de ce message.

PS pour les modos: j'hésitais entre PHP et SQL car je pense que ca touche un peu aux deux donc ne vous gênez pas pour déplacer ce topic si nécessaire.
----------
Pour savoir qu'un verre était de trop, encore faut-il l'avoir bu
L'alcool est un ennemi. Celui qui fuit son ennemi est un lâche

portable : Asus A6B00VA
- Haut de page -
chani
Vétéran
Membre # 9009

 Avatar du membre
Lieu : METZ

Messages :
4161 (0.73 par jour)


Score :

Message du 13-11-2006 @ 13:36   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Vla une petite partie.... (pas le temps de la compléter)

Code :


$connect=mysql_connect(host, user, pw) or die ('connexion au serveur impossible'. mysql_error());
$db=mysql_select_db(bdd, $connect) or die ('sélection de la base de données impossible'. mysql_error());

$req="SELECT 'id_equip_dom', 'id_equips_ext', 'but_dom', 'but_ext' INTO 'phpl_matchs' WHERE 'id_equip_dom'='".$equipe1."' AND 'id_equips_ext'='".$equip2 ."' OR 'id_equip_dom'='".$equipe2."' AND 'id_equips_ext'='".$equip1."'";

$result=mysql_query ($req, $connect) or die ('Probléme dans la requête '.mysql_error());
$r_equipe1=0;
$r_equipe2=0;
while ($tab = mysql_fetch_assoc($result)) {
if ($tab['id_equip_dom']===$equipe1 AND $tab['id_equip_ext']===$equipe2) {
$r_equipe1 +=$tab['but_dom'];
$r_equipe2 +=$tab['but_ext'];
} Elseif ($tab['id_equip_dom']===$equipe2 AND $tab['id_equip_ext']===$equipe1) {
$r_equipe2 +=$tab['but_dom'];
$r_equipe1 +=$tab['but_ext'];
} Else {
die( 'Il y a une incohérence dans le résultat de la requête');
}

}





EDIT : ajour code

[message édité le 17-11-2006 @ 14:23 Par chani]
----------
chani_tth sur PSN ;)
- Haut de page -
chani
Vétéran
Membre # 9009

 Avatar du membre
Lieu : METZ

Messages :
4161 (0.73 par jour)


Score :

Message du 17-11-2006 @ 14:25   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Vla, plus qu'a rajouter ton code aprés pour traiter $r_equipe1 et $r_equipe2.
Désolé pour l'indentation.. inexistante.. pas moyen de mettre des tab dans le forum... :D une amélioration à prévoir peut être :D
idem pour pour le die... je n'ais pas mis de smiley..
----------
chani_tth sur PSN ;)
- Haut de page -
Maitre Kanter
Moderateur par la même occasion...même pas en rêve
Membre # 2522

 Avatar du membre
Lieu : Poitiers

Messages :
3465 (0.55 par jour)


Score :

Message du 17-11-2006 @ 21:46   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Merci beaucoup Chani. Enfin quelqu'un qui a l'air d'avoir compris ce que j'ai voulu dire :D. Je testerais ca ASAP et je te dirai comment ca va.

Tcho
----------
Pour savoir qu'un verre était de trop, encore faut-il l'avoir bu
L'alcool est un ennemi. Celui qui fuit son ennemi est un lâche

portable : Asus A6B00VA
- Haut de page -


Aller dans le forum :  

Plan du forum | Contacter l'administrateur

Powered by SoulBB 3.0.1
© Soulmanto, 2003-2010

Valid XHTML 1.0 Transitional

Page générée en 0.025 secondes