Créer un tableau de recherche
Fermé
martine et chantal
Messages postés
485
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
4 juin 2013
-
6 mai 2011 à 12:29
martine et chantal Messages postés 485 Date d'inscription dimanche 15 février 2009 Statut Membre Dernière intervention 4 juin 2013 - 22 mai 2011 à 20:12
martine et chantal Messages postés 485 Date d'inscription dimanche 15 février 2009 Statut Membre Dernière intervention 4 juin 2013 - 22 mai 2011 à 20:12
A voir également:
- Créer un tableau de recherche
- Créer un compte google - Guide
- Créer un compte gmail - Guide
- Comment créer un groupe whatsapp - Guide
- Tableau croisé dynamique - Guide
- Créer un compte instagram sur google - Guide
6 réponses
Utilisateur anonyme
6 mai 2011 à 13:29
6 mai 2011 à 13:29
Bonjour,
Si je comprends bien vous auriez une liste de mot quelque part et vous voudriez faire une recherche dessus puis afficher les mots qui correspondent ?
Ce code dans ce cas répondra à la recherche large
Si je comprends bien vous auriez une liste de mot quelque part et vous voudriez faire une recherche dessus puis afficher les mots qui correspondent ?
Ce code dans ce cas répondra à la recherche large
<?php // définitation de la liste de mots $mots = array('chien','chat','loup','canard'); // tableau des réponses $tab = array(); // recherche lancée if (array_key_exists('recherche',$_POST)) { // parcourt de la liste foreach($mots as $mot) { // recherche de l'occurence if (($index=strpos($mot,$_POST['recherche']))!==false) { // ajout au tableau des réponses $tab[] = $mot; } // recherche de l'occurence } // parcourt de la liste } // recherche lancée // formulaire HTML echo <<<FORM <form method="post"> <input type="text" name="recherche"/> <input type="submit"/> </form> FORM; // affichage du résultat, s'il y en a if (count($tab)>0) { echo '<ul>'; foreach($tab as $reponse) { echo '<li>'.$reponse; } echo '</ul>'; } // affichage du résultat, s'il y en a ?>
Utilisateur anonyme
9 mai 2011 à 08:24
9 mai 2011 à 08:24
strpos($mot,$_POST['recherche'])
renvoie la position du premier caractère $_POST['recherche'] dans la chaîne $mot
si la chaîne $_POST['recherche'] n'existe pas cela renvoie false au lieu d'un nombre, d'où le !==
strln donne la longueur d'une chaîne
strlen('toto')=4
Pour la recherche dans le désordre 'niech' pour 'chien' cela va être beaucoup plus compliqué et surtout très lent. Il va falloir parcourir la chaîne 'niech' lettre par lettre, et vérifier que la lettre existe dans 'chien'
En gros c'est ça sauf que 'tét' répondra ok pour 'été', donc bof... pas simple comme algo
renvoie la position du premier caractère $_POST['recherche'] dans la chaîne $mot
si la chaîne $_POST['recherche'] n'existe pas cela renvoie false au lieu d'un nombre, d'où le !==
strln donne la longueur d'une chaîne
strlen('toto')=4
Pour la recherche dans le désordre 'niech' pour 'chien' cela va être beaucoup plus compliqué et surtout très lent. Il va falloir parcourir la chaîne 'niech' lettre par lettre, et vérifier que la lettre existe dans 'chien'
$rep=true; for($i=0;$i<strlen($_POST['recherche'];$i++) { if (strpos($mot,substr($_POST['recherche'],$i,1))===false) { $rep=false; break; } } if($rep==true) echo 'mot trouvé';
En gros c'est ça sauf que 'tét' répondra ok pour 'été', donc bof... pas simple comme algo
martine et chantal
Messages postés
485
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
4 juin 2013
4
9 mai 2011 à 12:40
9 mai 2011 à 12:40
encore merci.
Avant tout j'aimerai revenir sur le strpos($mot,$_POST['recherche']).
tu me dis que ça renvoie la position du premier caractère $_POST['recherche'] dans la chaîne $mot.
Je le comprends comme cela : si je poste "ch", le robot cherche uniquement le premier caractère, en l'occurence "c" dans la chaîne $mot.
Seulement si je poste "ch", la réponse est "chien" et "chat" .... et non "canard".
Donc il utilise l'ensemble des caractères postés.
Pour le strlen, il va falloir que je me gratte encore la t^te :).
A 1ère vu j'aimerai écrire la condition "for" comme ceci :
for($i=strlen($_POST['recherche'])
Mais j'imagine bien que je fais fausse route.
je reviendrai dessus dès ce soir. (Ah si je pouvais emmener mon PC au boulot ! :) )
Pour ma part j'essai d'organiser mes recherches.
J'essaie tout d'abord de créer un code de recherche des mots dans le désordre.
Puis de créer un code de recherche pour le nombre de lettres.
Enfin de tenter de combiner les 2 recherches.
OH ! petite question as-tu un site à me conseiller pour l'apprentissage du PHP.
Je navigue entre "le site du zéro", "PHP.net" et parfois "comment ça marche".
Je pense que c'est déjà pas mal...mais si tu as un site repaire pour toi, je suis preneur.
Avant tout j'aimerai revenir sur le strpos($mot,$_POST['recherche']).
tu me dis que ça renvoie la position du premier caractère $_POST['recherche'] dans la chaîne $mot.
Je le comprends comme cela : si je poste "ch", le robot cherche uniquement le premier caractère, en l'occurence "c" dans la chaîne $mot.
Seulement si je poste "ch", la réponse est "chien" et "chat" .... et non "canard".
Donc il utilise l'ensemble des caractères postés.
Pour le strlen, il va falloir que je me gratte encore la t^te :).
A 1ère vu j'aimerai écrire la condition "for" comme ceci :
for($i=strlen($_POST['recherche'])
Mais j'imagine bien que je fais fausse route.
je reviendrai dessus dès ce soir. (Ah si je pouvais emmener mon PC au boulot ! :) )
Pour ma part j'essai d'organiser mes recherches.
J'essaie tout d'abord de créer un code de recherche des mots dans le désordre.
Puis de créer un code de recherche pour le nombre de lettres.
Enfin de tenter de combiner les 2 recherches.
OH ! petite question as-tu un site à me conseiller pour l'apprentissage du PHP.
Je navigue entre "le site du zéro", "PHP.net" et parfois "comment ça marche".
Je pense que c'est déjà pas mal...mais si tu as un site repaire pour toi, je suis preneur.
Utilisateur anonyme
9 mai 2011 à 13:02
9 mai 2011 à 13:02
strpos($mot,$_POST['recherche'])
oui, renvoie la position du premier caractère, à condition que la chaîne existe dans $mot.
une boucle for ne s'écrit pas ainsi mais comme je l'ai mis avant :
for(VALEUR_INITIALE;condition sur VALEUR_MAXIMALE;ITERATION) {
}
for($i=0;$i<strlen($_POST['recherche'];$i++) {
Pour apprendre, le meilleur site reste à mon avis le https://www.php.net/
oui, renvoie la position du premier caractère, à condition que la chaîne existe dans $mot.
une boucle for ne s'écrit pas ainsi mais comme je l'ai mis avant :
for(VALEUR_INITIALE;condition sur VALEUR_MAXIMALE;ITERATION) {
}
for($i=0;$i<strlen($_POST['recherche'];$i++) {
Pour apprendre, le meilleur site reste à mon avis le https://www.php.net/
martine et chantal
Messages postés
485
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
4 juin 2013
4
9 mai 2011 à 22:28
9 mai 2011 à 22:28
bon... il faut que je me rende à l'évidence.
si tu trouves que l'algo recherchée est complexe qu'en est-il pour moi ? :(
Ce n'est pas un abandon mais un constat : j'ai du boulot !
si tu trouves que l'algo recherchée est complexe qu'en est-il pour moi ? :(
Ce n'est pas un abandon mais un constat : j'ai du boulot !
martine et chantal
Messages postés
485
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
4 juin 2013
4
10 mai 2011 à 00:53
10 mai 2011 à 00:53
hep hep hep...il me reste une solution. trouver un script déjà fait qui correspond plus ou moins à ce que je recherche.
trouver un mot dans une liste à partir de qqs lettres c'est tout bêtement la recherche d'un anagramme !?
"google => code PHP anagramme" donne des pistes intéressantes.
trouver un mot dans une liste à partir de qqs lettres c'est tout bêtement la recherche d'un anagramme !?
"google => code PHP anagramme" donne des pistes intéressantes.
martine et chantal
Messages postés
485
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
4 juin 2013
4
Modifié par martine et chantal le 15/05/2011 à 02:06
Modifié par martine et chantal le 15/05/2011 à 02:06
aïe aïe aïe ! quelle prise de tête.
J'efface tout et je recommence.
Je me suis replongé dans les cours de PHP et j'ai tenté de créer le squelette du code que je cherche.
cette base est-elle réalisable ? :
<?php
//liste
$mots = array('chien','chat','loup','canard');
<form method="post"> recherche1
<form method="post"> recherche2
if (
(CONDITION1= le mot crypté (recherche1)contient m^me lettres d'un mot de la liste)
$$
(CONDITION2= le chiffre (recherche2)correspond au nb de lettres d'un mot de la liste) )
{donner la/les réponse}
else {echo "rien trouvé"}
?>
J'efface tout et je recommence.
Je me suis replongé dans les cours de PHP et j'ai tenté de créer le squelette du code que je cherche.
cette base est-elle réalisable ? :
<?php
//liste
$mots = array('chien','chat','loup','canard');
<form method="post"> recherche1
<form method="post"> recherche2
if (
(CONDITION1= le mot crypté (recherche1)contient m^me lettres d'un mot de la liste)
$$
(CONDITION2= le chiffre (recherche2)correspond au nb de lettres d'un mot de la liste) )
{donner la/les réponse}
else {echo "rien trouvé"}
?>
martine et chantal
Messages postés
485
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
4 juin 2013
4
15 mai 2011 à 02:06
15 mai 2011 à 02:06
AH ! une autre question :
J'ai trouvé ceci sur le dossier php de comment ça marche :
"[abc]": chaîne qui contient un "a", un "b", ou un "c"
puis-je écrire "[$_POST['recherche']]" ? car ça pourrait être interessant.
J'ai trouvé ceci sur le dossier php de comment ça marche :
"[abc]": chaîne qui contient un "a", un "b", ou un "c"
puis-je écrire "[$_POST['recherche']]" ? car ça pourrait être interessant.
martine et chantal
Messages postés
485
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
4 juin 2013
4
Modifié par martine et chantal le 20/05/2011 à 21:21
Modifié par martine et chantal le 20/05/2011 à 21:21
problème du nombre de lettres RESOLU ! :
code HTML:
<form action="formulaire.php" method="post">
<input type='text' name='nb_user' size=10 maxlength=2 value=''>
<input type="submit" value="Envoyer">
</form>
code PHP:
<?php
$mots = array('pirate','voile','bateau','canon');
//déclaration de la variable $nb_user qui vient du formulaire
$nb_user = htmlentities ($_POST['nb_user'], ENT_QUOTES);
for($i=0;$i<sizeof($mots);$i++)
{
$nb_lettre = strlen($mots[$i]); //nombre de lettre dans $mots[0] [1] ...
if ($nb_lettre == $nb_user)
{
echo $mots[$i].'<br>'; //affichage du mot si $nb_lettre = nb_user
}
}
?>
Par contre j'essaie de l'écrire en une page mais j'ai un bug sur la ligne:
$nb_user = $_POST['nb_user'];
Pourtant ça fonctionne...
code entier:
<body>
<?php
$mots = array('pirate','voile','bateau','canon');
// formulaire HTML
echo <<<FORM
<form method="post">
<input type="text" name="nb_user"/>
<input type="submit" value="Envoyer"/>
</form>
FORM;
//déclaration de la variable $nb_user qui vient du formulaire
$nb_user = $_POST['nb_user'];
for($i=0;$i<sizeof($mots);$i++)
{
$nb_lettre = strlen($mots[$i]); //nombre de lettre dans $mots[0] [1] ...
if ($nb_lettre == $nb_user)
{
echo $mots[$i].'<br>'; //affichage du mot si $nb_lettre = nb_user
}
}
?>
</body>
code HTML:
<form action="formulaire.php" method="post">
<input type='text' name='nb_user' size=10 maxlength=2 value=''>
<input type="submit" value="Envoyer">
</form>
code PHP:
<?php
$mots = array('pirate','voile','bateau','canon');
//déclaration de la variable $nb_user qui vient du formulaire
$nb_user = htmlentities ($_POST['nb_user'], ENT_QUOTES);
for($i=0;$i<sizeof($mots);$i++)
{
$nb_lettre = strlen($mots[$i]); //nombre de lettre dans $mots[0] [1] ...
if ($nb_lettre == $nb_user)
{
echo $mots[$i].'<br>'; //affichage du mot si $nb_lettre = nb_user
}
}
?>
Par contre j'essaie de l'écrire en une page mais j'ai un bug sur la ligne:
$nb_user = $_POST['nb_user'];
Pourtant ça fonctionne...
code entier:
<body>
<?php
$mots = array('pirate','voile','bateau','canon');
// formulaire HTML
echo <<<FORM
<form method="post">
<input type="text" name="nb_user"/>
<input type="submit" value="Envoyer"/>
</form>
FORM;
//déclaration de la variable $nb_user qui vient du formulaire
$nb_user = $_POST['nb_user'];
for($i=0;$i<sizeof($mots);$i++)
{
$nb_lettre = strlen($mots[$i]); //nombre de lettre dans $mots[0] [1] ...
if ($nb_lettre == $nb_user)
{
echo $mots[$i].'<br>'; //affichage du mot si $nb_lettre = nb_user
}
}
?>
</body>
martine et chantal
Messages postés
485
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
4 juin 2013
4
Modifié par martine et chantal le 21/05/2011 à 13:20
Modifié par martine et chantal le 21/05/2011 à 13:20
NOMBRE DE LETTRES DEFINITIVEMENT RESOLU : il me suffisait d'appeler la page index.php
et d'écrire action="index.php".
l'erreur sur la ligne demandais l'existence (ou non) de 'nb_user' grâce à cette ligne :
if (isset($_POST['nb_user'])) // Si la variable existe
CODE:
<form action="index.php" method="post">
<input type='text' name='nb_user' size=10 maxlength=2 value='' />
<input type="submit" value="Envoyer" />
</form>
<?php
$mots = array('pirate','voile','bateau','canon');
//tu peux la déclarer comme ca, de cette facon lors du 1er chargement il n'y a pas d'envoi de variable donc pas d'éxecution de script:
if (isset($_POST['nb_user'])) // Si la variable existe:
{
$nb_user = htmlentities ($_POST['nb_user'], ENT_QUOTES); //empeche le langage html et les apostrophes par sécurité
for($i=0;$i<sizeof($mots);$i++)
{
$nb_lettre = strlen($mots[$i]); //nombre de lettre dans $mots[0] [1] ...
if ($nb_lettre == $nb_user)
{
echo $mots[$i].'<br />'; //affichage du mot si $nb_lettre = nb_user
}
}
}
?>
et d'écrire action="index.php".
l'erreur sur la ligne demandais l'existence (ou non) de 'nb_user' grâce à cette ligne :
if (isset($_POST['nb_user'])) // Si la variable existe
CODE:
<form action="index.php" method="post">
<input type='text' name='nb_user' size=10 maxlength=2 value='' />
<input type="submit" value="Envoyer" />
</form>
<?php
$mots = array('pirate','voile','bateau','canon');
//tu peux la déclarer comme ca, de cette facon lors du 1er chargement il n'y a pas d'envoi de variable donc pas d'éxecution de script:
if (isset($_POST['nb_user'])) // Si la variable existe:
{
$nb_user = htmlentities ($_POST['nb_user'], ENT_QUOTES); //empeche le langage html et les apostrophes par sécurité
for($i=0;$i<sizeof($mots);$i++)
{
$nb_lettre = strlen($mots[$i]); //nombre de lettre dans $mots[0] [1] ...
if ($nb_lettre == $nb_user)
{
echo $mots[$i].'<br />'; //affichage du mot si $nb_lettre = nb_user
}
}
}
?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
martine et chantal
Messages postés
485
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
4 juin 2013
4
21 mai 2011 à 20:14
21 mai 2011 à 20:14
message adressé à tout le monde:
Je me consacre désormais à la recherche des mots du tabeau qui contiennent les lettres du ($_POST['lettres_user']).
Le soucis majeur, c'est que l'utilisateur doit pouvoir trouver des mots du tableau en postant seulement quelques lettres et dans le désordre !
J'ai pensé à 2 solutions. Qu'en pensez-vous ?
SOLUTION 1/
je cherche à écrire une expression régulière qui correspond à :
chaîne qui contient un "a", un "b" ET un "c"
C'est ceci qui m'a donné l'idée mais le "ou" me dérange :
"[abc]": chaîne qui contient un "a", un "b", ou un "c"
"(a|b)*": chaîne qui contient une suite de "a" ou de "b"
"abc{2}": chaîne qui contient "ab" suivie de deux "c"
Peut-être ai-je mal compris et le "ou" correspond à un "et"
manque à résoudre le problème d'occurence des lettre (peut-être avec "[a{n}]")
Si c'est possible je continu dans cette direction.
SOLUTION 2/
Si ce n'est pas possible,
je pense qu'il va falloir:
1.découper la chaîne ($_POST['lettres_user']) en caractères.
2.placer les caractères dans un tableau
3.comparer les tableaux 1 et 2 par l'occurence des caractères
neoprog67 pense à une 3ème SOLUTION/
mettre les mots du tableau et de ($_POST['lettres_user']) dans l'ordre alphabétique.
Seulement j'ai peur que ça ne fonctionne pas :
si je poste "arn" la recherche se fera avec "anr"
le mot "canard" ne sortira pas car il s'écrira "aacdnr"
Je me consacre désormais à la recherche des mots du tabeau qui contiennent les lettres du ($_POST['lettres_user']).
Le soucis majeur, c'est que l'utilisateur doit pouvoir trouver des mots du tableau en postant seulement quelques lettres et dans le désordre !
J'ai pensé à 2 solutions. Qu'en pensez-vous ?
SOLUTION 1/
je cherche à écrire une expression régulière qui correspond à :
chaîne qui contient un "a", un "b" ET un "c"
C'est ceci qui m'a donné l'idée mais le "ou" me dérange :
"[abc]": chaîne qui contient un "a", un "b", ou un "c"
"(a|b)*": chaîne qui contient une suite de "a" ou de "b"
"abc{2}": chaîne qui contient "ab" suivie de deux "c"
Peut-être ai-je mal compris et le "ou" correspond à un "et"
manque à résoudre le problème d'occurence des lettre (peut-être avec "[a{n}]")
Si c'est possible je continu dans cette direction.
SOLUTION 2/
Si ce n'est pas possible,
je pense qu'il va falloir:
1.découper la chaîne ($_POST['lettres_user']) en caractères.
2.placer les caractères dans un tableau
3.comparer les tableaux 1 et 2 par l'occurence des caractères
neoprog67 pense à une 3ème SOLUTION/
mettre les mots du tableau et de ($_POST['lettres_user']) dans l'ordre alphabétique.
Seulement j'ai peur que ça ne fonctionne pas :
si je poste "arn" la recherche se fera avec "anr"
le mot "canard" ne sortira pas car il s'écrira "aacdnr"
martine et chantal
Messages postés
485
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
4 juin 2013
4
22 mai 2011 à 17:37
22 mai 2011 à 17:37
HEY HEY HEY !!!
J'ai réussi à écrire ceci :
<?php
$POST_lettres_user = "ate";
$mots = array('pirate','voile','bateau','canon');
foreach (count_chars($POST_lettres_user, 1) as $i => $val) {
echo "Il y a $val occurence(s) de \"" , chr($i) , "\" dans " , $POST_lettres_user , "<br>";
}
echo "<br>","<br>";
foreach (count_chars($mots[0], 1) as $i => $val) {
echo "Il y a $val occurence(s) de \"" , chr($i) , "\" dans " , $mots[0] , "<br>";
}
?>
ça retourne :
Il y a 1 occurence(s) de "a" dans ate
Il y a 1 occurence(s) de "e" dans ate
Il y a 1 occurence(s) de "t" dans ate
Il y a 1 occurence(s) de "a" dans pirate
Il y a 1 occurence(s) de "e" dans pirate
Il y a 1 occurence(s) de "i" dans pirate
Il y a 1 occurence(s) de "p" dans pirate
Il y a 1 occurence(s) de "r" dans pirate
Il y a 1 occurence(s) de "t" dans pirate
Il ne me manque plus qu'à comparer "$POST_lettres_user" et "$mots[$i]" avec une condition "if" !
J'ai réussi à écrire ceci :
<?php
$POST_lettres_user = "ate";
$mots = array('pirate','voile','bateau','canon');
foreach (count_chars($POST_lettres_user, 1) as $i => $val) {
echo "Il y a $val occurence(s) de \"" , chr($i) , "\" dans " , $POST_lettres_user , "<br>";
}
echo "<br>","<br>";
foreach (count_chars($mots[0], 1) as $i => $val) {
echo "Il y a $val occurence(s) de \"" , chr($i) , "\" dans " , $mots[0] , "<br>";
}
?>
ça retourne :
Il y a 1 occurence(s) de "a" dans ate
Il y a 1 occurence(s) de "e" dans ate
Il y a 1 occurence(s) de "t" dans ate
Il y a 1 occurence(s) de "a" dans pirate
Il y a 1 occurence(s) de "e" dans pirate
Il y a 1 occurence(s) de "i" dans pirate
Il y a 1 occurence(s) de "p" dans pirate
Il y a 1 occurence(s) de "r" dans pirate
Il y a 1 occurence(s) de "t" dans pirate
Il ne me manque plus qu'à comparer "$POST_lettres_user" et "$mots[$i]" avec une condition "if" !
martine et chantal
Messages postés
485
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
4 juin 2013
4
Modifié par martine et chantal le 22/05/2011 à 20:40
Modifié par martine et chantal le 22/05/2011 à 20:40
Voilà où j'en suis :
Code PHP :
<body>
<form action="test.php" method="post">
<input type='text' name='lettres_user' size=10 value='' />
<input type="submit" value="Envoyer" />
</form>
<?php
$mots = array('pirate','voile','bateau','canon');
if (isset($_POST['lettres_user']))//si quelque chose est posté
{
$lettres_user = htmlentities ($_POST['lettres_user'], ENT_QUOTES);
for($i=0;$i<sizeof($mots);$i++){//pour tous les mots du tableaux
foreach (count_chars($_POST['lettres_user'], 1) as $a => $val_user){//rechercher occurence des lettres de lettres_user
foreach (count_chars($mots[$i], 1) as $b => $val_mots){//rechercher occurence des lettres des mots
if ( ($val_mots == $val_user) && ( chr($b) == chr($a) ) ){//condition d'égalité des recherches
echo $mots[$i].'<br />';
}}}}}
?>
</body>
si je poste "v" , ça retourne bien "voile"
si je poste "p" , ça retourne bien "pirate"
si je poste "b" , ça retourne bien "bateau"
si je poste "i" , ça retourne bien "voile" et "pirate"
si je poste "aa" , ça retourne bien "bateau"
mais...
si je poste "oi" , ça retourne "pirate" "voile" "voile" "canon"
si je poste "pitr" , ça retourne "pirate" "pirate" "pirate" "pirate" "voile" "bateau"
là ! je pige pas !???
Code PHP :
<body>
<form action="test.php" method="post">
<input type='text' name='lettres_user' size=10 value='' />
<input type="submit" value="Envoyer" />
</form>
<?php
$mots = array('pirate','voile','bateau','canon');
if (isset($_POST['lettres_user']))//si quelque chose est posté
{
$lettres_user = htmlentities ($_POST['lettres_user'], ENT_QUOTES);
for($i=0;$i<sizeof($mots);$i++){//pour tous les mots du tableaux
foreach (count_chars($_POST['lettres_user'], 1) as $a => $val_user){//rechercher occurence des lettres de lettres_user
foreach (count_chars($mots[$i], 1) as $b => $val_mots){//rechercher occurence des lettres des mots
if ( ($val_mots == $val_user) && ( chr($b) == chr($a) ) ){//condition d'égalité des recherches
echo $mots[$i].'<br />';
}}}}}
?>
</body>
si je poste "v" , ça retourne bien "voile"
si je poste "p" , ça retourne bien "pirate"
si je poste "b" , ça retourne bien "bateau"
si je poste "i" , ça retourne bien "voile" et "pirate"
si je poste "aa" , ça retourne bien "bateau"
mais...
si je poste "oi" , ça retourne "pirate" "voile" "voile" "canon"
si je poste "pitr" , ça retourne "pirate" "pirate" "pirate" "pirate" "voile" "bateau"
là ! je pige pas !???
Modifié par martine et chantal le 7/05/2011 à 04:36
J'aurais dû être plus explicite. Je cherche à créer un tableau avec les cadres "suite de lettres" ET "nombre de lettres" ... et seulement en mode "recherche dans le désordre"
mais merci tout de même... ta réponse m'a permis de me pencher un peu plus dans le PHP.
7 mai 2011 à 06:06
j'ai finis par comprendre comment fonctionne ton code m^me si certains éléments m'échappent.
comme if (($index=strpos($mot,$_POST['recherche']))!==false)
si je comprends bien c'est là qu'intervient la recherche à partir d'une lettre ou +.
cependant je ne comprends pas l'utilité de !==false
Il reste 2 évolutions à faire dans ce code pour arriver à mon but final :
_faire en sorte qu'on puisse trouver un mot à partir de plusieurs lettres dans le désordre (ex: pour le moment s'il on tape "niech", le mot "chien" n'est pas trouvé)
_intégrer un 2ème critère à la recherche : le nombre de lettre
Modifié par martine et chantal le 7/05/2011 à 17:58
J'ai trouvé la fonction strlen pour le nombre de lettres mais je peine à l'intégrer dans le code.
Voilà exactement la page que j'aimerai avoir : http://rawars.info/