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 :

Recherche PDO désordre [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Par défaut Recherche PDO désordre
    Bonjour les amis du site,

    Je ne suis pas un expert en php et pdo

    Je cherche à faire un moteur de recherche en PDO avec des mots en désordre c'est pour un jeu style Scrabble


    Pour info j'ai 26 tables (chaque table est une lettre de l'alphabet) , mais pour le moment on va imaginer qu'il doit chercher uniquement dans la table "M"

    Exemple je vais lui demander de chercher :

    mnagre

    Il est censé de me donner tous les mots avec ses lettres

    manga, mangabey, mangabeys, mangaka etc...




    Mais je dois avouer je suis complètement perdu depuis trois jours que je cherche une solution mais en vain ...

    Pourriez vous m'aider ?

    Voici mon script : http://www.verifier-mots.fr/moteur1.php

    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
     
    $mot="mang";
     
        $longueur = strlen($mot);
        for($index = 0; $index < $longueur; $index++)
        {
            $monmot .= "%".$mot[$index]."";
        }
     
     
     $premierelettre=$mot[0];$NomBase=$premierelettre."_dico"; 
    // connexion bdd    
    $BDD_hote = '*****';
    $BDD_bd = '*****';
    $BDD_utilisateur = '*****';
    $BDD_mot_passe = '****';
    $chainesearch = addslashes($monmot);  
    $chainesearch="mang%";
    echo '<br /><hr/>Vous avez recherché : <strong>' . $mot . '</strong><br />';      
    	try{
    		$bdd = new PDO('mysql:host='.$BDD_hote.';dbname='.$BDD_bd, $BDD_utilisateur, $BDD_mot_passe);
    		$bdd->exec("SET CHARACTER SET utf8");
    		$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
    	}
    		catch(PDOException $e){
    		echo 'Erreur : '.$e->getMessage();
    		echo 'N° : '.$e->getCode();
    	}      
    	$requete = "SELECT * from ".$NomBase." WHERE scrabble_name LIKE '". $chainesearch ."'"; 
        $resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo()));
        while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
     
    $word1 = str_split($donnees['scrabble_name']);
    $word2 = str_split($mot);
     
    echo strpbrk($mot, $donnees['scrabble_name'])." : " . $donnees['scrabble_name'];
     
     echo "<br/>";
     }
     
     
     
     
     
    function identStrings($string1, $string2) {
        $token = strtok($string1, " "); // tokenize the string by spaces
        $numbers = array_map('intval',array_filter(explode(' ', $string2)));
        while($token !== false) {
            if (!$token)
                continue;
            if (($key = array_search((int)$token, $numbers)) === false)
                return false;
            else
                unset($numbers[$key]);
            $token = strtok(" ");
        }
        return true;
    }
     
    ?>

    Merci à vous

    Eric

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Jefekoi Voir le message
    ...je vais lui demander de chercher :
    mnagre

    Il est censé de me donner tous les mots avec ses lettres
    manga, mangabey, mangabeys, mangaka etc...
    Soyons sérieux......
    .... et le "r" n'est dans aucune des réponses...

    Essaie en tapant "manga"



    Et avec "qsdfk", il doit retrouver quoi ?
    banane, hélicoptère, jean-pierre,... ?
    Dernière modification par Invité ; 26/09/2017 à 09h44.

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    je dois avouer je suis complètement perdu depuis trois jours
    Je pense qu'en 3 jours tu as du trouver quand même pas mal de requête pour faire des tirages dans un ordre aléatoire non ?

    Au passage, une table par lettre ça ne sert à rien et ça empêche plein de choses.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Par défaut
    Comme j'ai dit, je ne suis pas un expert, oui trois jours à chercher, faut dire aussi que sur le net tu trouves pas mal de solution mais sous l'ancienne version de php


    Pour le R désolé , voir le lien le mot de recherche est : mang pour l'exemple

  5. #5
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $premierelettre=$mot[0]
    Ca ne fonctionnera pas avec les lettres accentuées.

    En UTF-8 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $premierelettre = mb_substr($mot,0,1);
    Ensuite... tu n'as pas de table avec les lettres accentuées comme nom ! Donc, ça va buguer.
    Comme dit, une table par lettre est ridicule, inutile et pose donc problème.


    Il faut que tu prennes un papier et un crayon, et que tu pousses plus loin ta REFLEXION.
    Et ça, AVANT de coder.

    [EDIT]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $word1 = str_split($donnees['scrabble_name']);
    Ca y est, je vient de comprendre....
    ..... c'est pour tricher au Scrabble !

  6. #6
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Par défaut
    Merci je viens de rectifier le problème des accents, je vais maintenant essayer de noter ce que je voudrais.

    Ha ha non pas tout a fait pour tricher, je vais dire qu'une fois que j'ai fait un programme je veux l’améliorer et trouver des mots via un mélange de lettres est pour moi un défi .

  7. #7
    Invité
    Invité(e)
    Par défaut
    OK.

    Si on reprend le 1er exemple : "mnagre"

    On doit obtenir une requête du style :
    1/ Avec toutes les lettres :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT mot FROM dico
    WHERE 
    (
      mot LIKE '%m%'
      AND mot LIKE '%n%'
      AND mot LIKE '%a%'
      AND mot LIKE '%g%'
      AND mot LIKE '%r%'
      AND mot LIKE '%e%'
    )
    2/ Si pas de résultat : on cherche avec une lettre en moins.
    C'est là où ça se complique : il faut gérer tous les cas de figure...
    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
    SELECT mot FROM dico
    WHERE 
    (
      mot LIKE '%m%'
      AND mot LIKE '%n%'
      AND mot LIKE '%a%'
      AND mot LIKE '%g%'
      AND mot LIKE '%r%'
     
    )
    OR
    (
      mot LIKE '%m%'
      AND mot LIKE '%n%'
      AND mot LIKE '%a%'
      AND mot LIKE '%g%'
     
      AND mot LIKE '%e%'
    )
    OR
    (
      mot LIKE '%m%'
      AND mot LIKE '%n%'
      AND mot LIKE '%a%'
     
      AND mot LIKE '%r%'
      AND mot LIKE '%e%'
    )
    ..........

  8. #8
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Par défaut
    Tu m'arrêtes si je dis une bêtise.

    Il n'y a pas moyen de faire une boucle ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $longueur = strlen($mot);
        for($index = 0; $index < $longueur; $index++)
        {
            verif($mot[$index]);
        }
     
    function verif($lalettre){
    SELECT mot FROM dico
    WHERE 
    (
      mot LIKE '%'.$lalettre.'%'
    )
    return
    }

    Je ne suis pas expert hein

  9. #9
    Invité
    Invité(e)
    Par défaut
    Ca peut être utile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    echo $chaine = formatage_sans_accent( $chaine ); // remplacement des lettres accentuées
    $premiere_lettre = mb_substr($chaine,0,1); // première lettre
     
    $array_lettres = str_split($chaine, 1); // array de toutes les lettres (sans accent)
    var_dump( $array_lettres );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    // construction de la requete avec toutes les lettres :
    $where_mot = ( !empty($array_lettres) )? " WHERE (mot LIKE '%" . implode( "%' AND mot LIKE '%", $array_lettres) . "%' ) " : "";
    echo $where_mot;
    // -----------------
    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
    82
    83
    84
    85
    86
    // --------------------------------------------------------------
    // FONCTION : FORMATAGE sans accents
    // --------------------------------------------------------------
    function formatage_sans_accent( $chaine )
    {
    	$chaine				= html_entity_decode( $chaine ); 		// Convertit les entités HTML spéciales en caractères
    	// -----------------
    	// remplacement : caractères accentués et espace
    	$NON_array 			= array(
    	'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ă', 'Ą',
    	'Ç', 'Ć', 'Č', 'Œ',
    	'Ď', 'Đ',
    	'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ă', 'ą',
    	'ç', 'ć', 'č', 'œ',
    	'ď', 'đ',
    	'È', 'É', 'Ê', 'Ë', 'Ę', 'Ě',
    	'Ğ',
    	'Ì', 'Í', 'Î', 'Ï', 'İ',
    	'Ĺ', 'Ľ', 'Ł',
    	'è', 'é', 'ê', 'ë', 'ę', 'ě',
    	'ğ',
    	'ì', 'í', 'î', 'ï', 'ı',
    	'ĺ', 'ľ', 'ł',
    	'Ñ', 'Ń', 'Ň',
    	'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ő',
    	'Ŕ', 'Ř',
    	'Ś', 'Ş', 'Š',
    	'ñ', 'ń', 'ň',
    	'ò', 'ó', 'ô', 'ö', 'ø', 'ő',
    	'ŕ', 'ř',
    	'ś', 'ş', 'š',
    	'Ţ', 'Ť',
    	'Ù', 'Ú', 'Û', 'Ų', 'Ü', 'Ů', 'Ű',
    	'Ý', 'ß',
    	'Ź', 'Ż', 'Ž',
    	'ţ', 'ť',
    	'ù', 'ú', 'û', 'ų', 'ü', 'ů', 'ű',
    	'ý', 'ÿ',
    	'ź', 'ż', 'ž',
    	'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р',
    	'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'р',
    	'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я',
    	'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я'
    	);
     
    	$OUI_array 			= array(
    	'A', 'A', 'A', 'A', 'A', 'A', 'AE', 'A', 'A',
    	'C', 'C', 'C', 'CE',
    	'D', 'D',
    	'a', 'a', 'a', 'a', 'a', 'a', 'ae', 'a', 'a',
    	'c', 'c', 'c', 'ce',
    	'd', 'd',
    	'E', 'E', 'E', 'E', 'E', 'E',
    	'G',
    	'I', 'I', 'I', 'I', 'I',
    	'L', 'L', 'L',
    	'e', 'e', 'e', 'e', 'e', 'e',
    	'g',
    	'i', 'i', 'i', 'i', 'i',
    	'l', 'l', 'l',
    	'N', 'N', 'N',
    	'O', 'O', 'O', 'O', 'O', 'O', 'O',
    	'R', 'R',
    	'S', 'S', 'S',
    	'n', 'n', 'n',
    	'o', 'o', 'o', 'o', 'o', 'o',
    	'r', 'r',
    	's', 's', 's',
    	'T', 'T',
    	'U', 'U', 'U', 'U', 'U', 'U', 'U',
    	'Y', 'Y',
    	'Z', 'Z', 'Z',
    	't', 't',
    	'u', 'u', 'u', 'u', 'u', 'u', 'u',
    	'y', 'y',
    	'z', 'z', 'z',
    	'A', 'B', 'B', 'r', 'A', 'E', 'E', 'X', '3', 'N', 'N', 'K', 'N', 'M', 'H', 'O', 'N', 'P',
    	'a', 'b', 'b', 'r', 'a', 'e', 'e', 'x', '3', 'n', 'n', 'k', 'n', 'm', 'h', 'o', 'p',
    	'C', 'T', 'Y', 'O', 'X', 'U', 'u', 'W', 'W', 'b', 'b', 'b', 'E', 'O', 'R',
    	'c', 't', 'y', 'o', 'x', 'u', 'u', 'w', 'w', 'b', 'b', 'b', 'e', 'o', 'r'
    	);
     
    	$chaine 			= str_replace($NON_array, $OUI_array, $chaine);
    	// -----------------
    	return $chaine;
    }
    On obtient pour "mnagre" :

    $array_lettres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    array (size=6)
      0 => string 'm' (length=1)
      1 => string 'n' (length=1)
      2 => string 'a' (length=1)
      3 => string 'g' (length=1)
      4 => string 'r' (length=1)
      5 => string 'e' (length=1)
    $where_mot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE (mot LIKE '%m%' AND mot LIKE '%n%' AND mot LIKE '%a%' AND mot LIKE '%g%' AND mot LIKE '%r%' AND mot LIKE '%e%' )

    Remarque : la fonction de remplacement peut être simplifiée, pour peu qu'on passe D'ABORD tous les caractères en minuscules ou en majuscules (au choix) :


  10. #10
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Par défaut
    Merci pour ton aide, voilà qui va m'occuper un petit moment à déchiffrer cette formule

    Merci

  11. #11
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Par défaut
    Je cale là il me fait une erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    58 : $mmot="manger";
    59 : echo "<br /><hr/>"; 
    60 : $where_mot = ( !empty($mmot) )? " WHERE (mot LIKE '%" . implode( "%' AND mot LIKE '%", $mmot) . "%' ) " : "";
    61 : echo $where_mot;
    L'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Warning: implode(): Invalid arguments passed in moteur1.php on line 60
    WHERE (mot LIKE '%%' )

  12. #12
    Invité
    Invité(e)
    Par défaut
    1/ Pour mettre les balise [CODE] autour de tes codes, il faut cliquer sur l'icone # du mini-menu (et pas "quote").

    2/ Quant à l'erreur.... relis mon code attentivement.
    Ce n'est pas ce que j'ai écrit. Tu en as "oublié" une partie.

    3/ quand on ne connais pas le fonctionnement d'une fonction, on cherche dans la doc :

  13. #13
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Comme le dit sabotage il est sans doute plus judicieux de ne faire qu'une table avec tous les mots;

    Ensuite pour trouver un mot commencant par une lettre particulière et composé de différente lettre il suffit d'utilise un mélange de LIKE et LOCATE.

    Par exemple pour trouver tous les mots commencant par "m" et comprenant un "t" et un "i" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT mot FROM matable WHERE mot LIKE "m%" AND LOCATE("t",mot) AND LOCATE("i",mot)
    J'aurais tendance à dire que LOCATE va être plus rapide qu'un like mais à confirmer sur une grosse base de mot.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Par défaut
    Ha ha mais oui bien sur merci

    Mais le "$where_mot" je le place où du fait que je suis en PDO

  15. #15
    Invité
    Invité(e)
    Par défaut
    Dans Ton C........... Code.


    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = "SELECT.......................".$where_mot;

  16. #16
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Par défaut
    Yessssss ça marche


    Merci à vous pour votre aide précieuse

    Je vais juste laisser ma source au cas où cela pourrait aider ... quoi que ...

    Je n'ai pas utiliser la même function pour les accents mais le résultat est tout aussi bon .


    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
     
    <?php 
    $mot="part";
        $longueur = strlen($mot);
        for($index = 0; $index < $longueur; $index++)
        {
            $monmot .= "%".$mot[$index]."";
        }
    function str_to_noaccent($str)
    {
        $url = $str;
        $url = preg_replace('#Ç#', 'C', $url);
        $url = preg_replace('#ç#', 'c', $url);
        $url = preg_replace('#è|é|ê|ë#', 'e', $url);
        $url = preg_replace('#È|É|Ê|Ë#', 'E', $url);
        $url = preg_replace('#à|á|â|ã|ä|å#', 'a', $url);
        $url = preg_replace('#@|À|Á|Â|Ã|Ä|Å#', 'A', $url);
        $url = preg_replace('#ì|í|î|ï#', 'i', $url);
        $url = preg_replace('#Ì|Í|Î|Ï#', 'I', $url);
        $url = preg_replace('#ð|ò|ó|ô|õ|ö#', 'o', $url);
        $url = preg_replace('#Ò|Ó|Ô|Õ|Ö#', 'O', $url);
        $url = preg_replace('#ù|ú|û|ü#', 'u', $url);
        $url = preg_replace('#Ù|Ú|Û|Ü#', 'U', $url);
        $url = preg_replace('#ý|ÿ#', 'y', $url);
        $url = preg_replace('#Ý#', 'Y', $url);     
        return ($url);
    } 
    $premierelettre= str_to_noaccent($mot);
    $premierelettre = mb_substr($premierelettre,0,1);$NomBase=$premierelettre."_dico"; 
     
    $BDD_hote = '****';
    $BDD_bd = '****';
    $BDD_utilisateur = '****';
    $BDD_mot_passe = '****';
    $chaine = str_to_noaccent( $mot );
    $premiere_lettre = mb_substr($chaine,0,1);
    $array_lettres = str_split($chaine, 1);
    var_dump( $array_lettres );
    $where_mot = ( !empty($array_lettres) )? " WHERE scrabble_name LIKE '%" . implode( "%' AND scrabble_name LIKE '%", $array_lettres) . "%'  " : ""
    echo '<br /><hr/>Vous avez recherché : <strong>' . $mot . '</strong><br />';      
    	try{
    		$bdd = new PDO('mysql:host='.$BDD_hote.';dbname='.$BDD_bd, $BDD_utilisateur, $BDD_mot_passe);
    		$bdd->exec("SET CHARACTER SET utf8");
    		$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
    	}
    		catch(PDOException $e){
    		echo 'Erreur : '.$e->getMessage();
    		echo 'N° : '.$e->getCode();
    	}      
    	$requete = "SELECT * from ".$NomBase." $where_mot";  
        $resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo()));
        while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
    echo  $donnees['scrabble_name'];
     echo "<br/>";
     }
    ?>

  17. #17
    Invité
    Invité(e)
    Par défaut
    Reste à "nettoyer" : tu as des bouts de code qui ne servent plus à rien, ou sont redondants

  18. #18
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Par défaut
    Oui oui j'ai fait le ménage

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

    J'ai une petite question concernant le résultat .

    Pour améliorer mon programme il va de soit qu'il faut classer les mots par ordre de grandeur (du plus petit mot au plus grand)

    J'ai donc ajouté : ORDER BY scrabble_nbr ASC

    Sachant que scrabble_nbr est le nombre de lettre de la ligne d'enregistrement du résultat (voir image jointe)
    Nom : Jefekoi_27-09-2017-87867.jpg
Affichages : 203
Taille : 11,9 Ko

    donc ma ligne est comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete = "SELECT * from ".$NomBase." $where_mot  ORDER BY scrabble_nbr ASC";

    Il m'affiche pratiquement tout dans l'ordre sauf quelques lignes .. (voir sur cet exemple : http://www.verifier-mots.fr/moteur1....mot=Rechercher

    Si j'ai bien compris l'ordre qu'il me donne c'est l’ordre des enregistrements dans la bd ?

    Comment remédier à ce problème ?

    Merci pour votre aide précieuse

  20. #20
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je vois que les mots mal comptés ont des accents. À mon avis tu as fais le comptage en PHP en utilisant une fonction "strlen" qui ne fonctionne pas en UTF8. Fais le comptage en SQL avec LENGTH() ou en PHP avec mb_strlen()
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2013] Désordre avec macros de recherche récursive
    Par Mistral314 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 05/10/2016, 08h19
  2. Recherche multicritères PDO
    Par plop001 dans le forum Langage
    Réponses: 6
    Dernier message: 10/03/2016, 16h39
  3. Moteur de recherche PDO
    Par grophies dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/02/2016, 10h45
  4. [PDO] Moteur de recherche avec PDO + fonction LIKE
    Par malaka44 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/10/2013, 16h16
  5. [PDO] Moteur de recherche et PDO
    Par elwood973 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/08/2010, 17h12

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