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

  1. #21
    Invité
    Invité(e)
    Par défaut
    [OUPS ! ] Lis mon message précédent...

    Je viens de voir que j'avais écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $selectDico = "SELECT * FROM $lettre WHERE scrabble_lettre  LIKE '$mot[0]%'";
    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $selectDico = "SELECT * FROM $lettre"; // on parcourt TOUTE la table
      0  0

  2. #22
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Points : 7
    Points
    7
    Par défaut
    J'ai fait ce que tu as dit et j'ai toujours le même problème

    On va arrêter là ce soir , je te remercie beaucoup pour ton aide et te souhaite une agréable soirée .

    Mais à propos c'est mieux mysqli_ ou PDO ? je crois que PDO est plus tendance ?
      0  0

  3. #23
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Points : 7
    Points
    7
    Par défaut
    Code sql : 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
    64
    65
    66
    67
    68
    CREATE TABLE `dictionnaire` (
      `scrabble_id` int(11) NOT NULL,
      `scrabble_lettre` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
      `scrabble_nbr` int(1) NOT NULL,
      `scrabble_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
      `scrabble_vb` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
      `scrabble_anagramme` text NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
     
    --
    -- Déchargement des données de la table `dictionnaire`
    --
     
    INSERT INTO `dictionnaire` (`scrabble_id`, `scrabble_lettre`, `scrabble_nbr`, `scrabble_name`, `scrabble_vb`, `scrabble_anagramme`) VALUES
    (1, 'a', 2, 'aa', '', ''),
    (2, 'a', 8, 'aelenienna', '', ''),
    (3, 'a', 10, 'aalenienne', '', ''),
    (4, 'a', 11, 'aaleniennes', '', ''),
    (5, 'a', 9, 'aaleniens', '', ''),
    (6, 'a', 3, 'aas', '', ''),
    (7, 'a', 5, 'abaca', '', 'abaca'),
    (8, 'a', 6, 'abacas', '', 'abacas'),
    (9, 'a', 7, 'abacost', '', 'abacost'),
    (10, 'a', 8, 'abacosts', '', ''),
    (11, 'a', 7, 'abacule', '', ''),
    (12, 'a', 8, 'abacules', '', 'abacules'),
    (13, 'a', 7, 'abaissa', '', ''),
    (14, 'a', 10, 'abaissable', '', ''),
    (15, 'a', 11, 'abaissables', '', ''),
    (16, 'a', 8, 'abaissai', '', 'abaissai'),
    (17, 'a', 11, 'abaissaient', '', ''),
    (18, 'a', 9, 'abaissais', '', ''),
    (19, 'a', 9, 'abaissait', '', 'abaissait'),
    (20, 'a', 10, 'abaissames', '', ''),
    (21, 'a', 9, 'abaissant', '', 'abaissant'),
    (22, 'a', 10, 'abaissante', '', ''),
    (23, 'a', 11, 'abaissantes', '', ''),
    (24, 'a', 10, 'abaissants', '', ''),
    (25, 'a', 8, 'abaissas', '', ''),
    (26, 'a', 10, 'abaissasse', '', ''),
    (27, 'a', 12, 'abaissassent', '', ''),
    (28, 'a', 11, 'abaissasses', '', ''),
    (29, 'a', 12, 'abaissassiez', '', ''),
    (30, 'a', 13, 'abaissassions', '', ''),
    (31, 'a', 8, 'abaissat', '', ''),
    (32, 'a', 10, 'abaissates', '', ''),
    (33, 'a', 7, 'abaisse', '', ''),
    (34, 'a', 8, 'abaissee', '', ''),
    (35, 'a', 9, 'abaissees', '', ''),
    (36, 'a', 11, 'abaissement', '', ''),
    (37, 'a', 12, 'abaissements', '', ''),
    (38, 'a', 9, 'abaissent', '', ''),
    (39, 'a', 8, 'abaisser', '1goupe', ''),
    (40, 'a', 9, 'abaissera', '', ''),
    (41, 'a', 10, 'abaisserai', '', ''),
    (42, 'a', 13, 'abaisseraient', '', ''),
    (43, 'a', 11, 'abaisserais', '', ''),
    (44, 'a', 11, 'abaisserait', '', ''),
    (45, 'a', 10, 'abaisseras', '', ''),
    (46, 'a', 11, 'abaisserent', '', ''),
    (47, 'a', 10, 'abaisserez', '', ''),
    (48, 'a', 11, 'abaisseriez', '', ''),
    (49, 'a', 12, 'abaisserions', '', ''),
    (50, 'a', 11, 'abaisserons', '', ''),
    (51, 'a', 11, 'abaisseront', '', ''),
    (52, 'a', 8, 'abaisses', '', ''),
    (53, 'a', 9, 'abaisseur', '', ''),
    (54, 'a', 10, 'abaisseurs', '', '');
      0  0

  4. #24
    Invité
    Invité(e)
    Par défaut
    PDO n'est pas "tendance" : c'est le (nouveau) standard.
    Destiné à PROTÉGER les requêtes des injections SQL.


    mysqli_ n'a d'intérêt QUE pour ceux qui ont déjà des (vieux) sites en mysql_ à mettre à jour (car les syntaxes sont très proches).


    Mais tant qu'a DÉBUTER (sans vieux site existant à mettre à jour), il faut utiliser PDO.
      1  0

  5. #25
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Points : 7
    Points
    7
    Par défaut
    Se serait beaucoup te demander de revoir mon programme via PDO ?
      0  0

  6. #26
    Invité
    Invité(e)
    Par défaut
    Non.

    PDO est plus simple que mysqli_ *.

    * surtout pour les "requêtes préparées".
    Une bonne habitude à prendre.

    A LIRE :
    Dernière modification par Invité ; 21/05/2019 à 21h04.
      1  0

  7. #27
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Points : 7
    Points
    7
    Par défaut
    Effectivement c'est plus simple à comprendre et plus souple.. J'avance bien

    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
     
    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 ;
    }
    echo "<br/>";
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ///////////////////////////////////////////Rechercher un mot//////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
    $recherche = strtolower(suppr_accents("écouter"));
    try
    {
    $bdd = new PDO('mysql:host=localhost;dbname=Mots;charset=utf8', 'root', 'root');
    }
    catch(Exception $e)
    {
    die('Erreur : '.$e->getMessage());
    }
    $reponse = $bdd->query("SELECT * FROM dictionnaire WHERE scrabble_name='$recherche'");
    while ($donnees = $reponse->fetch())
    {
    echo "La ligne : ".$donnees['scrabble_id'] . ' appartient à ' . $donnees['scrabble_name'] .'<br />';
    }
    $reponse->closeCursor();
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////verifier anagramme d'un mot///////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
    echo "<br/><hr/>";
    $recherche = strtolower(suppr_accents("aelenienna"));
    try
    {
    $bdd = new PDO('mysql:host=localhost;dbname=Mots;charset=utf8', 'root', 'root');
    }
    catch(Exception $e)
    {
    die('Erreur : '.$e->getMessage());
    }
    $reponse = $bdd->query("SELECT * FROM dictionnaire WHERE scrabble_name='$recherche'");
    while ($donnees = $reponse->fetch())
    {
    echo "La ligne : ".$donnees['scrabble_name'] . ' appartient à ' . $donnees['scrabble_anagramme'] .'<br />';
    }
    $reponse->closeCursor();
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////écrire nouveau anagramme////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
      0  0

  8. #28
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    J'ai un petit problème, j'ai besoin de votre aide.

    En PDO :

    Avant de mettre mon programme en ligne je voudrais déjà enregistrer les anagrammes dans la base de données.

    Je me suis fait un petit programme pour chercher les anagrammes, c'est très long, je l'ai exécuté hier à 12h30 et aujourd'hui à 5h45 il en est toujours à la lettre "a" ("amassèrent ")

    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    <?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.",";//"<b>".$string_1."</b> : ".$string_2.", ";
    else
    return ;
    }
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////écrire nouveau anagramme////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    function ana($recherche){
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    $resultat="";
    $base = mysqli_connect("localhost", "root", "root", "Mots");
    try
    {
    $bdd = new PDO('mysql:host=localhost;dbname=Mots;charset=utf8', 'root', 'root');
    }
    catch(Exception $e)
    {
    die('Erreur : '.$e->getMessage());
    }
    $reponse = $bdd->query('SELECT * FROM dictionnaire');
     
    while ($donnees = $reponse->fetch())
    {
    $resultat.= is_anagram($donnees['scrabble_name'],strtolower($recherche));
    }
    $reponse->closeCursor();
     
    if (substr($resultat,0,-1)<>",") {$resultat=substr($resultat,0,-1);}else{}
    echo $resultat."<br/>";//. " : ".$resultat;
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //////////////////////////////////////ajouter dans anagramme//////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    try {
    $bdd = new PDO('mysql:host=localhost;dbname=Mots;charset=utf8', 'root', 'root');
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "UPDATE dictionnaire SET scrabble_anagramme='$resultat' WHERE scrabble_name='$recherche'";
    $stmt = $bdd->prepare($sql);
    $stmt->execute();
    // echo " <br/>records UPDATED successfully"."<br/>";
    }
    catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }
    $bdd = null;
    } // fin function ana
     
     
    // faire un appel à la base puis l'envoyer sur ana(...)
     
    $base = mysqli_connect("localhost", "root", "root", "Mots");
    try
    {
    $bdd = new PDO('mysql:host=localhost;dbname=Mots;charset=utf8', 'root', 'root');
    }
    catch(Exception $e)
    {
    die('Erreur : '.$e->getMessage());
    }
    $reponse = $bdd->query('SELECT * FROM dictionnaire');
    $aa=0;
    while ($anag = $reponse->fetch())
    {
    //if ($aa>=1000) {exit;}
    $motachercher= $anag['scrabble_name'];
    ana($motachercher);
    }
    $reponse->closeCursor();
     
     
    ?>

    Bien sur il y a 393672 mots c'est logique que cela soit long mais là je crois que je pourrai gagner du temps en revoyant le programme, alors si vous pouvez m'aider .


    Merci
      0  0

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

    Tu n'as RIEN compris à ma méthode.
    Mais je ne vais pas perdre de temps à te l'expliquer une 5eme fois.


    TA méthode n'est PAS bonne.
      0  0

  10. #30
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Points : 7
    Points
    7
    Par défaut
    Si j'ai compris en partie mais c'est cette ligne que tu me donnes à la page précédente je ne comprend pas de trop et en même temps à 57ans on a plus de mal à comprendre ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ->execute([':sortstr'=> sort_alpha_noaccent_tolower($la_chaine_a_tester)]);
      0  0

  11. #31
    Invité
    Invité(e)
    Par défaut
    Ton erreur est de confondre TON "scrabble_anagramme" avec MON "sorted_letters".

    SI tu avais testé mon code, tu aurais compris.
      0  0

  12. #32
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Points : 7
    Points
    7
    Par défaut
    J'ai revu ton programme et il m'indique une erreur que je n'arrive pas à résoudre : Notice: Trying to get property of non-object in /

    La ligne en question : if ($motDico->num_rows > 0)


    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
    64
    65
    <?php
     
    // ----------------------------
    $mot="shooté";
    $lettre="dictionnaire";
     
     
    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)
    }
    // ----------------------------
    // ----------------------------
    require ('mysqli_conn.php');
    // ----------------------------
    // A FAIRE UNE FOIS POUR TOUTES
    // (il faut d abord créer une colonne dans la table : 'sorted_letters')
    // ----------------------------
    $conn = new mysqli($servername, $username, $password, $dbname);
     
    // $selectDico = "SELECT * FROM $lettre WHERE scrabble_lettre LIKE '$mot[0]%'"; // NON ! (erreur)
    $selectDico = "SELECT * FROM $lettre"; // on parcourt TOUTE la table
    $allDico = $conn->query($selectDico);
     
    if ($allDico->num_rows > 0)
    {
    while($row = $allDico->fetch_assoc())
    {
    $sorted_letters = $conn->real_escape_string( sort_alpha_noaccent_tolower($row['scrabble_name']) );
    $updateDico = "UPDATE $lettre SET sorted_letters = ".$sorted_letters.";";
    $conn->query($updateDico);
    }
    }
    // ----------------------------
     
    echo '<br />'.$sorted_letters.'...<br />';
     
    // ----------------------------
    // (include la fonction)
    $sorted_letters = $conn->real_escape_string(sort_alpha_noaccent_tolower($mot));
    // ----------------------------
    $conn = new mysqli($servername, $username, $password, $dbname);
     
    $selectDico = "SELECT * FROM $lettre WHERE sorted_letters = ".$sorted_letters.";";
    $motDico = $conn->query($selectDico);
     
    if ($motDico->num_rows > 0)
    {
    while($row = $motDico->fetch_assoc())
    {
    echo $row['mot'].'<br />';
    }
    }
    // ----------------------------
     
     
     
     
    ?>
      0  0

  13. #33
      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