Gérer si il y a plusierus mots ds un champs

Fermé
ladj59 Messages postés 322 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 29 décembre 2008 - 12 févr. 2008 à 12:59
Enax Messages postés 203 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 16 mars 2010 - 13 févr. 2008 à 14:07
Bonjour,
j'ai fait un formulaire et pour le cahmps mots_clé il peut y avoir plusieurs mots dans le mm champs .
or avec mon code cela ne marche ke kan il y un mot
comment faire pour ke si je tape plusieurs mots_clé(ds le mm champs) kan je fé recherché par mots clé il gére bien le pb...
merrci
A voir également:

14 réponses

Enax Messages postés 203 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 16 mars 2010 145
12 févr. 2008 à 13:30
0
ladj59 Messages postés 322 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 29 décembre 2008 3
12 févr. 2008 à 18:34
oue ms g deja $donnees['mots_clé']==$_POST['mots_clé'])) dc mots clé é deja ds la ( donc comment diférencié lé diférents mots clé ki sont ds la bdd $donnees['mots_clé']==$_POST['mots_clé'][1] $donnees['mots_clé']==$_POST['mots_clé'][2]???

moi fodré un truc ki fasse si un des mots clé kje tape se trouve ds la bdd(ds le champs mots clé) alors il mafiche la ligne corespondante


car en fait ds ce ke g actuellement si je mé atomes et fisike comem motrs clé pour lui ca fé ke "un mot"

jvoi pa tro avec explode coment faire

merci de votre aide
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334
12 févr. 2008 à 18:38
Merci de faire l'effort de te faire comprendre par tous. Le language texto, on en a marre.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
12 févr. 2008 à 18:39
Commence par relire la charte de CCM:

"Rédiger les messages dans un langage clair sans abréviations, style télégraphique ou mode SMS."

C'est écrit juste à droite !

Ton post est pénible à lire.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ladj59 Messages postés 322 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 29 décembre 2008 3
12 févr. 2008 à 18:43
oui mais j'ai deja $donnees['mots_clé']==$_POST['mots_clé'])) donc mots clé est déja dans la parenthése donc comment diférencier les

différents mots clé qui sont dans la bdd $donnees['mots_clé']==$_POST['mots_clé'][1] $donnees['mots_clé']==$_POST['mots_clé'][2]???

moi il me faudrait un truc qui fasse :si un des mots clé que je tape se trouve dans la bdd(dans le champs mots clé) alors il mafiche la ligne correspondante


car en fait dans le cas que j'ai actuellement ,si je met atomes et fisike comme mots clé pour lui ca fé que "un mot"

donc je ne vois pas trop avec explode coment faire

merci de votre aide5 message(s) posté(s) depuis le lundi 11 février 2008

désolé pour mon langage
0
Enax Messages postés 203 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 16 mars 2010 145
12 févr. 2008 à 19:08
Tu précises dans ton formulaire de séparer les mots par un caractère précis (espace, plus, slash...).

Tu exploses la chaîne en fonction du séparateur :
$mots_cle = explode('+', $_POST['mots_clé']);

Puis tu fais ta recherche avec les éléments de l'array.
0
ladj59 Messages postés 322 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 29 décembre 2008 3
12 févr. 2008 à 19:15
j'ai un souci en effet quand j'utilise la fonction explode dans mo ncode cela m'affiche a chaque fois tous les mots_clé qui sont en 1ére position dans le champs mot_clé de ma base de données.
Or je voudrais qu'il m'affiche tous les mots de chaque "case" du champs mots clé
exemple actuellement dans la bdd il y a :- ligne 1 il y a atomes physique comme mots clé
-ligne 2 il y a sciences silicium

actuellement avec mon code ca maffiche quand je mets $pieces[0] : atomes sciences
actuellement avec mon code ca maffiche quand je mets $pieces[1] :physique silicium

moi je voudrais que ca m'affiche atomes sciences pour $pieces[0] et physique silicium pour $pieces[1]

mon code actuel :
<?php

mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("physique"); // Sélection de la base coursphp

$reponse = mysql_query("SELECT * FROM base_physique"); // Requête SQL

while ($donnees = mysql_fetch_array($reponse))
{

$pieces = explode(" ", $donnees['mots_clé']);

echo $pieces[0];
echo $pieces[1];
?>
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
12 févr. 2008 à 20:36
Bonsoir,

Normal tu ne fais pas ta requette avec des criteres

$reponse = mysql_query("SELECT * FROM base_physique"); // Requête SQL

il faut:

$pieces = explode(" ", $_POST['mots_cles']); 

for($i=0;$i<sizeof($pieces);$i++){
    $reponse = mysql_query("SELECT * FROM base_physique WHERE champ_mots_cles='".$pieces[$i]."'"); // Requête SQL
    while ($donnees = mysql_fetch_array($reponse)){

            echo $donnees['champ_mots_cles']."<br>";
   }
}
0
ladj59 Messages postés 322 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 29 décembre 2008 3
12 févr. 2008 à 21:00
j'ai testé ton code alain et il n'y a rien qui s'affiche...je ne sais pas pourquoi
le code:
<?php

mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("physique"); // Sélection de la base coursphp

$pieces = explode(" ", $_POST['mots_clé']);

for($i=0;$i<sizeof($pieces);$i++)
{
$reponse = mysql_query("SELECT * FROM base_physique WHERE mots_clé='".$pieces[$i]."'"); // Requête SQL
while ($donnees = mysql_fetch_array($reponse))
{

echo $donnees['mots_clé']."<br>";
}
}
?>
<?php
mysql_close();
?>
0
ladj59 Messages postés 322 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 29 décembre 2008 3
13 févr. 2008 à 07:52
re,
si quelqu'un pouvait me renseigner sur mon probléme ce serait cool car je suis un peu en galérre la ....
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
13 févr. 2008 à 08:54
C'est normal :

1. mot-clé n'est pas un bom nom de colonne mysql, utilise plutôt motClef
2. si cette colonne motClef contient "physique silicium", il est normal qu'un SELECT avec WHERE motClef = "physique" ne trouve pas l'enregistrement correspondant : utilise plutôt WHERE motClef like '%physique%'
3. le fait de générer un SELECT par mot-clef de recherche n'est pas bon : utilise plutôt WHERE motClef like '%physique%' OR motClef like '%chimie%' etc...

Lit la doc php/mysql, réflechis, expérimente...
0
ladj59 Messages postés 322 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 29 décembre 2008 3
13 févr. 2008 à 13:31
je suis d'accord avec toi...cependant je n'arrive toujours pas a resudre mon probléme...
En effet, il faudrait que quand je tape un mot clé dans ma case recherche il regarde tous les mots clé qui sont dans la base de données sachant que dans chaque case de la base de données peut conteni un ou plusieurs mots clé donc quand il n'a a qu'un mot ca marche normalement mais quand il y en a plusieurs je n'arrive toujours pas à gérer le cas...
SVP de l'aide
jr'ai essayé pas mal de choses mais en vain....
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
13 févr. 2008 à 13:38
Essaye ce que je te suggère dans mon message et que je te rappelle :

1. changer le nom de colonne de ta table en nomClef (mots_clé ne peut pas marher)

2. essaye de changer ta clause WHERE en WHERE motClef like '%physique%' (je te laisse le soin d'adapter ton code PHP en conséquence)

Lorsque ça marchera, essaye 3 pour avoir une sctructure de programme meilleure.

Bon courage, "c'est en forgeant qu'on devient forgeron"
0
Enax Messages postés 203 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 16 mars 2010 145
13 févr. 2008 à 14:07
Le principe est plutôt simple et on t'a donné tous les éléments :

1° Tu isoles chacun des mots entrés dans ton formulaire de recherche avec explode(),
2° Tu cherches les lignes de ta table qui contiennent l'un de ces mots avec la méthode fournie par croy,
3° Tu traites la réponse à ta requête SQL.
0