8791 sujets
Hello,
Je ne comprends pas très bien ce que tu veux. En SQL, il y a plusieurs opérateurs afin de rechercher tes données avec plus ou moins de précisions. Tu as une instruction qui pourrait t'aider entres autres, c'est LIKE. Ce qui donne ceci :
Cela veut dire : Sélectionne moi tous les champs de la table « uneTable » si dans le champ « unChamp », il y a le motif Ren.
++
Je ne comprends pas très bien ce que tu veux. En SQL, il y a plusieurs opérateurs afin de rechercher tes données avec plus ou moins de précisions. Tu as une instruction qui pourrait t'aider entres autres, c'est LIKE. Ce qui donne ceci :
SELECT * FROM uneTable WHERE unChamp LIKE ('%Ren%')
Cela veut dire : Sélectionne moi tous les champs de la table « uneTable » si dans le champ « unChamp », il y a le motif Ren.
++
Salut,
Tu as la solution d'utiliser une RegEx. Cependant, j'ai l'impression que le champ que tu souhaites interroger n'est pas aux normes (données atomiques) et donc cette table n'est pas aux normes. Je peux toutefois me tromper. Je pense à ce genre de choses :
couleur = 'bleu, vert, marron, ... '
Il y a néanmoins la possibilité que ton champ soit par exemple un synopsis. Dans cet esprit, tu peux utiliser un RegEx afin de récupérer les enregistrements :
Peux tu mettre sur le forum un enregistrement de ta BDD afin que je comprenne mieux ce que tu désires.
++
Tu as la solution d'utiliser une RegEx. Cependant, j'ai l'impression que le champ que tu souhaites interroger n'est pas aux normes (données atomiques) et donc cette table n'est pas aux normes. Je peux toutefois me tromper. Je pense à ce genre de choses :
couleur = 'bleu, vert, marron, ... '
Il y a néanmoins la possibilité que ton champ soit par exemple un synopsis. Dans cet esprit, tu peux utiliser un RegEx afin de récupérer les enregistrements :
SELECT * FROM uneTable WHERE unChamp REGEXP 'Il était une fois | princesse | prince charmant | sorcière'
Peux tu mettre sur le forum un enregistrement de ta BDD afin que je comprenne mieux ce que tu désires.
++
bonjour
veuillez trouver l'image de la base de donnée
et j'ai fais mon code qui permet tester par $_post mais il ne marche pas je ne sais pas pourqoui il ne connait pas la le nom de chmps de test
veuillez trouver l'image de la base de donnée

