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

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 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%'
    )
    ..........

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

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