Afficher une liste de sites triés par ordre croissant en fonction de leurs nombr

Signaler
Messages postés
66
Date d'inscription
jeudi 12 août 2004
Statut
Membre
Dernière intervention
28 août 2005
-
Messages postés
66
Date d'inscription
jeudi 12 août 2004
Statut
Membre
Dernière intervention
28 août 2005
-
Bonjour,

j'ai besoin d'aide SVP pour quelque chose que je ne vois pas du tout comment faire.

Je précise tout de suite que je ne souhaite pas utiliser de BDD.



Voici donc ma question :

Comment afficher une liste de sites triés par ordre croissant en fonction de leurs nombres de points ?

Autrement dit : Comment faire pour que les sites ayant le plus de points se trouvent en haut de la liste...



Voici un peu comment je vois la chose :

J'ai 2 variables pour chaque site

Exemple nom du site : Site1

$site1_name -> Nom et description de ce site (il y aura donc du html dans la variable)

$site1_nbrepts -> Nombre de points de ce site (valeur numérique donc, positive ou négative)



Il faudrait donc comparer toutes la variables $siteX_nbrepts et les classés par odre croissant.

Ensuite, je ne sait trop comment (un array ?) il faudrait créer une correspondance

entre $siteX_nbrepts et $siteX_name afin de répercuter ce classement aux noms des sites.



Il reste ensuite à afficher la liste des sites classés...avec une séparation (<hr>) entre chaques....



Je pense que j'ai à peu près tout dis (en espréant ne pas trop m'être
embrouillé...), mais si vous voulez des précisions, n'hésitez pas !!!



@+

www.graph-site.net

7 réponses

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,



tu crées par exemple un fichier (puisque tu ne veux pas de BDD) ayant la structure suivante :



points | url

--------------

10 | http://test.com

0 | http://autre_url.com



Tu ouvres ce fichier comme ceci :



$fichier=file('fichier.txt'); //exemple



array_multisort($fichier, SORT_DESC);



$i=0;

$nb=count($fichier);

while($i<$nb)

{

$tableau=explode(' | ',$fichier);



echo 'Nombre de points : ',$tableau[0],'.
Url : [',$tableau[1],' ',$tableau[1],']

';



$i++;

}


a ++


<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Heu zut, le truc que je t'ai montré classe les sites ayant des points élevés en haut, pour inverser ça tu mets SORT_ASC au lieu de
SORT_DESC



a ++


<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
66
Date d'inscription
jeudi 12 août 2004
Statut
Membre
Dernière intervention
28 août 2005

le truc que je t'ai montré classe les sites ayant des points élevés en haut

Et bien c'est ce qu'il me faut !

Merci ;-)



J'ai donc essayé, mais ça ne marche pas...ou alors j'ai fait une bourde :

dans partenaires.php, j'ai ceci :

<?

$fichier=file('scores.txt'); //exemple

array_multisort($fichier, SORT_DESC);



$i=0;

$nb=count($fichier);

while($i<$nb)

{

$tableau=explode(' | ',$fichier);



echo
'Nombre de points : ',$tableau[0],'. Url : [',$tableau[1],' ',$tableau[1],']

';



$i++;

}

?>



et dans scores.txt :


0 | http://deuz.com

10 | http://preums.com





voic le résultat :


Nombre de points : Array. Url :


Nombre de points : Array. Url :





Je ne connais pas trop les array, mais apparemment, il le lit (puisque
si je rajoute un ligne dans scores.txt, on le voit dans le
résultat....) mais il n'arrive pas à sortir de valeurs...



Sinon je n'avais pas dis quelque chose, et du coup je ne sais pas si ça va être possible de le faire suivant cette méthode :

Le nombre de point est obtenu à partir dde 2 fichiers (1 contiennent le
nombre de IN et l'autrte le nombre de OUT) On obtien le nombre de point
en faisant IN - OUT...mais je ne sais pas comment faire cela

echo bcsub(include("scores/in/1.inc"), include("scores/out/1.inc")); ??? -> ça ne marche pas

surtout que je ne sais pas si le calcul pourra se mettre dans score.txt (qui faudrait renommer en .php je suppose)



Bref, ça fait 2 trucs que je ne sais pas faire...

Merci beaucoup pour ton aide !

@ +



PS : comme la dernière fois, je vais essayer de donner un coup de main sur ton forum !
www.graph-site.net
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Arf petite bourde : remplaces $tableau=explode(' | ',$fichier); par ça : $tableau=explode(' | ',$fichier[$i]);


a ++
<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
66
Date d'inscription
jeudi 12 août 2004
Statut
Membre
Dernière intervention
28 août 2005

ça marche merci !

et pour mon histoire de


echo bcsub(include("scores/in/1.inc"), include("scores/out/1.inc"));



Tu vois comment faire STP ???

Il faut qu'en faite le nombre de point soit le résultat de la soustraction d'un fichier et d'un autre...




Merci encore



@ +
www.graph-site.net
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Quelle est la structure de ton fichier IN et OUT ?



ne serait t-il pas plus judicieux de modifier directement le nombre de
points quand un site a des "IN" et des "OUT" ? ça ne te ferait plus
qu'un seul fichier...

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
66
Date d'inscription
jeudi 12 août 2004
Statut
Membre
Dernière intervention
28 août 2005

Quelle est la structure de ton fichier IN et OUT ?

Selon ma méthode, il y a juste une valeur dans le fichier.

Donc 2 fichiers pour chaques sites 1 avec le nombre IN et l'autre avec le Nombre OUT....





ne serait t-il pas plus judicieux de modifier directement le nombre de
points quand un site a des "IN" et des "OUT" ? ça ne te ferait plus
qu'un seul fichier...


Je ne sais pas comment faire... Sachant que le compteur
de clics utilise un fichier pour l'inscrémention, je ne vois pas du
tout comment faire...



Sinon, en fait je suis désolé mais ce que tu m'as donné ne marche pas
pour les nombres négatifs...Il faudrai rajouter un condition pour
qu'avec les nombres commençant par - ce soit ASC qui soit utilisé et
non DESC...



Merci beaucoup
www.graph-site.net