Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1764 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Requete selon criteres

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requete selon criteres

n°2071929
pipo83
Posté le 25-04-2011 à 21:18:38  profilanswer
 

Bonjour,
 
J'ai un site ou mes client peuvent créer des alertes et dès qu'un produit correspondant à leurs critères est déposé, ils reçoivent un email.
 
La table qui stocke les alertes est composée de cette façon:
 
id categorie_id couleur_id taille_id
1       0                  5           2
2       0                  5           0
 
 
 
Je souhaite que lors du dépôt d'un nouveau produit par un client, une requête soit lancée pour sélectionner toutes les entrées qui correspondent aux critères du produit déposé (couleur, taille, catégorie, etc..)
 
Un petit exemple sera plus parlant:
 
Un client dépose un objet dans la catégorie "chaussures", de couleur "bleu" et de taille "44"
 
Résultat = envoyer un mail aux personnes ayant créer l'alerte (j'utilise les id) : categorie = chaussure, couleur = "bleu" mais aussi à ceux qui ont juste précisé la catégorie "chaussure" et la couleur "bleu".
 
Une aide est la bienvenue car je ne vois pas comment aborder ce problème.


Message édité par pipo83 le 25-04-2011 à 21:19:56
mood
Publicité
Posté le 25-04-2011 à 21:18:38  profilanswer
 

n°2071933
Pascal le ​nain
Posté le 25-04-2011 à 21:41:25  profilanswer
 

Il te faut une table qui stocke les souhaits déposés par les utilisateurs.
 

id  |  user_id  |  categorie  |  couleur  |   taille
----------------------------------------------------


 
Des qu'un utilisateur dépose un objet, tu fais une requête dans la table des souhaits, et tu regardes quels utilisateurs ont fait un souhait qui peut correspondre.
 
SELECT email
FROM users
INNER JOIN souhaits ON user.id = souhaits.user_id
WHERE categorie = $categorie  
OR couleur = $couleur  
OR taille = $taille
 
Apres tu peux bidouiller et combiner les conditions du WHERE pour affiner.


Message édité par Pascal le nain le 25-04-2011 à 21:43:46
n°2071935
pipo83
Posté le 25-04-2011 à 21:51:09  profilanswer
 

Merci Pascal pour ta réponse, mais mon problème est autre.
 
Je vais essayer de passer par un exemple pour etre plus clair:
 
Un vendeur crée un article dans la categorie chaussure, de couleur bleu et de taille 44.
J'ai donc :  
categorie = chaussure
couleur = bleu
taille = 44
 
Je cherche donc a sélectionner toutes les entrées (de ma table alertes) dont les 3 correpondent aux parametres plus haut, mais aussi ceux qui n'ont renseigné que la categorie par exemple.
 

n°2071945
Pascal le ​nain
Posté le 25-04-2011 à 22:36:15  profilanswer
 

A quoi correspond ta table alertes ? Puisque tu envoies des emails, il est inutile de les stocker dans une base...

n°2071946
pipo83
Posté le 25-04-2011 à 22:52:33  profilanswer
 

Je les stocke dans une table car un client peut créer ou consulter des alertes dans son compte client.
 
Ma table alertes est composée de cette façon :
 
id  |   categorie_id    |   couleur_id   |  taille_id
1              2                      5                  2
2              0                      5                  0
3              5                      0                  0
 
Donc si le nouvel article déposé contient les paramètres suivants:
categorie = 5, couleur = 5, taille = 2
 
Alors:
Enregistrement 1 = pas de mail (condition des 3 params non remplie)
Enregistrement 2 = envoi mail (car couleur = 5)
Enregistrement 3 =  envoi mail (car categorie = 5)

n°2071997
Pascal le ​nain
Posté le 26-04-2011 à 11:10:26  profilanswer
 

Dans ce cas c'est deux tables qu'il te faut.
Il te faut la table que j'ai citee plus haut, et une table pour stocker les alertes. Simplement, en plus d'envoyer un email tu ajoutes une entree a ta base "alertes".
 
Je verrai plutot la table alerte ainsi :
 

id   |   user_id    |   product_id
----------------------------------


 
Ainsi, quand un nouveau produit est ajouté, on cherche dans la table des souhaits quels utilisateurs peuvent être intéressés.
Pour les utilisateurs qui s'avèrent intéressés, tu ajoutes une entrée dans ta table d'alertes.
Ainsi, quand l'utilisateur se connectera, il te suffira d'afficher les enregistrements dont le champs user_id lui correspond.
 
SELECT nom, photo, lien, etc
FROM produit
INNER JOIN alertes ON alertes.product_id = produit.id
WHERE alertes.user_id = $id
GROUP BY produit.id


Message édité par Pascal le nain le 26-04-2011 à 11:16:19

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Requete selon criteres

 

Sujets relatifs
Problème avec une requete GROUP BY[RESOLU] problème requete SQL 2008
[SQL][Resolu] requete imbriqué[php] Envoyer resultat requete plusieurs ligne par mail
Galère requete MySQL[RESOLU]Requete SQL d'indicatifs chaud patate
Requête Access : plus gros montants et "Autres"Transformer une formule text en un chiffre dans une requete SQL
Requete SQL multi criteresRequete MSQUERY dans Excel, prb de critères
Plus de sujets relatifs à : Requete selon criteres


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR