begin process at 2012 05 31 11:14:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

tri décroissant, fonctions sort() / rsort() ne fonctionnent pas


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

tri décroissant, fonctions sort() / rsort() ne fonctionnent pas

mardi 16 mars 2010 à 15:25:49 | tri décroissant, fonctions sort() / rsort() ne fonctionnent pas

ju0123456789

Bonjour,

J'ai un léger souci, je voudrais afficher uniquement les 4 derniers utilisateurs inscrits sur mon site, mais je ne vosi pas trop comment faire, car que j'utilise sort() ou rsort(), ça me renvoi toujours le même tri.

Voici mon code, si quelqu'un peut m'aider :

Code PHP :
$sql = "select LOGIN,DATE_INSCRIPTION from utilisateurs ";
$res = mysql_query($sql);
while( $data = mysql_fetch_assoc($res) )
{
  $DateAjout = $data['DATE_INSCRIPTION'];
  $LogAjout = $data['LOGIN'];

  $Inscris = array($DateAjout);
  rsort($Inscris);
  foreach ($Inscris as $key => $val)
  {
    echo "Inscrit : [" . $key . "] = " . $val . "\n";
  }
}


Merci d'avance
mardi 16 mars 2010 à 15:37:57 | Re : tri décroissant, fonctions sort() / rsort() ne fonctionnent pas

Tonio_35

Bonjour,

A quel format est ta date ?

Si c'est un timestamp tu peux utiliser un ORDER BY dans ta requête SQL. Avec la date ou les ID d'ailleurs...


_________________________________
Min iPomme
mardi 16 mars 2010 à 15:39:17 | Re : tri décroissant, fonctions sort() / rsort() ne fonctionnent pas

47

Bonjour,

s'il s'agit de juste afficher les 4 derniers utilisateurs inscrits, pourquoi ne pas le demander à la base de données directement?

du type:
Code :
select LOGIN,DATE_INSCRIPTION
from utilisateurs
order by DATE_INSCRIPTION desc
limit 0,4


bonne après midi


mardi 16 mars 2010 à 15:52:16 | Re : tri décroissant, fonctions sort() / rsort() ne fonctionnent pas

Tonio_35

Au passage :

Code :
$sql = "select LOGIN,DATE_INSCRIPTION from utilisateurs ";

Normalement la norme veux qu'on mette les mot clé SQL en MAJUSCULE et le reste en minuscule.
Code :
$sql = "SELECT login, date_inscription FROM utilisateurs";


Tu n'as pas du bien comprendre le principe de ton while. Immaginons que tu ai les données suivantes :

Code :
login | date_inscription
toto  | 20100306
titi  | 20100301
tutu  | 20100101


quand tu va faire ton while, au premier passage :
$DateAjout va avoir la valeur "20100306" et $LogAjout la valeur "toto".

Ensuite tu fais $Inscris = array($DateAjout);
$Inscris auras la valeur array("20100306").
Puis tu fais
rsort($Inscris);
Donc ici tu trie un tableau d'un élèment. Il seras toujours dans l'ordre .

Pour finir tu fais ton foreach
Ca va te retourner qu'une ligne
Code :
echo "Inscrit : [" . $key . "] = " . $val . "\n";

retourneras
Inscrit : [0] = "20100306".

Puis tu repasse dans ton while une seconde fois ce qui au final t'écriras :
Inscrit : [0] = "20100301".





_________________________________
Min iPomme
mercredi 17 mars 2010 à 09:33:23 | Re : tri décroissant, fonctions sort() / rsort() ne fonctionnent pas

ju0123456789

Bonjour et merci pour vos réponses.
ma date est sous ce format la : 06/02/2010 - 03:56:27
(varchar)
je ne peux donc pas faire d'order by, il prend les 2 premiers chiffres uniquement pour le tri. je viens de me rendre compte que j'aurais du faire sous forme yyyymmdd mais j'ai fait tout mon site comme ça c'est un peu tard, donc j'aimerais trouver une solution pour éviter de perdre plusieurs jours à tout recommencer.

MErci pour la précision Tonio, j'ai un peu de mal avec les notions de tableau. J'ai compris mon erreur à ce niveau là, mais alors, comment puis-je les trier sachant que je ne peux aps faire de ORDER BY ni trier avec la fonction sort() ?

Merci
mercredi 17 mars 2010 à 12:03:07 | Re : tri décroissant, fonctions sort() / rsort() ne fonctionnent pas

Tonio_35

Réponse acceptée !
Essai un

Code :
SELECT login, date_inscription, STR_TO_DATE(date_inscription, '%d/%m/%Y - %H:%i:%s') AS insdate FROM utilisateurs ORDER BY insdate DESC LIMIT 0,4


Pour plus de détail sur STR_TO_DATE de MYSQL : ICI
Pour plus de détail sur le format de date (%i%s...) : ICI

Celas-dis, le mieux est que tu te fasse un script php ou mysql pour convertir les données de ta base... Parce-que des formats standard c'est vraiment plus facile (Si tu veux faire des calculs par exemple : Inscrit il y a X jours).

Tu peux passer un script du genre :
Code :
UPDATE "utilisateurs" SET date_inscription = STR_TO_DATE(date_inscription, '%d/%m/%Y - %H:%i:%s');

Et convertir ta colonne en type date. Ou passer par une colonne temporaire le temps de modifer ton code PHP :
Code :
ALTER TABLE "utilisateurs" ADD new_date_ins DATETIME;
UPDATE "utilisateurs" SET new_date_ins = STR_TO_DATE(date_inscription, '%d/%m/%Y - %H:%i:%s');



_________________________________
Min iPomme
mercredi 17 mars 2010 à 14:45:35 | Re : tri décroissant, fonctions sort() / rsort() ne fonctionnent pas

ju0123456789

convertir mes colonnes de ma table ? arf non car j'ai une dizaine de table où il y a un champs de ce type et où le format est le même ça voudrait dire qu'il faut que je change plein de choses dans mes includes (entre autres) qui sont programmés en fonction de ce format là. J'ai mal commencé mais j'avoue ne pas avoir envie de refaire tout cela.

C'est pourquoi il me faut une alternative, dont j'ai besoin uniquement dans ce cas là.

sinon j'ai essayé ta requete, et ça me donne ceci comme erreur, comme si les chamsp n'existaient pas :
Code :
Notice: Undefined index: DATE_INSCRIPTION in /homepages/12/d311644604/htdocs/payetonju/www/index.php  on line 204

Notice: Undefined index: LOGIN in /homepages/12/d311644604/htdocs/payetonju/www/index.php on line 205

voici ma requete :

Code PHP :
$sql = " SELECT login, date_inscription, STR_TO_DATE(DATE_INSCRIPTION, '%d/%m/%Y - %H:%i:%s') AS insdate FROM utilisateurs ORDER BY insdate DESC LIMIT 0,4";
$res = mysql_query($sql) or die('Erreur SQL ! <br />"<font color=\'red\'><b>'.$sql.'</b></font><br />'.mysql_error());
while( $data = mysql_fetch_assoc($res) )
{
  echo "- <b>".$LogAjout."</b> inscrit(e) le <b>".$DateAjout."</b><br />";
}


Merci bcp tonio
mercredi 17 mars 2010 à 15:14:47 | Re : tri décroissant, fonctions sort() / rsort() ne fonctionnent pas

Tonio_35


C'est quoi tes lignes 204 et 205 de ton fichier index.php ?
Sinon tu ne fais pas bien ton mysql_fetch_assoc...
ton while( $data = mysql_fetch_assoc($res) )
va mettre pour chaque ligne dans ta variable $data un tableau avec toutes les colonnes récupérées dans ton SELECT...
La tu te sert de la variable $LogAjout et $DateAjout alors que tu ne les à jamais créées.

il faut se servir de $data['Nom de ta colonne désirée']...

Plus de détails ICI => LAAAAA <=
_________________________________
Min iPomme
mercredi 17 mars 2010 à 15:22:55 | Re : tri décroissant, fonctions sort() / rsort() ne fonctionnent pas

ju0123456789

pardon j'ai oublié dans mon copié collé :
Code PHP :
$DateAjout = $data['DATE_INSCRIPTION'];
$LogAjout = $data['LOGIN'];
mercredi 17 mars 2010 à 15:24:02 | Re : tri décroissant, fonctions sort() / rsort() ne fonctionnent pas

ju0123456789

ce sont justement mes lignes 204 et 205

1 2

Cette discussion est classée dans : code, data, tri, sort, rsort


Répondre à ce message

Sujets en rapport avec ce message

requete qui marche a moitié [ par casper77610 ] Bonjours à tous, Voici mon soucis : Dans un tableau html je recupere les données d'une table SQL. A partir de ce tableau je recopie les lignes chois Tri d'un "readdir" pour une gallerie d'images [ par blankart ] bonjour a tous , j'ai crée un site web il y a peu, il s'agit d'une gallerie photo , je me suis donc appuyé sur jbgallery 3 pour faire cela. jai un soucis avec SELECT WHERE [ par laloire33150 ] Bonjour, j'essaie de récupérer une ligne de ma bdd pour écrire sur mon site le texte s'affiche mais pas ce que je veux récupérer, je ne sais pas si Fonction PHP [ par kyoku59 ] Bonjour. Voilà je détient un formulaire HTML ou j'envoie plusieurs fichier .doc J'ai créé un fonction avec en paramétre : $nameFile le nom de Téléchargement d'un document [ par dodo1600 ] dodomomo: S'il vous plait est qu'il ya quelqu'un qui peut m'aider ? J'ai fait ce code mais j'ais un problème au niveau de l'enregistre dans la base o Nuage de point de différentes couleurs avec Google charts (scatter) [ par monoski ] Voilà j'évolue avec un graphique établi grâce au scatter charts de google. Voici le code de base que j'utilise : [code=php] <h Fatal error: Unsupported operand types [ par ju0123456789 ] Bonjour, j'utilise une fonction qui me retourne un tableau, et dans laquelle j'ai fait une petite division qui apparemment passe très mal : [code=ph Récupérer la valeur d'un get [ par beegeezzz ] Salut tout le monde, J'essaie en fait de trier mes données de mes tableaux. Pour cela, j'ai changé le nom des champs du tableau en URL : [code]echo '< Formulaire mail ... [ par stolken ] Salut tt le monde, J'ai fait un formulaire contenant plusieurs champ que j'aimerai voir arriver dans ma boite mail, seulement il fallait s'en douter l Mettre des commentaires à ses news, probleme de code [ par sebing ] Bonsoir, J'essaye d'afficher les commentaires de mes news. J'ai deux tables: news et commentaires_news. Elle peuvent etre relié par id(news) et id_ne


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,697 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales