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 :

Nombre d'occurrences dans table de BDD


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Décembre 2020
    Messages : 8
    Par défaut Nombre d'occurrences dans table de BDD
    Bonjour, je cherche à connaitre le nombre de fois où un joueur apparait sur une feuille de match.
    Pour cela j'ai 2 tables (Formation et Joueur).
    La table joueur est composée de l'ID, nom, prenom, et d'autres colonnes dont je n'ai pas besoin ici.
    La table formation est composée de l'id, num1, num2,num3, ect...
    J'enregistre l'id joueur dans la colonne num1 si le joueur porte le numero 1 sur le terrain et dans la colonne num2 s'il porte le numero 2

    Avec le code ci dessous, j'arrive à obtenir le nom et le nombre de fois où un joueur apparait et le classer en ordre descendant mais impossible d'associer le prenom, le nom et l'id dans ce tableau.
    J'ai cru comprendre que la fonction Array_count_values ne fonctionnait que pour des tableau unique (peut etre que je dis une betise ?)
    Comment faire pour un tableau multidimentionnel?
    D'avance merci.

    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
    <center> Records individuels </center>
     
    <table width="40%" valign="top">
    <caption># Plus grand nombre de matchs disputés:</caption>
    <tr><td width="35%" bgcolor="#109C27"><center><B>Nom</B></center></td>
    <td width="35%" bgcolor="#109C27"><center><B>Prénom</B></center></td>
    <td width="25%" bgcolor="#109C27"><center><B>Matchs Joués</B></center></td>
    </tr>
    <?php 
    $tout = array();
    $req = mysql_query("SELECT num1,num2,num3, nom FROM formation
    LEFT JOIN joueur ON (joueur.id = formation.num1) OR (joueur.id = formation.num2) OR (joueur.id = formation.num3)");
    while($dat = mysql_fetch_assoc($req)){
     $tout[] = $dat['nom'];}
     $arCount = array_count_values($tout);
    arsort($arCount);
    for($i=0;$i<3;$i++)
    {
     
    	$nb = current($arCount);
    	$nommj = key($arCount);
    echo "<tr><td><center>".$nommj."</center></td><td><center>".'-'."</center></td><td><center>".$nb."</center></td></tr>";
    next($arCount);
    }
    ?></table>

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 644
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 644
    Par défaut
    je ne comprends pas ce que vous voulez faire avec la boucle for. array_count_values fonctionne avec une liste simple :
    https://www.php.net/manual/fr/functi...unt-values.php

    essayez la requête dans phpmyadmin et vous verrez les données que vous récupérez.

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2020
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Décembre 2020
    Messages : 8
    Par défaut
    bonsoir, la boucle for sert uniquement à limiter les résultats.

    Mon probleme c'est que si j'ai bien tout lu et compris, la fonction array_count_values ne fonctionne pas avec un tableau non simple.
    Donc je me demande comment faire pour compter les occurences des valeurs d'une table et les classer. Le but etant de connaitre le ou les joueurs qui ont le plus participé à des matchs.

    Si la fonction array_count_values n'est pas adaptée, connaissez vous une fonction qui pourrait m'aider ou si cela n'existe pas quelle methode je pourrais appliquer pour résoudre mon probleme?

    Cordialement

  4. #4
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 644
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 644
    Par défaut
    je pense que le plus important pour faire ça est de bien séparer la partie traitement et la partie affichage.
    dans la 1re partie, il y aura d'abord la requête et ensuite le parcours des résultats pour construire le tableau qui contiendra les nombres de participations que vous voulez afficher.
    et ensuite la 2e partie qui utilisera ce tableau php des nombres pour construire le tableau html.

  5. #5
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2017
    Messages : 508
    Par défaut
    Bonjour,
    Commençons d'abord la base de données.

    Par rapport à ce que tu veux faire, il te faut une autre table joueur_formation par exemple. Et cette table aura comme champs :
    - id
    - idFormation
    - idJoueur

    il sera donc facile pour toi de compter le nombre d'occurrence d'un joueur.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT COUNT(idJoueur), j.nom, f.nom_formation FROM joueur_formation t
    INNER JOIN joueur j ON (t.idJoueur=j.id)
    INNER JOIN formation f ON (t.idFormation=f.id)
    GROUP BY j.nom, f.nom_formation DESC;

    Cordialement !

Discussions similaires

  1. [AC-2007] Compter le nombre d'occurrence dans une sous-table
    Par Delborg dans le forum IHM
    Réponses: 2
    Dernier message: 29/02/2012, 22h32
  2. insérer champ formulaire dans table de Bdd
    Par cuhbe dans le forum Langage
    Réponses: 2
    Dernier message: 17/04/2008, 17h36
  3. Réponses: 2
    Dernier message: 06/05/2007, 23h43
  4. Recherche dans table de BDD par rapport à deux champs
    Par kiops dans le forum Bases de données
    Réponses: 4
    Dernier message: 09/03/2007, 12h21
  5. [9i, 8i] Nombre de lignes dans tables
    Par Débéa dans le forum Oracle
    Réponses: 1
    Dernier message: 23/03/2006, 10h19

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