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 :

Déterminer la progression dans un classement


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2006
    Messages : 264
    Points : 105
    Points
    105
    Par défaut Déterminer la progression dans un classement
    Bonjour, j'ai un classement par point de joueur dont voici la table:
    pseudo pswd mel nbpts pos avant
    Je souhaite afficher dans mon tableau si le classement du joueur à changer :
    si avant il étais 8eme et que maintenant il est 5 eme j'affiche une flèche vers le haut et inversement.
    Voici mon code actuel qui pour le moment m'affiche que des fleches vers le bas

    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
    $sql = "SELECT * FROM joueur ORDER BY nbpts DESC";
    $result = mysql_query($sql) or die ("Erreur SQL ! : ".mysql_error()."<br />Requête utilisée : ".$sql);
    echo "<table border='1' class='classement' rules='rows'><tr><th>Position</th><th>Pseudo</th><th>Points</th><th>Progression</th>";
    $pos=0;
    while($data = mysql_fetch_array($result))
    {
    	$pos++;
    	$rq = "SELECT pos, avant FROM joueur WHERE pseudo='".$data['pseudo']."'";
    	$rs = mysql_query($rq) or die ("Erreur SQL ! : ".mysql_error()."<br />Requête utilisée : ".$rq);
    	$po = mysql_fetch_array($rs);
    	$avant = $po['avant']; $actuel = $po['pos'];
    	if ($avant != 0){
    		if($actuel < $avant) {$prog='+';} elseif($actuel > $avant) {$prog='-';} else $prog='=';
    	}
    	echo "<tr><td>".$pos."</td><td>".$data['pseudo']."</td><td align='center'>".$data['nbpts']."</td><td>"; 
    	if ($prog='-') {echo "<img src='arrow_Down_Red.gif' alt='+'>";} 
    	elseif($prog='+') {echo "<img src='arrow_green_up.gif' alt='+'>";}
    	else echo $prog;
    	echo "</td></tr>";
    	$actuel = $pos;
    	$req = "UPDATE joueur SET pos ='".$actuel."', avant ='".$pos."' WHERE pseudo='".$data['pseudo']."'";
    	$res = mysql_query($req) or die ("Erreur SQL ! : ".mysql_error()."<br />Requête utilisée : ".$req);
    }
    echo "</table>";

  2. #2
    Membre régulier
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2006
    Messages : 264
    Points : 105
    Points
    105
    Par défaut
    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
    $sql = "SELECT * FROM joueur ORDER BY nbpts DESC";
    $result = mysql_query($sql) or die ("Erreur SQL ! : ".mysql_error()."<br />Requête utilisée : ".$sql);
    echo "<table border='1' class='classement' rules='rows'><tr><th>Position</th><th>Pseudo</th><th>Points</th><th>Progression</th>";
    $pos=0;
    while($data = mysql_fetch_array($result))
    {
    	$pos++;
    	$req = "UPDATE joueur SET avant=pos WHERE pseudo='".$data['pseudo']."'";
    	$res = mysql_query($req) or die ("Erreur SQL ! : ".mysql_error()."<br />Requête utilisée : ".$req);
    		$actuel = $pos;
    		$req = "UPDATE joueur SET pos=".$actuel." WHERE pseudo='".$data['pseudo']."'";
    		$res = mysql_query($req) or die ("Erreur SQL ! : ".mysql_error()."<br />Requête utilisée : ".$req);
     
    	$rq = "SELECT pos, avant FROM joueur WHERE pseudo='".$data['pseudo']."'";
    	$rs = mysql_query($rq) or die ("Erreur SQL ! : ".mysql_error()."<br />Requête utilisée : ".$rq);
    	$po = mysql_fetch_array($rs);
     
    	$avant = $po['avant']; $actuel = $po['pos'];
    	if ($avant != 0){
    		if($actuel < $avant) {$prog='+';} elseif($actuel > $avant) {$prog='-';} else $prog='=';
    	}
    	echo "<tr><td>".$pos."</td><td>".$data['pseudo']."</td><td align='center'>".$data['nbpts']."</td><td>"; 
    	if ($prog='-') {echo "<img src='arrow_Down_Red.gif' alt='+'>";} 
    	elseif($prog='+') {echo "<img src='arrow_green_up.gif' alt='+'>";}
    	else echo $prog;
    	echo "</td></tr>";
    }
    echo "</table>";
    nouvelle version mais toujours la fleche rouge vers le bas
    personne a une idée ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Points : 17
    Points
    17
    Par défaut Peut-être un élément de réponse
    Bonjour Temperature

    J'ai un peu planché sur ton problème et je te propose 2 solutions :

    La première est une petite correction de ton code
    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
     
    		$sql = "SELECT * FROM joueur ORDER BY nbpts DESC";
    		$result = mysql_query($sql) or die ("Erreur SQL ! : ".mysql_error()."<br />Requête utilisée : ".$sql);
     
    		echo "<table border='1' class='classement' rules='rows'><tr><th>Position</th><th>Pseudo</th><th>Points</th><th>Progression</th>";
    		$pos=0;
     
    		while($data = mysql_fetch_array($result))
    		{
    			$pos++;
    			$rq = "SELECT pos, avant FROM joueur WHERE pseudo='".$data['pseudo']."'";
    			$rs = mysql_query($rq) or die ("Erreur SQL ! : ".mysql_error()."<br />Requête utilisée : ".$rq);
    			$po = mysql_fetch_array($rs);
    			$avant = $po['avant'];
    			$actuel = $po['pos'];
     
    			if ($avant != 0)
    			{
     
    				// On détermine la progression du joueur, position actuelle par rapport à la position antécédente
     
    				if($actuel > $avant) // inversion du signe < -> >
    				{
    					// Progression
    					$prog='+';
    				}
     
    				elseif($actuel < $avant)// inversion du signe > -> <
    				{
    					// Regression
    					$prog='-';
    				}
     
    				else
    				{
    					//Identique
    					$prog='=';
    				}
    			}
     
     
    			echo "<tr><td>".$pos."</td><td>".$data['pseudo']."</td><td align='center'>".$data['nbpts']."</td><td>"; 
     
    			if ($prog == '+') // Inversion de signe - -> +
    			{
    				echo "<img src='arrow_green_up.gif' alt='+'>";
    			} 
     
    			elseif($prog == '-') // Inversion de signe + -> -
    			{
    				echo "<img src='arrow_Down_Red.gif' alt='-'>";
    			}
     
    			else
    			{
    				echo $prog;
    			}
     
    			echo "</td></tr>";
    			$actuel = $pos;
    			$req = "UPDATE joueur SET pos ='".$actuel."', avant ='".$pos."' WHERE pseudo='".$data['pseudo']."'";
    			$res = mysql_query($req) or die ("Erreur SQL ! : ".mysql_error()."<br />Requête utilisée : ".$req);
    		}
    		echo "</table>";
    La seconde est une petite condensation du code

    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
     
    $sql = "SELECT * FROM joueur ORDER BY nbpts DESC";
    		$result = mysql_query($sql) or die ("Erreur SQL ! : ".mysql_error()."<br />Requête utilisée : ".$sql);
     
    		echo "<table border='1' class='classement' rules='rows'><tr><th>Position</th><th>Pseudo</th><th>Points</th><th>Progression</th>";
    		$pos=0;
     
    		while($data = mysql_fetch_array($result))
    		{
    			$pos++;
    			$rq = "SELECT pos, avant FROM joueur WHERE pseudo='".$data['pseudo']."'";
    			$rs = mysql_query($rq) or die ("Erreur SQL ! : ".mysql_error()."<br />Requête utilisée : ".$rq);
    			$po = mysql_fetch_array($rs);
    			$avant = $po['avant'];
    			$actuel = $po['pos'];
     
    			if ($avant != 0)
    			{
     
    				// On détermine la progression du joueur, position actuelle par rapport à la position antécédente
    				echo "<tr><td>".$pos."</td><td>".$data['pseudo']."</td><td align='center'>".$data['nbpts']."</td><td>"; 
     
     
    				if($actuel > $avant) // Progression
    				{
    					echo "<img src='arrow_green_up.gif' alt='+'>";
    				}
     
    				elseif($actuel < $avant)// Regression
    				{
    					echo "<img src='arrow_Down_Red.gif' alt='-'>";
    				}
     
    				else
    				{
    					//Identique
    					echo "=";
    				}
    			}
    			echo "</td></tr>";
    			$actuel = $pos;
    			$req = "UPDATE joueur SET pos ='".$actuel."', avant ='".$pos."' WHERE pseudo='".$data['pseudo']."'";
    			$res = mysql_query($req) or die ("Erreur SQL ! : ".mysql_error()."<br />Requête utilisée : ".$req);
    		}
    		echo "</table>";
    Après avoir simulé ta table et l'avoir testé, celà fonctionne.
    Si tu as un problème autre, n'hésite pas.

    Bon courage et bon WE

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/10/2006, 15h29
  2. [VB.NET].saisie progressive dans zone liste déroulante
    Par LE VIEUX dans le forum Windows Forms
    Réponses: 10
    Dernier message: 27/09/2006, 13h21
  3. Réponses: 8
    Dernier message: 29/06/2006, 14h22
  4. Afficher un indice de progression dans une console
    Par petdelascar dans le forum C
    Réponses: 2
    Dernier message: 17/05/2006, 14h43
  5. Progression dans TShFileOpStruct (Complément de FAQ)
    Par yoghisan dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 14/03/2005, 21h16

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