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

Langage PHP Discussion :

[Tableaux] Classement de donnée dans un tableau


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2003
    Messages : 42
    Points : 36
    Points
    36
    Par défaut [Tableaux] Classement de donnée dans un tableau
    J'essaie depuis 2 jours de resoudre un probleme mais je ne trouve pas la solution

    J'ai trois table :
    ps3User : idUser, username, etc
    ps3Trophee : idTrophee, idJeux, type (bronze, argent, or, platine)
    ps3TropheeUser (pour les trophee des utilisateur), idTropheeUser, idTrophee (qui est le id de la table ps3Trophee), idUser (le id de la table ps3User), Reussit (oui ou non)

    Jai des requetes qui vont voir le nombre de trophee de chaque type reussit pour un utilisateur, il n'y a aucun probleme a ce niveau, je peut afficher un tableau avec le nom d'utilisateur, le nombre de trophee de chaque type, le nombre de pts que chaque trophee donne et le total de pts obtenu

    Mon probleme est qu'etant donner que c'est dans 2 tables differentes, je ne peut pas classer le nombre en ordre croissant

    Est-ce que quelqu'un aurait une solution ?

    J'ai essayer de faire un array :

    $classement[] = array('nom' => $tableauUser['username'], 'ptstotal' => $ptstotal, 'bronze' => $nbBronze);
    Mais je ne sait pas comment faire afficher les colonnes autre que le nom
    PunkMetal

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Bonjour,

    Peux-tu nous montrer de quelle manière tu procèdes actuellement ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2003
    Messages : 42
    Points : 36
    Points
    36
    Par défaut
    En gros le code ou je veut trier mes données ressemble a sa :
    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
     
    $data[] = array('volume' => "$tableauUser[username]", 'edition' => $ptstotal);
    foreach ($data as $key => $row)
    {
     
    $volume[$key]  = $row['volume'];
    $edition[$key] = $row['edition'];
    }
    array_multisort($row, SORT_NUMERIC, SORT_DESC);
    foreach ($data as $key => $row)
    {
    $volume[$key];
    $edition[$key];
    echo "$volume[$key] - $edition[$key]<BR>";
    }
    Si je met 2 fois le $data[] = array('volume' => "$tableauUser[username]", 'edition' => $ptstotal);
    Avec une valeur au lieu du $tableauUser[username] sa affiche #1, mais si je laisse le $data[] se remplir dans mon while ($tableauUser = mysql_fetch_array()) sa met 5 fois plus de valeur que ce qu'il y a dans ma table
    PunkMetal

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il vaut mieux voir ce qu'on peut faire a la source avec tes requetes.
    Tu veux presenter quoi comme informations et de quelle maniere ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2003
    Messages : 42
    Points : 36
    Points
    36
    Par défaut
    Si je fait juste afficher mes requetes tel quel sa donne un tableau comme sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Pos.  	Nom  	Bronze (1pts)  	Argent (3pts)  	Or (5pts)  	Platine (10pts)  	Total
    1	MetalHead84	118 (118) 	21 (63)	9 (45)	1 (10)	149 (236)
    2	Chorest	153 (153) 	26 (78)	10 (50)	2 (20)	191 (301)
    3	patou6969	153 (153) 	23 (69)	8 (40)	1 (10)	185 (272)
    4	fredoun	38 (38) 	3 (9)	1 (5)	0 (0)	42 (52)
    5	DANTE1234	117 (117) 	19 (57)	4 (20)	0 (0)	140 (194)
    (Desoler pour l'affichage, je ne sait pas comment copier un tableau a partir de mon site)

    En gros, je veut que c'est donner soit classer en ordre croissant par rapport au nombre de point total (le chiffre entre parenthese dans la derniere colone)
    PunkMetal

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2003
    Messages : 42
    Points : 36
    Points
    36
    Par défaut
    Et pour tout le code sa ressemble a sa : (j'hesitait a le placer ici etant donner que c'est quand meme assez long, j'ai 3 requetes SQL, j'ai un peu de difficulter avec les requetes sur plusieurs table, j'ai donc voulu y aller de la maniere simple en premier

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    $sqlSelectUser = "SELECT * FROM ps3User";
    $rsSelectUser = execSQL($sqlSelectUser);
    while ($tableauUser = mysql_fetch_array($rsSelectUser))
    {
    	$bronze = 0;
    	$argent = 0;
    	$or = 0;
    	$platine = 0;
    	$total = 0;
    	$ptsbronze = 0;
    	$ptsargent = 0;
    	$ptsor = 0;
    	$ptsplatine = 0;
    	$ptstotal = 0;
    	$sqlSelectTrophee = "SELECT * FROM ps3TropheeUser WHERE idUser='$tableauUser[idUser]' AND Reussit='Oui'";
            $rsTrophee = execSQL($sqlSelectTrophee);
    	while ($tableauTrophee = mysql_fetch_array($rsTrophee))
    	{
    	        $sqlType = "SELECT * FROM ps3Trophee WHERE idTrophee='$tableauTrophee[idTrophee]'";
    		$rsType = execSQL($sqlType);
    		while ($tableauType = mysql_fetch_array($rsType))
    		{
    			if ($tableauType['Type'] == "Bronze")
    			{
    				$ptsbronze = $ptsbronze + 1;
    				$bronze = $bronze +1;
    			}
    			else if ($tableauType['Type'] == "Silver")
    			{
    				$ptsargent = $ptsargent + 3;
    				$argent = $argent +1;
    			}
    			else if ($tableauType['Type'] == "Gold")
    			{
    				$ptsor = $ptsor + 5;
    				$or = $or +1;
    			}
    			else if ($tableauType['Type'] == "Platinium")
    			{
    				$ptsplatine = $ptsplatine + 10;
    				$platine = $platine +1;
    			}
    		}
    	}
    	$total = $bronze + $argent + $or + $platine;
    	$ptstotal = ($bronze*1) + ($argent*3) + ($or*5) + ($platine*10);
    	$data[]= array('volume' => "$tableauUser[username]", 'edition' => $ptstotal);
    	foreach ($data as $key => $row) {
    	$volume[$key]  = $row['volume'];
    	$edition[$key] = $row['edition'];
    	}
    	array_multisort($row, SORT_NUMERIC, SORT_DESC);
    	foreach ($data as $key => $row)
    	{
    		$volume[$key];
    		$edition[$key];
    		echo "$volume[$key] - $edition[$key]<BR>";
    	}
    	echo "<TR>";
    	echo "<TD ALIGN=center><SPAN CLASS=style14>$position</SPAN></TD><TD ALIGN=center><SPAN CLASS=style14>$tableauUser[username]</SPAN></TD><TD ALIGN=center><SPAN CLASS=style14>$bronze ($ptsbronze)</SPAN></TD>
    								<TD ALIGN=center><SPAN CLASS=style14>$argent ($ptsargent)</SPAN></TD><TD ALIGN=center><SPAN CLASS=style14>$or ($ptsor)</SPAN></TD><TD ALIGN=center><SPAN CLASS=style14>$platine ($ptsplatine)</SPAN></TD><TD ALIGN=center><SPAN CLASS=style14>$total ($ptstotal)</SPAN></TD>";
    							echo "</TR>";
    	$position = $position +1;
    }
    PunkMetal

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2003
    Messages : 42
    Points : 36
    Points
    36
    Par défaut
    Finalement j'ai utiliser un exemple sur le site de php.net et sa semble fonctionner maintenant
    PunkMetal

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

Discussions similaires

  1. Classement des données dans un tableau
    Par medboy94 dans le forum Langage
    Réponses: 3
    Dernier message: 30/05/2015, 14h02
  2. [Tableaux] affichage des données dans un tableau
    Par bilane dans le forum Langage
    Réponses: 1
    Dernier message: 21/03/2007, 17h31
  3. Réponses: 6
    Dernier message: 27/09/2006, 20h27
  4. Réponses: 2
    Dernier message: 02/08/2006, 15h11
  5. Réponses: 3
    Dernier message: 11/01/2006, 17h44

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