Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 8 sur 8
  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    août 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : août 2011
    Messages : 53
    Points : 21
    Points
    21

    Par défaut Trier une liste

    Bonjour,

    J'ai une liste générée dynamiquement que j'aimerais trier croissante, elle est de la forme suivante :

    Code :
    1
    2
    3
    4
    5
    6
    7
    <option value="../dossier/1_V.php">1 - Titre</option>
    <option value="../dossier/4_V.php">4 - Titre</option>
    <option value="../dossier/2_V.php">2 - Titre</option>
    <option value="../dossier/5_V.php">5 - Titre</option>
    <option value="../dossier/3_V.php">3 - Titre</option>
    <option value="../dossier/7_V.php">7 - Titre</option>
    <option value="../dossier/6_V.php">6 - Titre</option>
    Comment puis-je faire en PHP pour réorganiser ces lignes de manière à ce que les "option' soient dans un ordre croissant ?

  2. #2
    Modérateur
    Avatar de Vil'Coyote
    Profil pro
    Développeur Web
    Inscrit en
    février 2008
    Messages
    3 972
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : février 2008
    Messages : 3 972
    Points : 5 658
    Points
    5 658

    Par défaut

    c'est lors de la génération de ta liste qu'il faudrait faire le tri. tu la génère comment ?
    la vie n'est pas cirrhose des foies ...

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    août 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : août 2011
    Messages : 53
    Points : 21
    Points
    21

    Par défaut

    Je renseigne les différentes variables dans un formulaire,
    ensuite j'envoie le tout vers le script PHP suivant :

    Code php :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    /*  LISTE  */			  
    $liste_url = $_SERVER["DOCUMENT_ROOT"].$liste;
    $liste_content = file_get_contents($liste_url);
     
    if (preg_match('#'.$matcher.'#', $liste_content)) { 
    	$optionwrite = (preg_replace('[<option(.*)'.$matcher.'(.*)/option>]', $option, $liste_content)); 
    	}
    	else { $optionwrite = $liste_content.$option."\n"; }
     
    	$fichier = fopen ($liste_url , "w+");
     
    	fwrite ($fichier , $optionwrite); 
     
    	fclose ($fichier);

    Petite explication :

    • je récupère le contenu de ma liste dans la variable $liste_content,
      • si l' "option" associé existe déjà, je le remplace par le nouveau et réécrit ma liste ainsi,
      • si non je rajoute l' "option' à la fin de ma liste.

    Dans tous les cas, je crash ma liste existante pour la réécrire.

  4. #4
    Modérateur
    Avatar de Vil'Coyote
    Profil pro
    Développeur Web
    Inscrit en
    février 2008
    Messages
    3 972
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : février 2008
    Messages : 3 972
    Points : 5 658
    Points
    5 658

    Par défaut

    vue que tu utilises une méthode de lecture / écriture, il faudrait une fois ton fichier modifier le relire en stockant les données dans un tableau, trier ton tableau et remplacer les données de ton fichier par celle de ton tableau. tu n'aura pas de fonction de tri auto malheureusement.

    si ta liste était alimentée depuis une base de données il suffirait d'effectuer le tri sur ta requête mais là ce n'est pas le cas. tu ne peux donc pas trier ton fichier mais seulement les données que tu t'exportes.
    la vie n'est pas cirrhose des foies ...

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    août 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : août 2011
    Messages : 53
    Points : 21
    Points
    21

    Par défaut

    Lorsque tu dit :

    il faudrait une fois ton fichier modifier le relire en stockant les données dans un tableau
    Ça veut dire qu'il faudrait que je découpe ma liste en variable pour utiliser array ? Je ne vois pas ce que c'est que le tableau en fait.

  6. #6
    Modérateur
    Avatar de Vil'Coyote
    Profil pro
    Développeur Web
    Inscrit en
    février 2008
    Messages
    3 972
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : février 2008
    Messages : 3 972
    Points : 5 658
    Points
    5 658

    Par défaut

    un tableau et un array
    la vie n'est pas cirrhose des foies ...

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    août 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : août 2011
    Messages : 53
    Points : 21
    Points
    21

    Par défaut

    Ah bah je le savais sans le savoir alors ^^

    Avec la fonction preg_match(), je peux créer mon ensemble de variable, avec un truc du genre :

    Code :
    preg_match('<option(.*)</option>, $liste_content, $matches);
    mais je ne sais pas comment je peux récupérer l'ensemble des variables $matches[i] créées pour utiliser ensuite la fonction sort(). Il y a un moyen de faire ça alors qu'on ne sait pas combien il y en a ?

  8. #8
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    août 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : août 2011
    Messages : 53
    Points : 21
    Points
    21

    Par défaut

    Voila la solution que j'ai trouvé :

    Code :
    1
    2
    3
    $liste_a_trier = explode("\n", $optionwrite);
    natsort($liste_a_trier);
    $optionwrite = implode("\n", $liste_a_trier);
    Problème résolu !

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •