IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Tri de tableau


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Par défaut [Tableaux] Tri de tableau
    Bonjour à tous,

    A la base ca me semblait simple et au bout 2 heures j'ai les méninges en vrac et ne comprend plus rien
    C'est tout bete :
    J'ai des fichiers ds un repertoire et je créer des liens pour pouvoir les telecharger. Jusque la ca va !
    Mais ... le bon sens voudrait que je trie par ordre alphabetique les fichiers.
    Et la maintenant je crie

    Mon tableau est créer à partir d'un while. Je ne sais pas s'il est composé de CLE+VALEUR ou juste de VALEURS, mais je n'arrive pas à le trier par ordre alphabetique sans créer une fonction, ce dont je ne me sens pas trop capable...
    Donc si qq peut m'aider ... c'est pas de refus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?php
    	$chemin = opendir(".");
    	$listfichier = array();
     
    	$m=0;
    	while(($encours = readdir($chemin)) !== FALSE)
    	{
    	$listfichier[$m++] = "$encours";
    	}
    	foreach($listfichier as $temp)
    	{
    	echo '<a href="'.$temp.'" tilte="titre" alt="'.$temp.'">'.$temp.'</a><br />';
    	}
    	asort($listefichier);
    	print_r($listfichier);
     
     
    	?>

  2. #2
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    tu mets tes données dans $listfichier et tu tries $listefichier avec asort!

    tu fais une erreur dans le nom de la variable pour asort()

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 131
    Par défaut
    Le tableau créé est un tableau simple, pas un tableau associatif (clé/valeur), donc sort doit faire l'affaire.
    Par contre, il vaudrait mieux mettre le tri avant le foreach ...

  4. #4
    Membre émérite
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Par défaut
    Déjà, faisons un peu plus propre 'c'est mon côté maniaque : mais plus tu l'es, plus ca va en code.... )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    <?php  
    $chemin = opendir("."); 
    $listfichier = array();
     
    $m=0; 
    while(($encours = readdir($chemin)) !== FALSE)  {
    //Je sais pas pourquoi, mais pour moi les ++ ont toujours eu un peu de mal à fonctionner....
     $m+=1;
    //Les guillements autour de ta variable ne sont pas utiles
      $listfichier[$m] = $encours; 
    }  
     
    foreach($listfichier as $temp)  { 
     echo '<a href="'.$temp.'" tilte="titre" alt="'.$temp.'">'.$temp.'</a><br />'; 
    }  
    //Tu veux trier après avoir fournit les liens ??
    //PS : listfichier, pas listefichier...
    asort($listfichier); 
    print_r($listfichier);   
    ?>
    Normalement asort() devrait bien marcher... Qu'est ce qu'il te sort ?
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  5. #5
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    1/ comme écrit dans mon message, le asort() ne marche pas vu qu'il ne passe pas le bon nom de variable en paramètre

    2/ le ++ marche très bien faudrait éviter de lui conseiller de ne pas utiliser quelquechose qui fonctionne et qui est très pratique

    3/ je suis pas d'accord avec ta vision du code "plus propre" et le fait de mettre l'accolade ouvrante sur la meme ligne que le while(). Comme on dit, chacun sa façon de coder, c'est pas une raison pour "l'imposer".

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Par défaut
    Wahouuuu, que de reponses,

    Merci à tous
    Je cherchais encore dans mon coin, ne pensant pas avoir autant de réponses !

    Ca marche super, merci tout le monde !!

    Pour la facon de coder, ... je botte en touche et vous laisse régler ca entre "grands".
    Moi je sais à peine faire un écho, donc je ne me permet pas de dire quoi que ce soit ...
    ... si ce n'est

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Par défaut
    Euh, finalement ca va pas si bien ...

    Mon tableau n'est pas plus trié qu'avant, juste en sens inverse ...
    Le but est d'afficher la liste des fichiers par ordre alphabetique ...

    Et tant que j'y suis je suis en train de chercher à ne pas afficher le fichier index.php, et ca ne marche pas ...
    Ca c'est une autre histoire, mais si elle intéresse qq ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?php
    	$chemin = opendir(".");
    	$listfichier = array();
     
    	$m=0;
    	while(($encours = readdir($chemin)) !== FALSE)
    	{
    		if(is_file($encours) AND (($extens[1] = explode('.',$encours)) != "php"))
    		{$listfichier[$m++] = "$encours";}
    	}
    	asort($listfichier);
    	echo '<ul>';
    	foreach($listfichier as $temp)
    	{
    	$ext = explode('.',$temp);
     
    		switch($ext[1])
    			{
    			case "doc":
    			$puce = "word";
    			break;
     
    			case "xls":
    			$puce = "excel";
    			break;
     
    			case "zip":
    			$puce = "winzip";
    			break;
     
    			default:
    			$puce = "autre";
    			break;
    			}
     
     
    	echo '<li style="list-style-image:url(puces/'.$puce.'.jpg);"><a href="'.$temp.'" tilte="titre" alt="'.$temp.'">'.$temp.'</a></li><br />';
    	}
    	echo '</ul>';
     
     
    	?>

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Par défaut
    Concernant mon probleme d'extention php, j'ai feinté ( )en utilisant deux lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while(($encours = readdir($chemin)) !== FALSE)
    	{
    		$extens = explode('.',$encours);
    		if(is_file($encours) AND ($extens[1] != "php"))
    		{$listfichier[$m++] = "$encours";}
    	}
    Mais il me semble qu'il doit y avoir moyen de n'utiliser qu'une seule ligne ...

  9. #9
    Membre émérite
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Par défaut
    Citation Envoyé par koopajah
    1/ comme écrit dans mon message, le asort() ne marche pas vu qu'il ne passe pas le bon nom de variable en paramètre

    2/ le ++ marche très bien faudrait éviter de lui conseiller de ne pas utiliser quelquechose qui fonctionne et qui est très pratique

    3/ je suis pas d'accord avec ta vision du code "plus propre" et le fait de mettre l'accolade ouvrante sur la meme ligne que le while(). Comme on dit, chacun sa façon de coder, c'est pas une raison pour "l'imposer".
    Lol,

    Si t'as bien lu ce que j'ai mis, c'est MA vision des choses (les commentaires sont explicites....). Ce que je met n'est qu'un exemple, à chacun son coté maniaque : le tout c'est d'en avoir un, pour avoir le minimum de bugs.

    Quant à l'accolade, je laisse Zend Studio faire par défault, et je m'y suis fait....
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  10. #10
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Tu as surtout dit que tu allais faire plus propre... Mais là n'est pas la question, c'était surtout le ++ qui m'a dérangé parce que ca le force a faire des instructions en deux lignes au lieu d'une et ca peut vite devenir casse-pieds.

    Sinon, ton problème est-il bien résolu? Parce que je ne sais pas si tu as posté avant ou après avoir mis "Résolu" ^^

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Par défaut
    Euh, non mon pbs de sort n'est pas résolu !
    En fait je n'ai meme pas remarqué avoir cliqué sur Résolu ...

    En fait, je n'arrive tjs pas a trier mon tableau et afficher mes lien par ordre alphabétique ...

    cf code plus haut

    Si vous avez des suggestions ... je suis prenneur !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Tableaux] Tri de tableau
    Par winnie82 dans le forum Langage
    Réponses: 8
    Dernier message: 25/07/2006, 10h32
  2. [Tableaux] Tri de tableau
    Par BenoitDenis dans le forum Langage
    Réponses: 34
    Dernier message: 14/04/2006, 10h37
  3. [Tableaux] Tri de tableau
    Par BenoitDenis dans le forum Langage
    Réponses: 16
    Dernier message: 27/02/2006, 15h32
  4. [Tableaux] tri de tableau deux dimensions
    Par oursquetaire dans le forum Langage
    Réponses: 8
    Dernier message: 27/12/2005, 14h27
  5. [Tableaux] tri de tableau
    Par rdams dans le forum Langage
    Réponses: 19
    Dernier message: 08/11/2005, 13h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo