Classement par point dans MySQL


SET @rank :=0;
UPDATE `regis` 
	SET `rank` = @rank := @rank +1 
	WHERE `id` IN ( 
		SELECT `id` 
		FROM `regis`
		ORDER BY `nbclic` DESC
	);

:neutre: (Pas vraiment certain que ça fonctionne)

Edit : rajout du “;” manquant
Edité le 01/09/2007 à 13:57

non ça ne marche pas voici l’erreur :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/olympe-network/iphoneinside/monclassement.php on line 91

et voici mon script :


<?php
mysql_connect('sql.olympe-network.com', 'iphoneinside', '') OR die('Erreur de connexion');
mysql_select_db('iphoneinside') OR die('Sélection de la base impossible'); 

mysql_query("SET @rank :=0");
$reponse = mysql_query("UPDATE `regis` SET `rank` = @rank := @rank +1 WHERE pseudo='" . $_COOKIE['username'] . "' IN (SELECT `rank` FROM `regis` ORDER BY `nbclic` DESC); ");

while ($donnees = mysql_fetch_array($reponse) )
{
?>
<?php echo $donnees['rank']; ?>
<?php
}

mysql_close(); // Déconnexion de MySQL
?>

Essaie d’abord sans PHP : en ligne de commande SQL ou par phpMyAdmin

De plus, j’ai oublié un “;” après la parenthèse fermante (tout à la fin donc) :wink:

donc j’ai essayer par php my admin et il y a que ça qui marche :


SET @rank :=0; 
UPDATE  `regis` SET rank= @rank := @rank +1 IN (SELECT `rank` ORDER BY `nbclic` DESC);

Mais il me dit que MYSQL ne retourne aucun enregistrement

Question, as-tu un champ ID dans ta table regis ? (Moi j’ai mis ID parce qu’il en faut bien un quelque part et que c’est le nom commun, mais si tu as opté pour un autre nom : il faut adapter hein :))

Je n’ai pas id mais pseudo car chaque pseudo est unique il n’y a pas doublon ça ne sert a rien d’avoir un rang id.
Et biensur que j’adapte le script.:wink:

Un UPDATE ne retourne pas d’enregistrement :slight_smile:

C’est bon j’ai trouvé la réponse au pb


SET @rank := 0;  
UPDATE regis SET rank = (SELECT @rank := @rank + 1) ORDER BY nbclic DESC;

Merci quand même Raynor pour avoir chercher.:slight_smile:

Ah, je ne me souvenais pas qu’on pouvait faire un ORDER BY dans un UPDATE :wink: