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] classement de mots en fonction de leur terminaison


Sujet :

Langage PHP

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 90
    Points : 57
    Points
    57
    Par défaut [Tableaux] classement de mots en fonction de leur terminaison
    Bonsoir,
    j'ai sur une page html une liste d'environ 500 mots classés par ordre alphabétique et je souhaiterais maintenant les classer en fonction de leurs terminaisons, pour faire un dictionnaire des rimes.
    Y a t-il une fonction php pour faire ça ?

    Merci de votre aide

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Il n'y en a aucune à ma connaissance, cependant, on peut facilement faire une petite fonction pour inverser un mot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function reverse_str($string)
    {
       $Nstr = ""
       $c = strlen($string)
       for($i = $c - 1; $i >= 0; --$i) $Nstr += $string{$i};
       return $Nstr;
    }
    ensuite, il te suffit de faire un tableau associatif des mots (clé = mot inversé, valeur = mot normal) et de trier par rapport aux clés avec ksort

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 90
    Points : 57
    Points
    57
    Par défaut
    merci de cette astuce, c'est en effet une fonction comme ça que je cherchais. Cependant je suis novice en php et je vois pas trop comment faire ce "tableau associatif des mots" avec "ksort"... pourrais-tu m'expliquer ?

    ps : voici à quoi ressemble mon code htlm
    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
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <meta name="robots" content="none">
    <title>dico des rimes</title>
    </head>
    <body>
      Abhorrer<br>
      Aboucher<br>
      Aboulique<br>
      bacchanales<br>
      Baguenauder<br>
      Barcane <br>
      Bayou <br>
      Cabale <br>
      Cacique<br>
      callipyge<br>
      Camarde<br>
      camouflet<br>
      canop&eacute;e<br>
      Capiteux<br>
      Capitole.....<br>
    </body>
    </html>

  4. #4
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    je suppose que tes mots sont stockés dans un tableau classique en PHP ?

    et bien cette fonction devrait faire ce que tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function sort_by_end($array)
    {
        $Narr = array();
        foreach($array as $v) $Narr[reverse_str($v)] = $v;
        return ksort($Narr);
    }
    si tu veux pouvoir parcourrir le tableau avec un for simple (avec un indice)
    il faut remplacer la ligne avec le return par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return array_values(ksort($Narr));

  5. #5
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 90
    Points : 57
    Points
    57
    Par défaut
    Ci dessous le code que j'ai écrit... il doit y avoir quelquechose de faux car rien ne s'affiche quand j'appelle la page

    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
    <?php
        mysql_connect("sql.free.fr", "matperino", "mdp");
        mysql_select_db("matperino"); 
     
         $Narr = mysql_query("SELECT * FROM listedemots;"); 
     
    	  function sort_by_end($array)
    {
        $Narr = array();
        foreach($array as $v) $Narr[reverse_str($v)] = $v;
        return array_values(ksort($Narr));
    }
     
        mysql_close();
      ?>
    une idée ????
    merci

  6. #6
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut
    Bonne nuit à tous minuit trente)

    en supposant que tes mots ne soit pas déjà dans un tableau : il faut commencer pas les mettre.

    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
    $tab = array();
     
    $tab[] = "mot4";
    $tab[] = "mot3";
    $tab[] = "mot2";
    $tab[] = "mot1";
     
    //j'ais insérer le 4 en premier pour que le resultat du tri soit apparent
     
    //on affiche le resultat
    echo "<pre>";
    print_r($tab);
    echo "</pre>";
     
    //on crée le tableau inversé :
     
    $tabi = sort_by_end($tab);
     
    //on affiche le résultat
    echo "<pre>";
    print_r($tab);
    echo "</pre>";
    c'est pas testé mais ça peut t'étre utile

    voila,
    re bonne nuit @ tous

  7. #7
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut
    là je vois pas ...
    ton code est bon ( syntaxiquement ) mais s'il n'y à rien d'autre c'est normale que rien ne s'affiche car ce code n'affiche rien.

    ha si :

    FROM listedemots;"

    t'as un ';' à la fin de ta requette. je suis pas sur que se soit une faute (et même si s'en ais une tu aurais du avoir un message d'erreur.

  8. #8
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Citation Envoyé par SoF_AzraeL
    t'as un ';' à la fin de ta requette. je suis pas sur que se soit une faute (et même si s'en ais une tu aurais du avoir un message d'erreur.
    non, c'est pas une faute, d'ailleurs, si tu fais du SQL en ligne de commande, ton SGBD le réclammera certainement le ;

  9. #9
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut
    ba tenpi pour toi alors moi je séche

  10. #10
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
        mysql_connect("sql.free.fr", "matperino", "mdp");
        mysql_select_db("matperino"); 
     
         $Narr = mysql_query("SELECT * FROM listedemots;");
    *
    mais la tu récuperes rien !!
    il faut faire un mysql_fetch_array !!

  11. #11
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 90
    Points : 57
    Points
    57
    Par défaut mais encore ?
    Bonne idée... et concrètement ça ressemble à quoi ?

    merci de votre aide

  12. #12
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    à ce qu'il y a dans la doc : http://php.net/mysql_fetch_array

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 09/11/2010, 14h38
  2. trouve la note du classement en fonction de leur note
    Par popofpopof dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 05/01/2009, 19h10
  3. Réponses: 4
    Dernier message: 16/01/2008, 13h12
  4. classement de nombres en fonction de leur freq d'apparition
    Par didier.schmit dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/08/2007, 09h08
  5. Affichage d'évènements en fonction de leur date ?
    Par swirtel dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/05/2005, 10h30

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