les 5 premiers plus les 5 suivants ....

les 5 premiers plus les 5 suivants .... - PHP - Programmation

Marsh Posté le 07-06-2005 à 11:42:45    

Bonjour
 
 Voilà mon problème, dans une table sont stockés les noms des joueurs + le nombre qui lui est associé
ex :
matt 100
chris 456
bo 45
ect...
 
 j'ai fais un script de recherche de place dans le classement par nombre du plus grand au plus petit....
il affiche correctement MAIS j'ai essayé d'afficher les 5 joeurs qui sont devant lui et les cinq sui sont derrière afin qu'il puisse vois l'ecart de point... tout cela marche mais si le joueur est numero 1 il n'y a pas 5 entrées devant lui mais 0... et si le joueur est second il n'y a qu'une entrée... s'il est troisième deux s'il est 4eme seulement quatre ... même chose s'il est dernier .. 0 entrée apèrs lui, s'il est avant dernier 1 seule ect....
je ne sais pas du tout comment procéder merci de votre aide ....

Reply

Marsh Posté le 07-06-2005 à 11:42:45   

Reply

Marsh Posté le 07-06-2005 à 11:45:15    

Lol bah tu regarde, si il est dans les 5 premiers, alors tu affiches les n premiers devant lui avec N = sa position -1, et si il est dans les 5 derniers tu affiches les N derniers avec N = sa position +1. Non?

Reply

Marsh Posté le 07-06-2005 à 16:26:49    

voila mon code .... qui ne marche pas :(

Code :
  1. <?
  2. if($verif == 'oui')
  3. {
  4. //connexion
  5. mysql_connect("", "", "" );
  6. mysql_select_db("" );
  7. $query = "SELECT * FROM xouuox_users ORDER BY nombre DESC"; 
  8. $result = @mysql_query($query);
  9. $puce=0;
  10. while ($val = mysql_fetch_array($result))
  11. {
  12. $puce++;
  13. $kaing .= " $val[nom] $puce $val[nombre]---";
  14. }
  15. $prime = $pseudo;;
  16. $seconde = '---';
  17. $max = ereg("".$prime."(.*)".$seconde."",$kaing,$ok);
  18. $r=explode(" ", $ok[0]);
  19. if(($r[1] == '') || ($pseudo == ''))
  20. echo "Le pseudo ".$pseudo." n'existe pas...";
  21. else
  22. {
  23. echo "Verification pour ".$pseudo."<br />";
  24. echo "Vous êtes actuellement pour en position numero ".$r[1]."";
  25. $milieu = $r[1];
  26. if($milieu == '1')
  27. {
  28. $haut = '0';
  29. $bas = '5';
  30. }
  31. elseif($milieu == '2')
  32. {
  33. $haut = '0';
  34. $bas = '6';
  35. }
  36. elseif($milieu == '3')
  37. {
  38. $haut = '0';
  39. $bas = '7';
  40. }
  41. elseif($milieu == '4')
  42. {
  43. $haut = '0';
  44. $bas = '8';
  45. }
  46. elseif($milieu == '5')
  47. {
  48. $haut = '0';
  49. $bas = '9';
  50. }
  51. else
  52. {
  53. $haut = $milieu-5;
  54. $bas = $milieu+5;
  55. }
  56. $query = "SELECT * FROM xouuox_users ORDER BY nombre DESC LIMIT 0,$haut, $bas"; 
  57. $result = @mysql_query($query);
  58. echo"<hr>";
  59. echo $haut;
  60. echo"<hr>";
  61. echo $milieu;
  62. echo"<hr>";
  63. echo $bas;
  64. echo"<hr>";
  65. $query = "SELECT * FROM xouuox_users ORDER BY nombre DESC LIMIT $haut, $bas"; 
  66. $result = @mysql_query($query);
  67. $puce=0;
  68. while ($val = mysql_fetch_array($result))
  69. {
  70. $puce++;
  71. if ($puce == $milieu)
  72. echo "<b>".$puce." - ".$val['nom']." - [".$val['nombre']."] -<br /></b>";
  73. else
  74. echo "".$puce." - ".$val['nom']." - [".$val['nombre']."] -<br />";
  75. }
  76. }
  77. }
  78. else
  79. {
  80. echo'
  81. <form method=post>
  82. <input type=text name=pseudo>
  83. <input type="submit" name="submit" value="Chercher">
  84. <input type="hidden" name="verif" value="oui">
  85. </form>';
  86. }
  87. ?>

Reply

Marsh Posté le 07-06-2005 à 16:27:59    

ca veut dire quoi qu'il marche pas?  
C'est quoi les erreurs?


---------------
!== Force et honneur ==!
Reply

Marsh Posté le 07-06-2005 à 16:55:40    

c'est peut etre une question bete, mais t'a enlevé les valeurs de ces lignes juste pour ici ou y'avait rien ?

Code :
  1. mysql_connect("", "", "" );
  2. mysql_select_db("" );


 

Reply

Marsh Posté le 07-06-2005 à 16:59:20    

Code :
  1. # if($milieu == '1')
  2. # {
  3. # $haut = '0';
  4. # $bas = '5';
  5. # }
  6. # elseif($milieu == '2')
  7. # {
  8. # $haut = '0';
  9. # $bas = '6';
  10. # }
  11. # elseif($milieu == '3')
  12. # {
  13. # $haut = '0';
  14. # $bas = '7';
  15. # }
  16. # elseif($milieu == '4')
  17. # {
  18. # $haut = '0';
  19. # $bas = '8';
  20. # }
  21. # elseif($milieu == '5')
  22. # {
  23. # $haut = '0';
  24. # $bas = '9';
  25. # }
  26. # else
  27. # {
  28. # $haut = $milieu-5;
  29. # $bas = $milieu+5;
  30. # }


 
devient ca :
 

Code :
  1. if($milieu <= 5 )
  2. {
  3.   $haut = 0;
  4.   $bas = $milieu + 4;
  5. }
  6. else
  7. {
  8.   $haut = $milieu-5;
  9.   $bas = $milieu+5;
  10. }

Reply

Marsh Posté le 07-06-2005 à 17:05:37    

c'est quoi la requete lignes 75-76 ?
a quoi ca sert ?


Message édité par ritzle le 07-06-2005 à 17:06:56
Reply

Marsh Posté le 07-06-2005 à 17:25:29    

ritzle a écrit :


 
devient ca :
 

Code :
  1. if($milieu>0 && $milieu <= 5)
  2. {
  3.   $haut = 0;
  4.   $bas = $milieu + 4;
  5. }
  6. else
  7. {
  8.   $haut = $milieu-5;
  9.   $bas = $milieu+5;
  10. }



 
Plus exactement ;)


