Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3266 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  les 5 premiers plus les 5 suivants ....

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

les 5 premiers plus les 5 suivants ....

n°1110762
Profil sup​primé
Posté le 07-06-2005 à 11:42:45  answer
 

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 ....

mood
Publicité
Posté le 07-06-2005 à 11:42:45  profilanswer
 

n°1110767
cesarr89
Posté le 07-06-2005 à 11:45:15  profilanswer
 

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?

n°1111395
Profil sup​primé
Posté le 07-06-2005 à 16:26:49  answer
 

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. ?>

n°1111399
cesarr89
Posté le 07-06-2005 à 16:27:59  profilanswer
 

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


---------------
!== Force et honneur ==!
n°1111465
ritzle
Posté le 07-06-2005 à 16:55:40  profilanswer
 

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("" );


 

n°1111472
ritzle
Posté le 07-06-2005 à 16:59:20  profilanswer
 

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. }

n°1111492
ritzle
Posté le 07-06-2005 à 17:05:37  profilanswer
 

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


Message édité par ritzle le 07-06-2005 à 17:06:56
n°1111543
ronaldozeb​est
faites-y gaffe !
Posté le 07-06-2005 à 17:25:29  profilanswer
 

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
n°1111562
ritzle
Posté le 07-06-2005 à 17:35:44  profilanswer
 

ronaldozebest a écrit :

Plus exactement ;)


 
non :
$milieu >= 0
dans tous les cas

n°1111590
ronaldozeb​est
faites-y gaffe !
Posté le 07-06-2005 à 17:48:11  profilanswer
 


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
mood
Publicité
Posté le 07-06-2005 à 17:48:11  profilanswer
 

n°1111616
Profil sup​primé
Posté le 07-06-2005 à 18:00:20  answer
 

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
n°1111617
ritzle
Posté le 07-06-2005 à 18:00:21  profilanswer
 

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

n°1111619
ritzle
Posté le 07-06-2005 à 18:01:19  profilanswer
 

qu'est ce qui ne va pas ?

n°1111624
Profil sup​primé
Posté le 07-06-2005 à 18:02:48  answer
 

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)

n°1111973
Profil sup​primé
Posté le 07-06-2005 à 22:33:05  answer
 

up...

n°1112083
Profil sup​primé
Posté le 07-06-2005 à 23:46:06  answer
 

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:

n°1112096
Profil sup​primé
Posté le 08-06-2005 à 00:38:45  answer
 

merci topain :p


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  les 5 premiers plus les 5 suivants ....

 

Sujets relatifs
Algorithme nombres premiersnombres premiers & librairie GMP (mpz_probab_prime_p)
premiers pas J2EE (Apache + Tomcat + Eclipse)Afficher les 10 premiers caract. d'une chaine
prendre les premiers caractères jusqu'à un caractère d'une string[tcl] Comment comparer les 2 premiers caracteres d'une chaine ?
Afficher les N premiers char d une str (php)[SQL Server] Requete imbriquée et retour des X premiers enregistrement
[XML] Je ne veux que les 5 premiers! 
Plus de sujets relatifs à : les 5 premiers plus les 5 suivants ....


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)