IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Plusieurs tarifs sur un article


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2005
    Messages : 144
    Par défaut Plusieurs tarifs sur un article
    Bonjour, ça fait longtemps que je n'ai pas posté dans le forum PHP/MySQL de développez.net. Je pensais en avoir fini avec les galères sur ce langage, mais non.

    Bon bref, je dois afficher dans une page HTML quinze articles d'une base de données, chacun des ces articles a plusieurs tarifs (un normal, un réduit, un solde et un solde privé). Ce n'est pas forcement toujours le même sur les quinze articles si vous voyez ce que je veux dire. Par exemple, sur les quinze (15 c'est le nombre d'articles par page, que j'obtiens en faisant LIMIT X,15 à la fin de ma requête), il arrive que trois soit en soldes et les 12 autre au tarif normal.

    Chacun de ses tarifs est enregistré en base dans une table spécifique avec un ID_PROD pour le rattacher a l'article, un TYPE_TARIF (normal, soldes, etc.) et la valeur (plus d'autres infos sur l'état du tarif et ses dates de validités)

    Vous êtes bien d'accord que je ne peu pas fixer de type_tarif dans ma grosse requête puisque certains sont en soldes d'autre en tarif normal.

    Je cherche donc une solution puisque il faut qu'ensuite je récupère ces tarifs en cours pour pouvoir appliquer un classement dessus ou les marger (min et max en fonction des requêtes du client)..

    N'hésitez pas a redemander e cas de mauvaise compréhension, mais je ne peu pas non plus trop en révéler pour des raisons professionnelles

  2. #2
    Membre émérite
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Par défaut
    Si j'ai bien compris, tu peux rajouter un champ type_tarif dans la table de tes produits. Comme ça tu feras la correspondance produits-tarifs non pas uniquement sur l'id mais également sur le type du tarif. En gros, une clé double.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2005
    Messages : 144
    Par défaut
    Oui mais non, parce qu'il y a le cas des soldes privées. Ça aurait pu marcher mais certains articles ont parfois un prix réduit uniquement pour les clients concernés.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2005
    Messages : 144
    Par défaut
    En gros, il y a quatre types de tarifs :
    • VE : tarif réduit
    • SP : soldes prives
    • SO : soldes normal
    • N : tarif normal


    Il y a également un ordre de priorité sur ces tarifs. Lorsque VE existe, il est devant tout les autres, puis SP (avec en plus la condition que le client soit connecté de manière spécifique, reconnu grâce a une variable de session qui prend une valeur particulière), puis SO et enfin N qui est le tarif sans aucune réduction.

  5. #5
    Membre émérite
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Par défaut
    Et en restant sur l'idée que je t'ai suggéré, mais avec un champ contenant plusieurs clés.

    En gros, dans ton champ, t'aurais: "VE/SO"

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    Par défaut
    et avec 2 champs, (tarif et solde par exemple) c'est pas faisable ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2005
    Messages : 144
    Par défaut
    Je ne crois pas que stocker les tarifs directement dans prod soit la solution? En effet dans tout les cas, je peu toujours faire une liaison vers la table tarifs pour y accéder. Mon problème c'est comment savoir le quel choisir pour chaque article que je vais chercher via la requête.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 144
    Par défaut
    Salut,

    Si tu veux le tarif le moins cher du moment (c'est bien ça ? tu ne veux pas afficher les 3 ou 4 tarifs possibles, mais seulement le moins cher ?) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT t1.designation_article, IFNULL(t2.VE, IFNULL(t3.SP, IFNULL(t4.SO, t5.N)))
    FROM base_articles AS t1
    LEFT JOIN tarifs_reduits AS t2 ON t1.ID_PROD = t2.ID_PROD
    LEFT JOIN tarifs_SP AS t3 ON t1.ID_PROD = t3.ID_PROD AND t3.ID_CLIENT = $id_externe_client
    LEFT JOIN tarifs_SO AS t4 ON t1.ID_PROD = t4.ID_PROD
    LEFT JOIN tarifs_N AS t5 ON t1.ID_PROD = t5.ID_PROD
    LIMIT X, 15
    Remarque : une vérification du type "t3.ID_CLIENT = $id_externe_client" doit se trouver dans la condition de ta jointure et non pas dans les WHERE afin qu'elle puisse retourner un champ NULL si le client n'est pas listé dans les soldes autorisées

Discussions similaires

  1. Donnez votre avis sur les articles de Developpez.com
    Par Geronimo dans le forum C++Builder
    Réponses: 13
    Dernier message: 14/01/2007, 22h00
  2. Donnez votre avis sur les articles de Developpez
    Par Anomaly dans le forum Contribuez
    Réponses: 37
    Dernier message: 29/05/2006, 21h48
  3. Réponses: 13
    Dernier message: 25/01/2005, 10h05
  4. Réponses: 4
    Dernier message: 14/10/2004, 17h36
  5. Réponses: 4
    Dernier message: 11/09/2004, 16h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo