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

ladj59 Messages postés 322 Statut Membre -  
Enax Messages postés 204 Statut Membre -
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 204 Statut Membre 145
 
0
ladj59 Messages postés 322 Statut Membre 3
 
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 5220 Date d'inscription   Statut Contributeur Dernière intervention   1 336
 
Merci de faire l'effort de te faire comprendre par tous. Le language texto, on en a marre.
0
Alain_42 Messages postés 5413 Statut Membre 894
 
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 Statut Membre 3
 
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 204 Statut Membre 145
 
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 Statut Membre 3
 
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 5413 Statut Membre 894
 
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 Statut Membre 3
 
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 Statut Membre 3
 
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 457 Statut Membre 114
 
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 Statut Membre 3
 
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 457 Statut Membre 114
 
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 204 Statut Membre 145
 
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