effectuer une recherche dans ma base

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : effectuer une recherche dans ma base

par mojorisin » 16 déc. 2008, 07:42

Bonjour,
quand tu affiches les champs via phpmyadmin et que l'entrée que tu souhaites récuperer s'affiche telle que tu nous l'as dis (ie l\'heritage) c'est sans doute que le backslashe à été doublé lors de l'enregistrement. Essais d'effectuer une recherche avec champ="l\\'heritage" pour voir si tu arrives à ressortir ton enregistrement.

par moileraz » 16 déc. 2008, 02:05

Bonjour,

Moka 2203 > J'ai testé MATCH AGAINST mais sans succès

Caroube > Le problème est que dans ma base de donnée j'ai 4 champs id, groupe, nom, prenom. Dans le champs groupe, j'ai ces informations:

Nom Prenom 1: l\'heritage,golf,spa
Nom Prenom 2: l\'heritage,boat house
Nom Prenom 3: l\'heritage,cuisine

Ce que je veut faire c'est d'afficher le nom des personnes si dans le champs groupe il y a l'héritage. Lorsque j'effectue une recherche avec LIKE j'ai aucune info qui retourne

Merci d'avance pour ton aide

par caroube » 15 déc. 2008, 12:16

@moileraz

C'est quoi le problème ? C'est le LIKE qui ne fonctionne pas ? C'est à cause de l'apostrophe ? C'est à cause des accents ? C'est quoi une donnée de type "l'heritage" ? Elle contient exactement cette chaîne ou c'est juste un extrait ?

Bref, ta question est un peu floue et donc tu remarqueras que les réponses le sont aussi.

Réponse à votre problème

par moka2203 » 15 déc. 2008, 10:57

Bonjour,

Il existe plusieurs façons pour effectuer une recherche dans une base de données, la plus correcte c'est l'indexation des champs en full text (une icone qui se trouve à droite de chaque champ créer)
et l'utilisation de MATCH... AGAINST(). Sans oublier de définir la table en MyISAM sinon ça ne fonctionne pas ( pas en InnoDB)

Cette fonction MySQL remplace LIKE '%xxxx%' et elle est plus pertinente.

Exemple :
Si tu veux rechercher un mot dans une table, habituellement, tu écris :

SELECT * FROM `table` WHERE __CHAMP__ LIKE '%__MOT__%'

Si tu as 2 mots tu complique encore plus ta requête et tu risque de ne pas avoir de résultat!

Avec MATCH AGAINST(), le probleme est résolu !

Tu écris ceci :
SELECT * FROM `table` WHERE MATCH (titre,body) AGAINST ('_MOTS_RECHERCHES_');

ICI tu recherche _MOTS_RECHERCHES_ dans "table" et qui existe dans les champs titre et body. C'est à dire que les mots peuvent ne pas exister côte à côte, mais le résultat est retourné.
Je pense que c'est la réponse à ta question.

Une autre idée, il faut pensé à créer des champs Tags pour rechercher aussi dans les tags, car il se peut qu'un article parle de quelque chose et que ce mot n'est pas évoqué dans l'enregistrement, tu ne perd pas donc de résultats!

Ce qui te reste à faire c'est de faire des tests avec ta propre table et voir ce que ça donne, n'oublies pas de te documenter encore plus à propos de la fonction MATCH AGAIST de MYSQL

par moileraz » 12 déc. 2008, 22:21

J'ai utilisé la fonction recherche. Enfait j'ai pas d'accent aigue mais meme phpMyadmin me dit qu'il n'y a pas de resulta

j'y comprend plus rien

par Invité » 12 déc. 2008, 21:38

Dans l'exemple donné, c'est peut-être simplement l'accent aigue qui manque.

Pour tester dans PhpMyAdmin, fais-tu des requêtes dans la fenêtre MYSQL ou fais-tu des recherches avec l'outil de recherche? Privilégie le second cas, tu pourras alors récupérer des requêtes toutes faites après traitement donnant de bons résultats.

effectuer une recherche dans ma base

par moileraz » 12 déc. 2008, 10:09

Bonjour,
j'utilise la version 5.0.27 de mysql.

Dans ma base j'ai un champs société qui contient une donnée de type
l\'heritage
lorsque j'effectue une requête du genre

Code : Tout sélectionner

WHERE societe LIKE '%l\'heritage%'
ou

Code : Tout sélectionner

WHERE societe="l\'heritage"
cela ne me retourne rien.

J'ai meme essayé dans phpMyadmin mais lui non plus n'arrive pas à retourner quelques choses

Merci de votre aide