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

PHP & Base de données Discussion :

Anagramme pas facile


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Par défaut Anagramme pas facile
    Bonjour,

    J’essaie depuis pas mal de temps à trouver comment peut on chercher les anagrammes dans la base de données mais vu mon niveau (1/10) , je dirais que ce n'est pas facile.

    J'ai trouvé un script qui éventuellement pourrais aller mais je voudrais transformer le "array" par ma base de données

    si une personne a eu meilleurs idée où pourrait m'aider.

    Merci
    PS: Pour info j'ai qu'une seul BD avec je ne sais plus combien de mot (énorme)

    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
    <?php
    $dictionary = array("kayak","kyaak","eric");
    $anagram = "kayak";
    $anagramSorted = sortString($anagram);
     
    foreach ($dictionary as $word)
    {
        $wordSorted = sortString($word);
        if ($wordSorted == $anagramSorted)
        {
           echo 'true : '.$word."<br/>";
        }
    }
     
    function sortString($s)
    {
        $chars = array();
        $length = strlen($s);
        for ($i=0;$i<$length;$i++)
        {
           $chars[] = $s[$i];
        }
        sort($chars);
     
        return implode("",$chars);
    }
    ?>
      0  0

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,
    Citation Envoyé par Jefekoi Voir le message
    J'ai trouvé un script qui éventuellement pourrais aller mais je voudrais transformer le "array" par ma base de données
    Euh, le résultat d'une requête SELECT sera un array donc tu veux remplacer le "array" par un autre array. T'es sûr ?
      0  0

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une solution simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    function sort_alpha_noaccent_tolower($str)
    {
    	$str = mb_strtolower($str);		// tout en minuscules
    	$str = strtr($str,				// sans accents
          'àáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
          'aaaaaaceeeeiiiioooooouuuuyy');
    	$chr = str_split($str,1);
        sort($chr);						// ordre alphabetique
        return trim(implode('',$chr));	// supprime les espaces (si on a plusieurs mots)
    }
    ?>
    L'idée est d'effectuer D'ABORD cette opération UNE FOIS, en enregistrant le résultat dans une colonne ('sortstr' par exemple) de ta table.

    Ensuite, pour trouver les anagrammes d'un mot, il suffit de faire la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = "SELECT ....... WHERE sortstr = :sortstr";
    ... prepare(...);
    ... execute([':sortstr'=> sort_alpha_noaccent_tolower($la_chaine_a_tester)]);
    Exemple : 'LUCIOLES' - 'COUI...S'



    N.B. Il y avait la même parodie avec Gérard Jugnot, mais je ne l'ai pas retrouvée...
    Dernière modification par Invité ; 19/05/2019 à 10h50.
      0  0

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut

    quitte à se marrer
      1  0

  5. #5
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Par défaut
    Merci messieurs,

    Je vais voir ça cette semaine.
      0  0

  6. #6
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Par défaut
    Voilà où j'en étais ...


    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    <?php
    function suppr_accents($chaine) {
        $accents = array('À','Á','Â','Ã','Ä','Å','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ò','Ó','Ô','Õ','Ö','Ù','Ú','Û','Ü','Ý','à','á','â','ã','ä','å','ç','è','é','ê','ë','ì','í','î','ï','ð','ò','ó','ô','õ','ö','ù','ú','û','ü','ý','ÿ');
        $sans = array('A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','O','O','O','O','O','U','U','U','U','Y','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','o','o','o','o','o','o','u','u','u','u','y','y');
        return str_replace($accents, $sans, $chaine);
     }
    function is_anagram($string_1, $string_2) 
        { 
            if (count_chars($string_1, 1) == count_chars($string_2, 1)) 
                return $string_1.","; 
            else 
                return ;        
        }  
    $mot="remonter";
    $nbr=strlen($mot);
    for ($i = 0; $i < $nbr; $i++) {
       $suite.= " AND scrabble_name LIKE '%".substr($mot, $i,1)."%'"."\n";
    }
    $servername = "localhost";
    $username = "root";
    $password = "root";
    $dbname = "Mots";
    $lettre="dictionnaire";
    $conn = new mysqli($servername, $username, $password, $dbname);
     
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
     
    $ii=0;
    $sqlAlphabet = "SELECT * FROM $lettre WHERE scrabble_lettre  LIKE '$mot[0]%'";
    $alphabet = $conn->query($sqlAlphabet);
     
     
     
     
     
    if ($alphabet->num_rows > 0) {
    while($row = $alphabet->fetch_assoc()) {
     $ii++;
    $alpha[$ii]= $row["scrabble_name"]; 	
     
    } 
    }
     
     
     
    $sql = "SELECT * FROM $lettre WHERE LENGTH(scrabble_name) = $nbr ";
    $result = $conn->query($sql);
           if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
    echo is_anagram(suppr_accents($row["scrabble_name"]), suppr_accents($mot));
     
    }
    }
     
     
     
     
    $conn->close();
     
    echo "<br/>FIN";//.$alpha[$iii]." : ".$iii;
    ?>
    J'ai un peu de mal à comprendre à comprendre cette ligne jreaux62
    WHERE sortstr = :sortstr"; .

    J'utilise ce nom pour la colonne anagramme : scrabble_ana01
    donc je dois faire ceci ?
    WHERE scrabble_ana01 = :scrabble_ana01";
      0  0

Discussions similaires

  1. hash MD5 en C, pas facile !
    Par jack_x4 dans le forum C
    Réponses: 14
    Dernier message: 08/03/2009, 08h14
  2. En fonction du login - modif possibles ou pas - facilement ?
    Par chapeau_melon dans le forum WinDev
    Réponses: 3
    Dernier message: 26/02/2008, 21h19
  3. Réponses: 1
    Dernier message: 09/02/2007, 16h03
  4. [Joomla!] Joomla Pas Facile
    Par sandytarit dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 03/02/2007, 20h48
  5. un petit histogramme pas facile
    Par Bibouda dans le forum C
    Réponses: 15
    Dernier message: 23/11/2005, 21h17

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