et j'ai fais mon code qui permet tester par $_post mais il ne marche pas je ne sais pas pourqoui il ne connait pas la le nom de chmps de test
<?php
echo'<div id="divzonerecherche">
<form id="form1" name="form1" method="post" action="searchauto.php">
<p class="fontbold">Recherche une fiche par mot clès :
<input name="vrecherche" type="text" value="" class="divtexte" />
<input name="butrech" type="submit" value="valider" class="divbutton"/><p>
</form>
</div>';
if(empty($_POST["vrecherche"]))
{
$i=0;
$connect = mysql_connect('localhost','root','') or die ("erreur de connexion");
mysql_select_db('base',$connect) or die ("erreur de connexion base");
setlocale (LC_ALL, 'fr_FR');
$result = mysql_query("SELECT *,DATE_FORMAT(date_creation, '%d %m %Y') AS datecreation,DATE_FORMAT(date_miseajour, '%d %m %Y') AS datemise from fiche") ;
$mois = array("01"=>"Janvier","02"=>"Février","03"=>"Mars","04"=>"Avril","05"=>"Mai","06"=>"Juin","07"=>"juillet","08"=>"Août","09"=>"Septembre","10"=>"Octobre","11"=>"Novembre","12"=>"Décembre");
while ($row = mysql_fetch_array($result)){
if($i %2 == 0)
$bgcolor = "#969696";
else
$bgcolor = "#D5D5D5";
list($day,$month,$year) = explode(" ", $row["datecreation"]);
list($day,$month,$year) = explode(" ", $row["datemise"]);
$row["datecreation"] = $day .' '. $mois[$month] .' '. $year;
$row["datemise"] = $day .' '. $mois[$month] .' '. $year;
echo'<div class="information" style="background-color:'.$bgcolor.'">
<p><h4>Titre de document :'.$row["Nom_fiche"].'<span class="dateac"> Date de creation:'.$row["datecreation"].'</span></h4></p>
<p class="dateac"> Date de mise à jour : '.$row["datecreation"].'</p>
<p>'.$row["Commentaire"].'</p>
<p><a href="'.$row["liendoc"].'" Target="_blank">Voir le document</a>
</div>';
$i++;
}
mysql_close();
}
else
$i=0;
$connect = mysql_connect('localhost','root','') or die ("erreur de connexion");
mysql_select_db('base',$connect) or die ("erreur de connexion base");
setlocale (LC_ALL, 'fr_FR');
$text=$_POST['vrecherche'];
$result = mysql_query("SELECT *,DATE_FORMAT(date_creation, '%d %m %Y') AS datecreation,DATE_FORMAT(date_miseajour, '%d %m %Y') AS datemise from fiche where Nom_fiche LIKE '%".$text."%' or Commentaire LIKE '%".$text."%'") ;
$mois = array("01"=>"Janvier","02"=>"Février","03"=>"Mars","04"=>"Avril","05"=>"Mai","06"=>"Juin","07"=>"juillet","08"=>"Août","09"=>"Septembre","10"=>"Octobre","11"=>"Novembre","12"=>"Décembre");
while ($row = mysql_fetch_array($result)){
if($i %2 == 0)
$bgcolor = "#969696";
else
$bgcolor = "#D5D5D5";
list($day,$month,$year) = explode(" ", $row["datecreation"]);
list($day,$month,$year) = explode(" ", $row["datemise"]);
$row["datecreation"] = $day .' '. $mois[$month] .' '. $year;
$row["datemise"] = $day .' '. $mois[$month] .' '. $year;
echo'<div class="information" style="background-color:'.$bgcolor.'">
<p><h4>Titre de document :'.$row["Nom_fiche"].'<span class="dateac"> Date de creation:'.$row["datecreation"].'</span></h4></p>
<p class="dateac"> Date de mise à jour : '.$row["datecreation"].'</p>
<p>'.$row["Commentaire"].'</p>
<p><a href="'.$row["liendoc"].'" Target="_blank">Voir le document</a>
</div>';
$i++;
}
mysql_close();
?>
Si tu veux faire une recherche sur le champ commentaire, je peux te proposer d'essayer ceci :
Ce qui revient à dire, cherche une/des fiche(s) où il y a comme données dans le champ commentaire le mot mai et le handicap.
En espérant t'avoir aidé,
Bonne journée.
$sql = "SELECT unChamp, unAutreChamp ";
$sql .= "FROM maTable ";
$sql .= "WHERE commentaires LIKE ('%mai%') ";
$sql .= "AND commentaires LIKE ('%handicap%')";
Ce qui revient à dire, cherche une/des fiche(s) où il y a comme données dans le champ commentaire le mot mai et le handicap.
En espérant t'avoir aidé,
Bonne journée.

eagle83 a écrit :
...
premier mot et aprés la deuxieme???
Pas nécessairement. Tu peux faire une RegEx voir même une autre manière (explode) sur la saisie du champ text et retirer les différents mots entrés par l'utilisateur. Une fois retirés, implémenter une requête sql dynamique.
Modifié par Nolem (04 Aug 2009 - 18:00)
Salut,
tu as un exemple dans ce post (si tu veux que la recherche ne rapporte que les enregistrements qui ont tous les mots il faut changer OR par AND).
tu as un exemple dans ce post (si tu veux que la recherche ne rapporte que les enregistrements qui ont tous les mots il faut changer OR par AND).
merci pour vos aides
mais ce que me dérange est ce qu'il avait une possibilité de sélectionner ou bien colorer les mots recherchées dans les résultats
2 est ce que cette méthode de recherche est utile pour les caractère comme(é,à...)parce que il est remplacé dans les enregistrement par par exemple(é>é)
merci Heyoan et Nolem pour vos aides
mais ce que me dérange est ce qu'il avait une possibilité de sélectionner ou bien colorer les mots recherchées dans les résultats
2 est ce que cette méthode de recherche est utile pour les caractère comme(é,à...)parce que il est remplacé dans les enregistrement par par exemple(é>é)
merci Heyoan et Nolem pour vos aides
Hello Heyoan,
En lisant attentivement ton code, je vois que tu n'utilises pas l'instruction « AS ». Je ne connaissais pas cette forme d'écriture. Est ce qu'il y a des restrictions ou une/des règle(s) suivant cette forme d'écriture ?
Bonne journée à toi
Modifié par Nolem (05 Aug 2009 - 13:38)