Message édité par ronaldozebest le 07-06-2005 à 17:26:13
Reply

Marsh Posté le 07-06-2005 à 17:35:44    

ronaldozebest a écrit :

Plus exactement ;)


 
non :
$milieu >= 0
dans tous les cas

Reply

Marsh Posté le 07-06-2005 à 17:48:11    


ritzle a écrit :

non :
$milieu >= 0
dans tous les cas


 
Bah oui, mais dans le cas où c'est égal à 0, le traitement est différent dans son cas et le tiens ;)


Message édité par ronaldozebest le 07-06-2005 à 17:48:40
Reply

Marsh Posté le 07-06-2005 à 17:48:11   

Reply

Marsh Posté le 07-06-2005 à 18:00:20    

voila
executez ceci sous phpmyadmin

Code :
  1. CREATE TABLE xouuox_users (
  2.   id int(11) NOT NULL auto_increment,
  3.   nom varchar(60) NOT NULL default '',
  4.   nombre int(11) NOT NULL default '0',
  5.   PRIMARY KEY  (id)
  6. ) TYPE=MyISAM;
  7. #
  8. # Contenu de la table `xouuox_users`
  9. #
  10. INSERT INTO xouuox_users VALUES (1, 'trois', 300);
  11. INSERT INTO xouuox_users VALUES (2, 'quatre', 400);
  12. INSERT INTO xouuox_users VALUES (3, 'cinq', 500);
  13. INSERT INTO xouuox_users VALUES (4, 'six', 601);
  14. INSERT INTO xouuox_users VALUES (5, 'sept', 700);
  15. INSERT INTO xouuox_users VALUES (6, 'zero', 0);
  16. INSERT INTO xouuox_users VALUES (7, 'un', 100);
  17. INSERT INTO xouuox_users VALUES (8, 'deux', 200);
  18. INSERT INTO xouuox_users VALUES (9, 'huit', 800);
  19. INSERT INTO xouuox_users VALUES (10, 'neuf', 900);
  20. INSERT INTO xouuox_users VALUES (11, 'dix', 1000);
  21. INSERT INTO xouuox_users VALUES (12, 'onze', 11000);
  22. INSERT INTO xouuox_users VALUES (13, '12', 12000);
  23. INSERT INTO xouuox_users VALUES (14, '13', 13000);
  24. INSERT INTO xouuox_users VALUES (15, '14', 140000);


 
