[PHP] Selectionner tous nombres egaux

Résolu/Fermé
matdu57 Messages postés 60 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 3 mai 2012 - 9 juin 2008 à 20:09
vlmath Messages postés 793 Date d'inscription vendredi 20 octobre 2006 Statut Contributeur Dernière intervention 4 septembre 2011 - 11 juin 2008 à 12:14
Bonjour, j'aimerais savoir comme faire pour sélectionner tous les nombres qui sont égaux

car j'ai un jeu en ligne (style ogame) qui met à jour les stats qui récupère le classement grâce à:

	$Rank           = 1;
	$RankQry        = doquery("SELECT * FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `tech_points` DESC;", 'statpoints');
	while ($TheRank = mysql_fetch_assoc($RankQry) ) {
		$QryUpdateStats  = "UPDATE {{table}} SET ";
		$QryUpdateStats .= "`tech_rank` = '". $Rank ."' ";
		$QryUpdateStats .= "WHERE ";
		$QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '". $TheRank['id_owner'] ."';";
		doquery ( $QryUpdateStats , 'statpoints');
		$Rank++;
	}

	$Rank           = 1;
	$RankQry        = doquery("SELECT * FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `build_points` DESC;", 'statpoints');
	while ($TheRank = mysql_fetch_assoc($RankQry) ) {
		$QryUpdateStats  = "UPDATE {{table}} SET ";
		$QryUpdateStats .= "`build_rank` = '". $Rank ."' ";
		$QryUpdateStats .= "WHERE ";
		$QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '". $TheRank['id_owner'] ."';";
		doquery ( $QryUpdateStats , 'statpoints');
		$Rank++;
	}

	$Rank           = 1;
	$RankQry        = doquery("SELECT * FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `defs_points` DESC;", 'statpoints');
	while ($TheRank = mysql_fetch_assoc($RankQry) ) {
		$QryUpdateStats  = "UPDATE {{table}} SET ";
		$QryUpdateStats .= "`defs_rank` = '". $Rank ."' ";
		$QryUpdateStats .= "WHERE ";
		$QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '". $TheRank['id_owner'] ."';";
		doquery ( $QryUpdateStats , 'statpoints');
		$Rank++;
	}

	$Rank           = 1;
	$RankQry        = doquery("SELECT * FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `fleet_points` DESC;", 'statpoints');
	while ($TheRank = mysql_fetch_assoc($RankQry) ) {
		$QryUpdateStats  = "UPDATE {{table}} SET ";
		$QryUpdateStats .= "`fleet_rank` = '". $Rank ."' ";
		$QryUpdateStats .= "WHERE ";
		$QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '". $TheRank['id_owner'] ."';";
		doquery ( $QryUpdateStats , 'statpoints');
		$Rank++;
	}

	$Rank           = 1;
	$RankQry        = doquery("SELECT * FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `total_points` DESC;", 'statpoints');
	while ($TheRank = mysql_fetch_assoc($RankQry) ) {
		$QryUpdateStats  = "UPDATE {{table}} SET ";
		$QryUpdateStats .= "`total_rank` = '". $Rank ."' ";
		$QryUpdateStats .= "WHERE ";
		$QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '". $TheRank['id_owner'] ."';";
		doquery ( $QryUpdateStats , 'statpoints');
		$Rank++;
	}


j'aimerai savoir comme sélectionner tous les classement avec le même nombre de points pour pouvoir mettre un classement indentique genre un "-" au lieu d'un chiffre merci si vous avez besoin de plus de renseignement je suis la merci

10 réponses

vlmath Messages postés 793 Date d'inscription vendredi 20 octobre 2006 Statut Contributeur Dernière intervention 4 septembre 2011 160
10 juin 2008 à 10:50
Salut,