heyoan a écrit :
...
FROM article a, tag t, article_tag at
...
En lisant attentivement ton code, je vois que tu n'utilises pas l'instruction « AS ». Je ne connaissais pas cette forme d'écriture. Est ce qu'il y a des restrictions ou une/des règle(s) suivant cette forme d'écriture ?
Bonne journée à toi

Modifié par Nolem (05 Aug 2009 - 13:38)
eagle83 a écrit :Oui : il faut apprendre les regexp...
il avait une possibilité de sélectionner ou bien colorer les mots recherchées dans les résultats
eagle83 a écrit :Non : c'est l'un des intérêts à ne pas utiliser htmlspecialchars ou htmlentities sur des variables avant de les insérer en base.
est ce que cette méthode de recherche est utile pour les caractère comme(é,à...)parce que il est remplacé dans les enregistrement par par exemple(é>é)
bonjour en fait j'ai trouver mes erreurs !!maintenant il fonctionne bien
mon problème c'est qu'elle est l regex qui me permet de colorer un mot dans la résultat de la recherche???
$connect = mysql_connect('localhost','root','') or die ("erreur de connexion");
mysql_select_db('base',$connect) or die ("erreur de connexion base");
setlocale (LC_ALL, 'fr_FR');
if (!isset($_POST['vrecherche']) || empty($_POST['vrecherche']))
{
$requete = "SELECT *, DATE_FORMAT(date_creation, '%d %m %Y') AS datecreation, DATE_FORMAT(date_miseajour, '%d %m %Y') AS datemise from fiche";
}
else
{
$text = $_POST['vrecherche'];
$requete = "SELECT *, DATE_FORMAT(date_creation, '%d %m %Y') AS datecreation, DATE_FORMAT(date_miseajour, '%d %m %Y') AS datemise from fiche where Nom_fiche LIKE '%".$text."%' or Commentaire LIKE '%".$text."%'";
}
$result = mysql_query($requete) or die ('Erreur sur '.$requete.'<br/>'.mysql_error());
$mois = array("01"=>"Janvier","02"=>"Février","03"=>"Mars","04"=>"Avril","05"=>"Mai","06"=>"Juin","07"=>"juillet","08"=>"Août","09"=>"Septembre","10"=>"Octobre","11"=>"Novembre","12"=>"Décembre");
$i=0;
while ($row = mysql_fetch_array($result)){
if($i %2 == 0)
$bgcolor = "#969696";
else
$bgcolor = "#D5D5D5";
list($day,$month,$year) = explode(" ", $row["datecreation"]);
$datecreation = $day .' '. $mois[$month] .' '. $year;
list($day,$month,$year) = explode(" ", $row["datemise"]);
$datemise = $day .' '. $mois[$month] .' '. $year;
echo '<div class="information" style="background-color:'.$bgcolor.'">';
echo '<p><h4>Titre de document :'.$row["Nom_fiche"].'<span class="dateac"> Date de creation:'.$datecreation.'</span></h4></p>';
echo '<p class="dateac"> Date de mise à jour : '.$datemise.'</p>
<p>'.$row["Commentaire"].'</p>
<p><a href="'.$row["liendoc"].'" Target="_blank">Voir le document</a></p>';
echo '</div>';
$i++;
}
mysql_close();
?>
mon problème c'est qu'elle est l regex qui me permet de colorer un mot dans la résultat de la recherche???