Requete de recherche

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 : Requete de recherche

Re: Requete de recherche

par guigui69 » 26 avr. 2010, 09:22

Merci pour ta réponse. Ma base j'enregistre les informations d'une gestion de document.

les personnes à travers un formulaire renseigne des informations sur le document enregistré.
exemple:
titre= titre_id,
client= client_idr,
produit= produit_idr,
information= com_id
(id à la fin du mot à une autre signification)

Et lors d'une recherche une personne recherche la "recette 10" qui correspond à la recette du produit 10. Mais le mot recette est dans le champ information et 10 dans le champ produit.

Merci

guigui69

Re: Requete de recherche

par ouckileou » 23 avr. 2010, 22:51

    AND (titre_id LIKE '%recette%' OR com_id LIKE  '%recette%' OR code_id LIKE  '%recette%' )
    AND (titre_id LIKE '%10%' OR com_id LIKE  '%10%' OR code_id LIKE  '%10%' )
Et ça correspond à quoi ce 10 ?
Généralement quand il y a gens qui veulent chercher des informations hétérogènes, sur n (n>2) colonnes différentes, on découvre un problème de modélisation de la base de données. Tu peux nous expliquer à quoi correspondent les termes de recherches et dans quoi tu veux chercher (je vois "titre_id" comme nom de colonne, j'en déduis que c'est un id donc a priori une clé comme les autres or on cherche "recette", sur les trois... ça m'intrigue)

Re: Requete de recherche

par guigui69 » 23 avr. 2010, 21:50

Je suis bien d'accord, ma requette fonctionne mais comment dire "pas super".

Si je lui demande de rechercher "recette 10" il me retourne 0 car le mot "recette" & "10" sont dans 2 champs différents dans ma base.
titre_id|com_id|version_id|etc...
recette|10|

Je ne sais pas comment faire et comment mettre ma requette pour qu'il recherche cette ensemble de mot "recette 10"
SELECT DISTINCT dg.id_id, titre_id, com_id, version_id, chemin_id, document_id, nom_type, nom_gamme, nom_sgamme,  DATE_FORMAT(date_id,'%d/%m/%Y')  AS date_id
                FROM document_ged dg
                INNER JOIN type t ON t.id_type=dg.id_type
                INNER JOIN gamme g ON g.id_gamme=dg.id_gamme
                INNER JOIN sgamme sg ON sg.id_sgamme=dg.id_sgamme
                INNER JOIN voir_ged vg ON dg.id_id=vg.id_id
                INNER JOIN groupe_user gu ON vg.id_groupe_user=gu.id_groupe_user
                INNER JOIN user_groupe_user ugu ON gu.id_groupe_user=ugu.id_groupe_user
                WHERE ugu.id_user='1'
                AND dg.id_societe='1'
                AND archive_id='0'
                AND (titre_id LIKE '%recette 10%' OR com_id LIKE  '%recette 10%' OR code_id LIKE  '%recette 10%' )
                AND date_id BETWEEN STR_TO_DATE('01/01/2005','%d/%m/%Y') AND STR_TO_DATE('31/12/2018','%d/%m/%Y')
                ORDER BY nom_type, nom_gamme, nom_sgamme";

Merci

guigui69

Re: Requete de recherche

par ouckileou » 23 avr. 2010, 14:30

Tu sembles tester ton SQL à travers PHP, pas pratique pour créer une requête.

Fais un echo du SQL généré, et exéute-le directement via phpMyAdmin, tu verras si tu as des erreurs et ce sera plus facile pour débugguer. Et c'est ce code que tu dois nous fournir, nous ne savons pas ce qu'il y a dans les variables utilisées.

Tout ces remarques sont dans ce post-it que j'aimerais que tu lises : http://www.phpfrance.com/forums/voir_sujet-19378.php

Requete de recherche

par guigui69 » 23 avr. 2010, 12:41

Bonjour à tous,

j'ai une base de donnée mysql, et mes utilisateurs à travers un champ input font une recherche (ex: recette 10)

hors dans ma requette,
SELECT DISTINCT dg.id_id, titre_id, com_id, version_id, chemin_id, document_id, nom_type, nom_gamme, nom_sgamme, DATE_FORMAT(date_id,'%d/%m/%Y') as date_id 
		FROM document_ged dg 
		INNER JOIN type t ON t.id_type=dg.id_type
		INNER JOIN gamme g ON g.id_gamme=dg.id_gamme
		INNER JOIN sgamme sg ON sg.id_sgamme=dg.id_sgamme
		INNER JOIN voir_ged vg ON dg.id_id=vg.id_id
		INNER JOIN groupe_user gu ON vg.id_groupe_user=gu.id_groupe_user
		INNER JOIN user_groupe_user ugu ON gu.id_groupe_user=ugu.id_groupe_user
		WHERE ugu.id_user='".$_SESSION['id_user']."'
		AND dg.id_societe='".valid_data($_POST["societe"])."'
		AND archive_id='".valid_data($_POST["archiver"])."'
		AND (titre_id LIKE '%".utf8_decode(valid_data($_POST["information"]))."%' OR com_id LIKE '%".utf8_decode(valid_data($_POST["information"]))."%' OR code_id LIKE '%".utf8_decode(valid_data($_POST["information"]))."%')
		AND date_id BETWEEN STR_TO_DATE('".valid_data($_POST["datea"])."','%d/%m/%Y') AND STR_TO_DATE('".valid_data($_POST["dateb"])."','%d/%m/%Y')
		ORDER BY nom_type, nom_gamme, nom_sgamme";
de la manière dont elle est faite il ne repère rien car, il y a bien recette dans le champ com_id et 10 dans le champ titre_id mais pas dans le même champs.

Comment me conseillez-vous de réaliser une requete sql pour réaliser une recherche? Quel erreur est-je commis?

Merci

guigui69