begin process at 2012 05 31 08:58:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Divers

 > 

recherche d'un mot dans une liste


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

recherche d'un mot dans une liste

samedi 14 mai 2011 à 23:27:19 | recherche d'un mot dans une liste

woodish

Bonjour,
je suis absolument débutant en PHP mais je m'arrache les cheveux pour aboutir à mon projet.

J'ai créé un forum pour les membres d'une alliance d'un jeu de pirate.
Dans ce jeu il existe une chasse au trésors : on y récolte des lettres et un nombre qui est le nombre de lettres du mot à trouver.

Je tente de créer une page en PHP.
le but étant de faciliter la recherche des membres de mon alliance grâce à une liste de mots déjà trouvés.

Alors ça fait un moment que je tente plusieurs code mais pfffffff quelle prise de tête.

J'ai tout d'abord pensé à créer un tableau :
$mots = array('pirate','voile','bateau','canon');

pour la recherche du membre il me semble qu'il faut :
echo <<<FORM
<form method="post">
<input type="text" name="recherche"/>
<input type="submit"/>
</form>
FORM;

1ère question que je me pose avant même de créer le contenu essentiel, je ne sais pas si pour la recherche du nombre de lettre je peux réutiliser le même <form method="post">
le type="text" concerne réellement que le texte ou les utilsateurs pourront y insérer un chiffre (je sais, c'est une question d'ultra débutant :))

pour le contenu je me suis penché sur les conditions avec "if"
cette structure me paraît intéressante, non ?
if ((condition1)$$(condition2)) {}
else{}

Pour le nombre de lettre je tente d'utiliser "strlen". Je trouve pleins d'exemples sur le net mais je peine à le mettre en pratique pour mon cas.
Comment chercher le nombre de lettres de chaque élément d'un array ?

Avant de continuer plus loin j'aimerais connaître votre avis. Est-ce que je fais fausse route dans un 1er temps ?
lundi 16 mai 2011 à 17:04:24 | Re : recherche d'un mot dans une liste

mailliam

Tcho,

J'ai pas testé mais ca me paraît pas faux avec strlen, genre:

Code PHP :
$mots = array('pirate','voile','bateau','canon'); 
echo $mots[0]; //affiche pirate

$nb_lettre = strlen($mots[0]); //affiche le nb de lettre du mot 'pirate' donc 6

puis tu affiche la liste des mots trouvés ainsi que les nb de lettres:
echo 'mot: '.$mots[0].' avec '.$nb_lettre.' lettre(s)'; //affiche "mot: pirate avec 6 lettre(s)"

et tu fais une boucle while pour afficher tout le tablo array
mercredi 18 mai 2011 à 23:21:22 | Re : recherche d'un mot dans une liste

woodish

Merci !
Seulement cette méthode n'affichera t-elle pas tout les éléments du tableau ?
Je souhaite que les utilisateurs demande d'afficher les mots du tableau qui ont un certain nombre de lettres.
Imaginons que l'utilisateur poste le chiffre 4.

J'ai trouvé cette boucle 'for' qui affiche tous les éléments du tableau :
<?php
$mots = array('pirate','voile','bateau','canon');

for($i=0;$i<sizeof($mots);$i++)
{
echo $mots[$i].'<br>';
}
?>

Comment afficher seulement les éléments de 4 caractères ?
J'aimerai intégrer dans ce code: "$post" qui sera le nombre de lettres désiré.
jeudi 19 mai 2011 à 15:15:51 | Re : recherche d'un mot dans une liste

mailliam

Réponse acceptée !
Tcho, dslé du temps de réponse,

Alors le formulaire .html qui demande le nombre de lettre:
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> 


puis la page formulaire.php, où tu n'as qu'à mettre une condition IF:

Code PHP :
<?php
//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) //$nb_user = 4 dans ton exemple
 {
 echo $mots[$i].'<br>'; //affichage du mot si $nb_lettre = nb_user
 }
}
?>


Bon j'y mets comme cela, j'ai rien testé..
A++

vendredi 20 mai 2011 à 18:51:52 | Re : recherche d'un mot dans une liste

woodish

TU - ES - UN - CHEF !
MERCI BEAUCOUP !

J'avais écris des lignes similaires en utilisant "if"
mais je déclarais ( $nb_lettre = strlen($mots[$i]); ) avant la boucle "for"
Je ne comprends pas vraiment pourquoi ça ne marche pas en le déclarant avant ?
Mais bon dans tous les cas ton code fonctionne !

J'aimerai résoudre un détail avant de continuer.
Lorsqu'on poste un chiffre et qu'on envoie, on passe de la page .html à la page .php
Du coup, le formulaire de recherche disparaît.
J'ai coller l'html dans la page .php au dessus du code <?php
grâce à cela le formulaire reste actif tout le temps.

Mais lorsque je supprime la page .html, la page .php ne fonctionne plus.
Question bête :
l'html étant dans la page .php, à quoi sert la page .html ?
vendredi 20 mai 2011 à 20:29:49 | Re : recherche d'un mot dans une liste

woodish

J'ai réécris de la sorte. Ca fonctionne mais il y a tt de même un message d'erreur de départ sur cette ligne :
$nb_user = htmlentities ($_POST['nb_user'], ENT_QUOTES);
Après avoir valider, le message d'erreur disparaît

Code PHP :
<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 = 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) //$nb_user = 4 dans ton exemple
 {
 echo $mots[$i].'<br>'; //affichage du mot si $nb_lettre = nb_user
 }
}

?>

</body>
vendredi 20 mai 2011 à 20:57:18 | Re : recherche d'un mot dans une liste

mailliam

Réponse acceptée !
Re,

oui tu peux tout à fait faire qu'un seul fichier.php et mettre le code html dans ta page php.
Disons que ta page s'appelle index.php ton formulaire devra renvoyer la variable $nb_user sur la même page (index.php)

par contre je pense que ton erreur se produit car tu déclare une variable ($nb_user) qui n'a pas été envoyée par le formulaire lors du 1er chargement..

ca donnerait qque chose comme ca pour ta page index.php

Code PHP :
<html><body>
<?php
//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) //$nb_user = 4 dans ton exemple
 {
 echo $mots[$i].'<br />'; //affichage du mot si $nb_lettre = nb_user
 }
}

}
?>

<br /><br />
<form action="index.php" method="post">
<input type='text' name='nb_user' size=10 maxlength=2 value='' />
<input type="submit" value="Envoyer" />
</form> 
</body></html>


Là il ne doit plus y avoir d'erreur, dis moi au cas où, car je n'ai rien testé..
Bonne prog!
vendredi 20 mai 2011 à 21:03:29 | Re : recherche d'un mot dans une liste

mailliam

ahh encore un truc, regarde sur le site du zéro qui vraiment bien pour commencer (www.siteduzero.com) pour connaître la structure des fichiers
Code HTML :
<html>
<head>
<title>XXX</title>
</head>
<body>

ton code html

<?php
echo 'ton code php';
?>

ton code html

<?php
echo 'ton code php';
?>

...

</body></html>


c'est que la base, y a bcp de chose qu'on peut ajouter
vendredi 20 mai 2011 à 22:51:45 | Re : recherche d'un mot dans une liste

woodish

yes ! ça marche. Il manque juste le tableau array dans le code.

Le : if (isset($_POST['nb_user'])) // Si la variable existe

me paraît logique. mais fallait y penser.

Pour le site du zéro...c'est par là que j'ai commencé.
Mais j'ai besoin de refaire un tour et commencer à me faire des fiches !

Je posterai certainement des questions par la suite.
Mais avant tout il faut que j'essaie tout seul.
Je pense que je vais perdre encore des cheuveux ce soir.

Merci beaucoup Mailliam
samedi 21 mai 2011 à 20:06:41 | Re : recherche d'un mot dans une liste

woodish

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" ("abcc"

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


1 2

Cette discussion est classée dans : nombre, mot, recherche, liste, lettres


Répondre à ce message

Sujets en rapport avec ce message

Moteur de Recherche [ par MAsterC ] Salut à tous,je suis en train de développé un moteur de recherche, puis il me manque seulement la "recherche par mot clé" c'est à dire que... si je ma Ajouter la troncature dans un moteur de recherche [ par baboun ] Bonjour, je viens crier au secours.Je tente d'insérer un système de troncature dans mon moteur de recherche php sur base de donnée MySQL.(Sans vouloir Comment rechercher un mot dans une chaine de caractères ? [ par Drazounet ] Bonjours à tous,Je suis en train de programmer un forum en php et maintenant je suis en train de lui ajouter une section "recherche" afin de trouver p ecrire le nombre de fois qu 'un mot apparait [ par ivanooze20003 ] le bois ne rends pas les coups. Bruce Lee Liste avec recherche incrémentale [ par killgunblood ] Bonjour,Voici mon soucis, et je ne sais pas comment faire . J'ai une liste déroulante dans laquelle j'ai des données émanant d'une base SQL. Je voudra Liste déroulante et aide à la décision [ par skmancuso ] Bonjour,J'ai créé un formulaire avec une liste déroulante de type combobox. La combobox se remplit avec des valeurs se trouvant dans une base de donné moteur de recherche [ par cobrachris ] bonjour à tous,J'ai un petit problème sur un moteur de recherche que j'ai trouvé sur le site. J'ai modifier les champs dans lesquels faire la recherch recherche par mot dans fichier [ par justone72 ] Bonjour,J'ai besoin assez rapidemnt d'un script qui permet de faire une recherche dans un dossier (recherche de fichiers dans le dossier + sous dossie Probleme avec une liste deroulante [ par sabou94 ] Bonjour, voila mon probleme : j'ai une liste déroulante avec dedans un liste de 5chiffres. (1,2,3,4,5). En dessous, j'ai un textarea avec "nombre de Problème avec un soit disant moteur de recherche lol [ par gssk ] Au fait j'ai fait un "moteur de recherche" (code pourrave je le sais merci !!), et je n'ai que d erreur de variables indéfini! tels que Mot,idM,nomM e


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,998 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales