Rechercher : dans
Par :

Classement PHP avec montées et descentes

Dernière réponse le 19 jun 2007 à 11:11:33 seifer001, le 17 jun 2007 à 21:06:24 
 Signaler ce message aux modérateurs

Bonjour !

Je bloque un peu pour la création d'un classement php.
Ce qui rend le plus compliqué, c'est que j'aimerais avoir les montées et descentes en même temps.

En faites, j'ai prévu d'avoir 2 tables.
Une pour l'ancien classement, et une pour le nouveau (vu que je ferais des mises à jour manuelles du classement).

Et donc du coup, je pensais faire un script permettant de comparer les 2 tables pour en ressortir les montées et descentes des joueurs lorsque je les affiche.

Je pensais faire avec un utilisant des array mais j'avoue ne pas être un pro en php et j'ai un peu de mal :)


Des personnes auraient des astuces ? =)

Configuration: Windows XP
Firefox 2.0.0.4

Meilleures réponses pour « Classement PHP avec montées et descentes » dans :
PHP - Les classes VoirLa notion de classe Php3 intègre un soupçon de caractéristiques empruntées aux langages orientés objet, c'est-à-dire la possibilité d'utiliser des objets, entités regroupant des données et des fonctions au sein d'une structure et rendant la...
PHP - Administration d'un annuaire LDAP VoirIntroduction à LDAP PHP permet la connexion et l'envoi de requêtes sur un annuaire LDAP, c'est-à-dire un serveur permettant de stocker des informations de manière hiérarchique. Pour plus d'informations sur les fonctions LDAP de PHP, reportez...
Classe abstraite et fonction virtuelle pure VoirClasse abstraite et fonction virtuelle pure Dans l’exemple de code 7.3(fonctions virtuelles), la classe Noeud a ceci de particulier qu’elle représente uniquement un concept. Elle a été définie pour isoler les caractéristiques générales des...

1

Alain42, le 17 jun 2007 à 21:11:23

Peux tu donner un peu plus de precisions.
Si je comprend bien:
Tu as deux tables stockees dans une base Mysql ? Une par niveau de classement
Et tu voudrait faire une premiere extraction montrant ceux qui sont montés, et une autre ceux qui sont descendus ?

Répondre à Alain42

2

Scriptiz, le 17 jun 2007 à 21:13:24

Si tu les sauvergarde dans une base de donnée tu peut très vite les triées par une requete MySql :)

$retour = mysql_query('SELECT * FROM classement ORDER BY id');

par la suite pour comparer avec une autre table moi je mettrai tout dans la même base de données pour comparer facilement, où alors avec une requête :)

Répondre à Scriptiz

3

seifer001, le 17 jun 2007 à 21:20:02

Pour commencer, merci à vous 2 pour vos réponses.

Je vais être un peu plus précis sur mes 2 tables.
En faites elles sont juste différentes par rapport au moment ou les données sont enregistrés.
C'est à dire par exemple, la première stock le classement au mois de janvier et la seconde table stock la classement du mois de février.

Et ensuite le classement irait prendre les données des 2 tables pour comparer les équipes et par la même occasion indiqué si l'équipe à monté de 2 places ou baissée.


@Scriptiz
Je suis d'accord pour le order by, cela me pose pas de soucis mais c'est apres je souhaite comparer les données pour comme dit plus haut, affiché la montée/descente.
Il me semble que l'utilisation d'array serait la meilleur solution mais j'ai un peu de mal.

Répondre à seifer001

4

Alain42, le 17 jun 2007 à 21:59:27

Une piste:

si dans chaque table tu as les champs mois,classement, equipe

Pour les montees, tu fais une extraction MYSQL avec:
SELECT classement, equipe FROM table1 AS p, Table2 AS a
WHERE p.equipe=a.equipe AND p.classement < a.classement

Pour les descentes, tu fais une extraction MYSQL avec:
SELECT classement, equipe FROM table1 AS p, Table2 AS a
WHERE p.equipe=a.equipe AND p.classement > a.classement

p comme precedent, a comme actuel

a la place de table 1 et 2 tu peux mettre des variables qui changeront en fonction de ta demande (janvier, fevrier etc )

et tu affiches par une boucle php while

Répondre à Alain42

5

seifer001, le 18 jun 2007 à 02:05:08

Je te remercie pour ton aide.

Mais en continuant sur ton idée, c'est pour afficher 2 classements différents alors que je souhaite avoir un seul et unique classement (juste avoir une notification pour différencier la montée de la descente)

:)

Répondre à seifer001

