[PHP] Selectionner tous nombres egaux

Résolu
matdu57 Messages postés 60 Date d'inscription   Statut Membre Dernière intervention   -  
vlmath Messages postés 794 Date d'inscription   Statut Contributeur Dernière intervention   -
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
A voir également:

10 réponses

vlmath Messages postés 794 Date d'inscription   Statut Contributeur Dernière intervention   160
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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 794 Date d'inscription   Statut Contributeur Dernière intervention   160
 
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   Statut Membre Dernière intervention  
 
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 794 Date d'inscription   Statut Contributeur Dernière intervention   160
 
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   Statut Membre Dernière intervention  
 
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 794 Date d'inscription   Statut Contributeur Dernière intervention   160
 
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   Statut Membre Dernière intervention  
 
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 794 Date d'inscription   Statut Contributeur Dernière intervention   160
 
Mais c'est tout normal, quand je peux aider je le fais.

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