Comme ta requête est ordrée, tu peux utiliser une variable de contrôle sur ta boucle, qui contiendra la valeur précédente :
while( ....)
{
  if( $tech_points_old == $TheRank['tech_points'] )
  {
    // Impression du '-'
  }
  $tech_points_old = $TheRank['tech_points'];
}


@Bientôt
0
matdu57 Messages postés 60 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 3 mai 2012
10 juin 2008 à 15:19
j'ai déjà un truc si tech_points_old == tech_points moi c'est les points du joueur d'avant que je voudrais comparais

ps: je sais pas si c'est possible par contre

EDIT: un truc du genre :

	$Rank           = 1;
	$RankQry        = doquery("SELECT * FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `tech_points` DESC;", 'statpoints');
	$techpoint                     = $TheRank['tech_points'];
	while ($TheRank = mysql_fetch_assoc($RankQry) ) {
	  if( $techpoint == $TheRank['tech_points'] )
  {
    $QryUpdateStats  = "UPDATE {{table}} SET ";
		$QryUpdateStats .= "`tech_rank` = '-' ";
		$QryUpdateStats .= "WHERE ";
		$QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '". $TheRank['id_owner'] ."';";
		doquery ( $QryUpdateStats , 'statpoints');
	  $Rank++;
  }else{
		$QryUpdateStats  = "UPDATE {{table}} SET ";
		$QryUpdateStats .= "`tech_rank` = '". $Rank ."' ";
		$QryUpdateStats .= "WHERE ";
		$QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '". $TheRank['id_owner'] ."';";
		doquery ( $QryUpdateStats , 'statpoints');
		$Rank++;
	}
}


pour les techs .

EDIT: marche pas :( une idée please ?
0
matdu57 Messages postés 60 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 3 mai 2012
10 juin 2008 à 16:36
j'ai fais un autre truc ça marche mais le problème c'est que si y'en a un qui a les même points il met pour tous le monde le classement égal a "-"
	$Rank           = 1;
	$Rankdo           = doquery("SELECT * FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `total_points` DESC;", 'statpoints');
	$RankQry        = doquery("SELECT * FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' AND `total_points` = '". $Rank['total_points'] ."' ORDER BY `total_points` DESC;", 'statpoints');

	$totalpoint                     = $TheRank['total_points'];
	while ($TheRank = mysql_fetch_assoc($Rankdo) ) {
	while ($pointrank = mysql_fetch_assoc($RankQry) ) {
	  if( $pointrank == true )
  {
    $QryUpdateStats  = "UPDATE {{table}} SET ";
		$QryUpdateStats .= "`total_rank` = '-' ";
		$QryUpdateStats .= "WHERE ";
		$QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '". $pointrank['id_owner'] ."';";
		doquery ( $QryUpdateStats , 'statpoints');

	  $Rank++;
echo "rank++==>";print_r ($QryUpdateStats);
  }else{
		$QryUpdateStats  = "UPDATE {{table}} SET ";
		$QryUpdateStats .= "`total_rank` = '". $Rank ."' ";
		$QryUpdateStats .= "WHERE ";
		$QryUpdateStats .= " `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '". $TheRank['id_owner'] ."';";
		doquery ( $QryUpdateStats , 'statpoints');
		$Rank++;
echo 'Version else';
	}
}
}


je sais je l'ai mal coder (noms des variables :p ) mais c'étais pour un test comment faire pour qu'il mette le bon classement pour les autres personnes merci .

ps: j'ai 15 ans je code pas comme un pro désoler si j'ai du mal à comprendre, je trouve je me débrouille pas mal encore :p avec une experience B2i XD
0
vlmath Messages postés 793 Date d'inscription vendredi 20 octobre 2006 Statut Contributeur Dernière intervention 4 septembre 2011 160
10 juin 2008 à 17:38
Autant le premier code était claire, autant celui-là l'est beaucoup moins ....

Si j'ai bien compris, tu veux mettre le rank à une personne, et un '-' à toutes les autres personnes qui ont le même nombre de points ? ....

PS : c'est très bien de commencer à programmer jeune ... (j'ai commencer aussi "très" jeune, et j'ai 19 ans aujourd'hui ...)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
matdu57 Messages postés 60 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 3 mai 2012
10 juin 2008 à 20:02
XD je l'ai preciser mais c'est pour les tests oui t'as tous compris le 2 eme code marchent mais il le fais pour tous le monde si quelqu'un a le même nombre de point que quelqu'un d'autre il met des '-' a tous le monde. Aurais-tu une idée
merci de t'as réponse

ps:oui sa dois faire 6 mois que je code y'a ma team de jeune codeur avec qui on s'entraide pour notre jeu style ogame, un codeur pro qui m'as expliquer toutes les bases et tous que je remercie beaucoup en même temps c'est son job donc pour lui c'est simple et surtout Le site du zero qui m'a beaucoup aider c'est grâce à ça que je suis codeur comme ça et à mes heure passer au codage ( 4-5 h par jour min ^^ je suis presque un no-live XD)
0
vlmath Messages postés 793 Date d'inscription vendredi 20 octobre 2006 Statut Contributeur Dernière intervention 4 septembre 2011 160
11 juin 2008 à 11:20
Essaye ça :
$Rank = 1;
$RankQry = doquery("SELECT * FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `tech_points` DESC;", 'statpoints');

$techpoints_old = "";

while ($TheRank = mysql_fetch_assoc($RankQry) )
{
	$QryUpdateStats = "UPDATE {{table}} SET ";
	
	if( $TheRank['tech_points'] == $techpoints_old )
	{
		$QryUpdateStats .= "`tech_rank` = '-' ";	
	}else{
		$QryUpdateStats .= "`tech_rank` = '$Rank' ";
	}
	
	$QryUpdateStats .= "WHERE `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '". $TheRank['id_owner'] ."';";
	doquery ( $QryUpdateStats , 'statpoints');
	
	$Rank++;
}
0
matdu57 Messages postés 60 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 3 mai 2012
11 juin 2008 à 11:37
Non désoler sa marche pas si vous trouver pas c'est pas grave je met l'idée de coter et j'attend que mon amis pro codeur se co :p XD
0
vlmath Messages postés 793 Date d'inscription vendredi 20 octobre 2006 Statut Contributeur Dernière intervention 4 septembre 2011 160
11 juin 2008 à 12:03
Ce que je suis bête ... j'ai oublié une ligne ... :D
$Rank = 1;
$RankQry = doquery("SELECT * FROM {{table}} WHERE `stat_type` = '1' AND `stat_code` = '1' ORDER BY `tech_points` DESC;", 'statpoints');

$techpoints_old = "";

while ($TheRank = mysql_fetch_assoc($RankQry) )
{
	$QryUpdateStats = "UPDATE {{table}} SET ";
	
	if( $TheRank['tech_points'] == $techpoints_old )
	{
		$QryUpdateStats .= "`tech_rank` = '-' ";	
	}else{
		$QryUpdateStats .= "`tech_rank` = '$Rank' ";
	}
	
	$QryUpdateStats .= "WHERE `stat_type` = '1' AND `stat_code` = '1' AND `id_owner` = '". $TheRank['id_owner'] ."';";
	doquery ( $QryUpdateStats , 'statpoints');
	
	$techpoints_old = $TheRank['tech_points'];
	$Rank++;
}
0
matdu57 Messages postés 60 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 3 mai 2012
11 juin 2008 à 12:09
Merci ça a l'air de marchais je vais apporter quelque modif car la sa bug un peu avec les stats mais merci beaucoup
bonne journée
0
vlmath Messages postés 793 Date d'inscription vendredi 20 octobre 2006 Statut Contributeur Dernière intervention 4 septembre 2011 160
11 juin 2008 à 12:14
Mais c'est tout normal, quand je peux aider je le fais.

Bonne journée à toi aussi et @bientôt
0