6

Alain42, le 18 jun 2007 à 10:20:42

C'est a dire une seule liste des équipes avec en premier celle qui a le plus gagne de places au classement et en queue celle qui a le plus perdu de places ?

Répondre à Alain42

7

seifer001, le 18 jun 2007 à 13:34:27

En fait, en reprenant l'exemple plus.

Afficher le classement de février tout en y insérant les notifications si l'équipe à monté ou descendu par rapport a janvier :)

Répondre à seifer001

8

Alain42, le 18 jun 2007 à 14:33:00

C'est a dire tu affiche la liste des equipes avec une colonne classement actuel, et une autre classement mois precedent ?

On peut mettre en couleur les differences.

Donnes moi plus d'infos et je regarde ça ce soir en reel sur mon serveur local.

Répondre à Alain42

9

seifer001, le 18 jun 2007 à 15:09:50

C'est tout a fait ca Alain42 ! =)

Répondre à seifer001

10

Alain42, le 18 jun 2007 à 22:01:31

Voila je t'ai fait un petit script fait un copier coller, met tes codes d'acces a ta base et essaye.
(je suis parti avec deux tables ayant chacune les champs classement et equipe)

<html>
<head>

</head>
<?php
$host="localhost";
$Login=".........";
$Pass="........";
$DB="test";
$table1="table_janvier";
$table2="table_fevrier";

// Connexion a la base de donnees
$AccesBase = mysql_connect($host,$Login,$Pass);
mysql_select_db($DB,$AccesBase);
$QuestionBase = "SELECT p.classement AS p_c, a.classement AS a_c, p.equipe AS e FROM $table1 AS p, $table2 AS a WHERE a.equipe=p.equipe " ;
$result_recherche=mysql_db_query($DB, $QuestionBase) or die (mysql_error());
$nombre_enr=mysql_num_rows($result_recherche);

?>
<table border="1" cellspacing="6" cellpadding="6" align="center">
<tr align="center"><th>Equipe</th><th>Classement</th><th>Classement precedent</th><th>Variation</th></tr>
<?php

while ($row=mysql_fetch_assoc($result_recherche)){
$delta=$row[a_c]-$row[p_c];
if($delta>0){$color="red"; $delta="+".$delta;}
if($delta<0){$color="green";}
if($delta==0){$color="white";}

echo "<tr align=\"center\"><td>$row[e]</td><td>$row[a_c]</td><td>$row[p_c]</td><td bgcolor=$color>$delta</td></tr>";

}
?>
</table>
<body>
</html>

Est ce que ça t'aide ?

Répondre à Alain42

12

seifer001, le 18 jun 2007 à 23:24:07

Ha oui c'est carrément excellent !
Je connaissais pas mysql_fetch_assoc !

Par contre j'ai une erreur par rapport a la ligne " $delta=$row[a_c]-$row[p_c]; "
Notice: Use of undefined constant p_c - assumed 'p_c' in d:\documents and settings\...\test.php on line 26

J'utilise easyphp avec PHP 4.3.10.

Répondre à seifer001

11

Alain42, le 18 jun 2007 à 23:15:12

Petite précision, si tu veux que les equipes sortent dans l'ordre du classement de fevrier par exemple tu rajoutes à la fin de la requette:

ORDER BY a.classement (ou ORDER BY a_c)

Répondre à Alain42

13

seifer001, le 18 jun 2007 à 23:27:15

Merci pour la précision mais j'avais réussi a m'en sortir tout seul sur ce coup :p

Sinon une idée sur l'origine de l'erreur ? ;-)

Répondre à seifer001

14

Alain42, le 19 jun 2007 à 09:10:12

Mysqql_fetch_assoc, c'est pareil que mysql_fetch_array, mais ça te sort des lignes dans un array avec comme clefs les noms des champs.

Bizzare pour la ligne $delta, chez moi ça marche.

essaye comme ça:

$delta=$row['a_c']-$row['p_c'];

d'ailleurs c'est plus logique de mettre des ' dans les noms entrés entre [].

Répondre à Alain42

16

 Alain42, le 19 jun 2007 à 11:11:33

Je ne me suis pas mefié, j'ai travaillé sur mon serveur PHP5, il autorise quelques fautes de syntaxe.

Très heureux d'avoir pu t'aider.

Cordialement

Répondre à Alain42

15

seifer001, le 19 jun 2007 à 10:58:46

Ha ba oui effectivement !
Je te remercie pour ton aide, c'est nickel :)

Répondre à seifer001
Collection CommentÇaMarche.net