IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

afficher une requete en fonction de résultats d'autres requetes [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 55
    Points : 46
    Points
    46
    Par défaut afficher une requete en fonction de résultats d'autres requetes
    Bonjour,

    Je développe actuellement un site web pour un club de football en php/mysql.
    J'aimerais gérer les classements dynamiquement, c'est à dire créer des requêtes pour récupérer le nombre de buts pour, buts contre, victoires, défaites, nuls, etc.. à partir des matchs effectués par chaque équipe. Jusque là pas de problèmes. Le souci est que maintenant je souhaiterais afficher le classement suivant le numéro de l'équipe et suivant le résultat des requêtes (butsPourDom, butsContre, vicDom, nulDom, defDom, meme chose pour les matchs à l'extérieur). Je vous donne seulement un extrait du code, car il est vraiment très long et deviendrait très vite illisible et incompréhensible.

    schéma des tables:
    tab_club: numClub, nomClub, nomVille
    tab_club_champ: refChamp, numClub
    tab_journee: refChamp, numJournee, dateJournee
    tab_match: numClubDom, numClubExt, numJournee, refChamp, scoreDom, scoreExt, penaltiesDom, penaltiesExt, joue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    //buts pour et contre à domicile
    $butsDom="select sum(mat.scoreDom) as butsPourDom, sum(mat.scoreExt) as butsContreDom from tab_match mat
        join tab_journee jou on ( jou.numJournee = mat.numJournee
    			        and jou.refChamp = mat.refChamp )
        join tab_club clu1 on clu1.numClub = mat.numClubDom
    where (clu1.numClub=".$numclub.")";
    $rbutsDom=mysql_query($butsDom, $connexion);
    $lbutsDom=mysql_fetch_array($rbutsDom, MYSQL_ASSOC);
     
    //nombre de victoires à domicile
    $vicDom="select count(*) as vicDom from tab_match mat
        join tab_journee jou on ( jou.numJournee = mat.numJournee
    			      	and jou.refChamp = mat.refChamp )
        join tab_club clu1 on clu1.numClub = mat.numClubDom
    where (clu1.numClub=".$numclub." and mat.scoreDom > mat.scoreExt)";
    $rvicDom=mysql_query($vicDom, $connexion);
    $lvicDom=mysql_fetch_array($rvicDom, MYSQL_ASSOC);
     
    //affichage du classement
    $cla="select clu.nomClub as equipe from tab_club clu 
    	    join tab_club_champ cha on cha.numClub=clu.numClub
    	where cha.refChamp=".$champ;
    $rcla=mysql_query($cla, $connexion);
    while ($ligne=mysql_fetch_array($rcla, MYSQL_ASSOC)
    {
    ...
    }

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bonjour

    Heu... je suis peut-être mal réveillée, mais je ne vois pas où se situe le problème POurrais-tu donner quelques précisions ?

    En attendant, quelques conseils :
    - utilise le renvoi d'erreur mysql pour détecter les problèmes de requêtes. Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $rvicDom=mysql_query($vicDom, $connexion) or die ('Erreur sur '.$rvicDom.' : '.mysql_error());
    - tu peux utiliser mysql_fetch_assoc.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $lvicDom=mysql_fetch_assoc($rvicDom);
    // équivault à mysql_fetch_array($rvicDom, MYSQL_ASSOC);
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 55
    Points : 46
    Points
    46
    Par défaut
    Le problème est le suivant:
    A partir des résultats des requêtes "butsPourDom", "butsContreDom", "vicDom", etc.., j'aimerais afficher le classement de chaque équipe dans une autre requête ($cla). Par conséquent, au niveau du code la syntaxe est correcte, cependant il faut que j'arrive à utiliser ces différentes requêtes et c'est là que je bloque.
    schéma fonctionnel:
    1------------------
    - requete butsPourDom
    - requete butsContreDom
    - requete vicDom
    - requete nulDom
    - requete defDom
    - de même pour les équipes jouant à l'extérieur

    2------------------
    afficher le nom des équipes du championnat avec leurs butsPour, butsContre, victoire, nuls, défaites.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ex: select * from equipes where championnat=1
    ..mysql_query...
    while ($ligne=mysql_fetch_array(....))
    {
       echo $ligne[nomEquipe];
       echo $ligne[butsPour];
       echo $ligne[butsContre];
       echo $ligne[victoire];
       echo $ligne[nuls];
       echo $ligne[défaites];
    }

    Merci pour votre réponse,

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 498
    Points : 461
    Points
    461
    Par défaut
    J'aurai besoin de précisions supplémentaires : tes 2 premières requêtes utilisent le paramètre $numclub qui doit être un numéro unique de club je suppose!! Tu récupère donc tout tes chiffres pour une seule équipe? Après, avec ta 3ème requête tu parcoure toutes les équipes du championnat $champ??? Je ne comprends pas comment tu peux raccrocher tout ça??

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 55
    Points : 46
    Points
    46
    Par défaut
    Justement, je pense que le problème vient d'ici je ne sais pas comment récupérer le numéro du club pour ces différentes requetes là puisque je veux afficher pour chaque équipe toutes les informations nécessaires (butsPour, butsContre, etc...). Par conséquent, je ne sais si ma méthode est bonne ou s'il y aurait autre chose de plus simple qui me permettrait de gérer le classement de chaque championnat. en tout cas, merci de vous pencher sur le sujet.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 498
    Points : 461
    Points
    461
    Par défaut Proposition
    Ceci est une proposition (en aucun cas la plus optimisé je tiens à le préciser) et fait un peu à l'arrache :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    //buts pour et contre à domicile
    function ButsDom($numclub, &$res_butsPourDom, &$res_butsContreDom, $connexion)
    {
    	$butsDom = "select sum(mat.scoreDom) as butsPourDom, sum(mat.scoreExt) as butsContreDom 
    			  from tab_match mat join tab_journee jou 
    			  on ( jou.numJournee = mat.numJournee and jou.refChamp = mat.refChamp ) 
    			  join tab_club clu1 on clu1.numClub = mat.numClubDom 
    			  where (clu1.numClub=".$numclub.")";
    	$rbutsDom = mysql_query($butsDom, $connexion);
    	$lbutsDom = mysql_fetch_assoc($rbutsDom);   //nombre de victoires à domicile
    	$res_butsPourDom = $lbutsDom[0]['butsPourDom'];
    	$res_butsContreDom = $lbutsDom[0]['butsContreDom'];
    }
     
    function VicsDom($numclub, &$res_VicsDom, $connexion)
    {
    	$vicDom="select count(*) as vicDom 
    			 from tab_match mat 
    			 join tab_journee jou 
    			 on ( jou.numJournee = mat.numJournee and jou.refChamp = mat.refChamp )
    			 join tab_club clu1 on clu1.numClub = mat.numClubDom
    			 where (clu1.numClub=".$numclub." and mat.scoreDom > mat.scoreExt)";
    	$rvicDom = mysql_query($vicDom, $connexion);
    	$lvicDom = mysql_fetch_assoc($rvicDom);
    	$res_VicsDom = $lvicDom[0]['vicDom']; 
    }
     
     
     
    $cla = "select clu.numClub as id_club, clu.nomClub as equipe 
    	  from tab_club clu 
    	  join tab_club_champ cha 
    	  on cha.numClub=clu.numClub 
    	  where cha.refChamp=".$champ;
    $rcla = mysql_query($cla, $connexion);
    $i = 0;
    tab_classement = array(); //on va mettre tous tes résultats dans un tableau afin de pouvoir les manipuler par la suite
    while ($ligne[$i] = mysql_fetch_assoc($rcla)
    {
    	$tab_classement[$i]['id_club'] = $ligne[$i]['id_club'];
    	$tab_classement[$i]['equipe'] = $ligne[$i]['equipe'];
    	ButsDom($ligne[$i]['id_club'], $tab_classement[$i]['butsPourDom'], $tab_classement[$i]['butsContreDom'], $connexion);
    	VicsDom($ligne[$i]['id_club'], $tab_classement[$i]['vicDom'], $connexion);
    	$i++;
    }
    Dans l'idée, c'est ce que je te proposerai! Il te reste les tests à faire en cas d'échec de connexion à la BD, etc...

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 55
    Points : 46
    Points
    46
    Par défaut
    merci pour ta proposition. Malhereusement, j'ai testé et rien ne s'affiche. Il faudrait que je regarde plus en détail, il y a peut etre une erreur de syntaxe ou autre. Sinon il va falloir que je me débrouille autrement.
    Sinon j'avais une idée concernant la gestion du classement, à savoir qu'a chaque saisie du score d'un match, je met une table tab_classement par exemple à jour pour chaque équipe. Seulement, le problème c'est la saisie du score ne peut etre effectuée qu'une seule donc en cas d'erreur c'est pas top..

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 498
    Points : 461
    Points
    461
    Par défaut
    Qu'est ce qui ne fonctionne pas? Tu as des messages d'erreur? Un print_r $tab_classement ne te donne rien?

  9. #9
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 55
    Points : 46
    Points
    46
    Par défaut
    pas de messages d'erreur un print ou un echo $tab_classement fonctionne sans problème. Le nom des équipes s'affiche bien, le souci vient des fonctions...
    (peut etre la requete qui ne s'exécute pas correctement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] afficher une image en fonction du résultat
    Par guidi dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/05/2012, 10h50
  2. [XL-2007] Afficher des cellules en fonction du résultat d'une liste déroulante
    Par mandrake57 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/02/2011, 17h21
  3. afficher une image en fonction de la valeur d un champ
    Par zahiton dans le forum Langage
    Réponses: 3
    Dernier message: 24/01/2006, 16h22
  4. changer et afficher une variable en fonction d'un select
    Par psychoBob dans le forum Général JavaScript
    Réponses: 30
    Dernier message: 22/11/2005, 08h15
  5. remplir une table en fonction des résultats
    Par Psychomantis dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 19/10/2004, 12h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo