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
Partager