ps : ne faites pas attention aux id...
maintenant recherchez un pseudo par exemple huit et vous verrez ....
merci de votre aide


Message édité par Profil supprimé le 07-06-2005 à 18:01:26
Reply

Marsh Posté le 07-06-2005 à 18:00:21    

non, non, non.
la valeur 0 est impossible. tu peux pas etre classé 0e.
donc $milieu>0  :pt1cable:

Reply

Marsh Posté le 07-06-2005 à 18:01:19    

qu'est ce qui ne va pas ?

Reply

Marsh Posté le 07-06-2005 à 18:02:48    

ben quand on recherche un pseudo classé 1er 2eme 3eme ettout çà va mais quand tu cherches un pseudo classé 8èeme çà marche pas ...(le classement est fait en fonction des nombres dans l'ordre décroissant)

Reply

Marsh Posté le 07-06-2005 à 22:33:05    

up...

Reply

Marsh Posté le 07-06-2005 à 23:46:06    

Salut homonyme :pt1cable:  

Code :
  1. <?
  2. if(!$_POST['pseudo']) echo '<form method="post"><p><input type="text" name="pseudo" /><input type="submit" name="submit" value="Chercher" /></p></form>';
  3. elseif($_POST['pseudo'])
  4. {
  5. # connexion à MySQL
  6. mysql_connect("", "", "" );
  7. mysql_select_db("" );
  8. $_POST['pseudo']=htmlentities($_POST['pseudo']);
  9. echo '<h1>V&eacute;rification pour '.$_POST['pseudo'].'</h1>';
  10. $q=mysql_query("select * from xouuox_users order by nombre desc" );
  11. $i=0;
  12. while($d=mysql_fetch_array($q))
  13. {
  14. $i++;
  15. $rank[$d['nom']]=$i."o".$d['nombre']; # on affecte à chaque personne son rang et son nombre de points dans un tableau
  16. }
  17. if(!$rank[$_POST['pseudo']]) echo "Ce pseudo n'existe pas.";
  18. elseif($rank[$_POST['pseudo']])
  19. {
  20. list($position, $nombre)=explode("o", $rank[''.$_POST['pseudo'].'']);
  21. if($position==1) $position="1er";
  22. else $position.="ème";
  23. echo "<h2>position de <b>$_POST[pseudo]</b> : ".$position." avec ".$nombre." points</h2>"; # on affiche la position et le nombre de points de la personne recherchée
  24. # on enregistre ceux qui sont juste avant lui (qui ont donc plus de point)
  25. $d=mysql_query("select * from xouuox_users where nombre>$nombre order by nombre asc limit 5" );
  26. while($u=mysql_fetch_array($d))
  27. {
  28. list($position2, $nombre2)=explode("o", $rank[''.$u['nom'].'']);
  29. if($position2==1) $position2="1er";
  30. else $position2.="ème";
  31. $before.= "<b>".$position2.".</b> $u[nom] : <em>$nombre2</em> points<br />";
  32. $countbefore++;
  33. }
  34. # ensuite ceux qui sont juste après lui (score plus faible)
  35. $d=mysql_query("select * from xouuox_users where nombre<$nombre limit 5" );
  36. while($u=mysql_fetch_array($d))
  37. {
  38. list($position, $nombre)=explode("o", $rank[''.$u['nom'].'']);
  39. if($position==1) $position="1er";
  40. else $position.="ème";
  41. $after.= "<b>".$position.".</b> $u[nom] : <em>$nombre</em> points<br />";
  42. $countafter++;
  43. }
  44. # si on a trouvé des personnes avant ou apres lui on les affiche
  45. if($before) echo "<br /><br />Les $countbefore avant lui :<br />$before";
  46. if($after) echo "<br /><br />Les $countafter apr&egrave;s lui :<br />$after";
  47. if(!$before) echo "<br />il n'y a personne avant lui.";
  48. if(!$after) echo "<br />il n'y a personne apr&egrave;s lui.";
  49. }
  50. # on affiche le formulaire pour une deuxième recherche
  51. echo '<form method="post"><p><input type="text" name="pseudo" /><input type="submit" name="submit" value="Chercher" /></p></form>';
  52. }
  53. ?>


 
ça devrait marcher  ;)  
 
 
 :hello:

Reply

Marsh Posté le 08-06-2005 à 00:38:45    

merci topain :p

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed