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

Langage PHP Discussion :

Appliquer une promotion seulement sur certains articles


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 215
    Points : 170
    Points
    170
    Par défaut Appliquer une promotion seulement sur certains articles
    Bonjour,

    Je suis en train de créer un système de vente en ligne (c'est fait).
    Et dessus je souhaite gérer des code promotions. (c'est fait aussi).

    Voici les champs de ma table de promotion:

    id (pour attribuer tout simplement un numéro d'id a la promo)
    nom (bah son nom...)
    desc (sa description)
    key (son code, par exemple : NOEL24)
    taux (son taux de remise, par exemple 20%)
    start (la date à laquelle la remise commence)
    end (la date à laquelle la remise finit)
    etat (son état : désactivé ou activé).
    Tout marche superbement pour le moment.
    Le seul hic c'est que je voudrais que le code promo ne fonctionne que sur certains produit.

    Comment je dois faire au niveau de ma table promotion ?
    Est-ce que je dois rajouter un champ "products" dans lequel il y aurai tout les produits concernés (c'est ce que je pense la meilleur solution), mais comment remplir un champ d'une table avec plusieurs valeurs ?

    Par exemple si j'ai 5 produits est-ce que j'ai le droit de mettre comme valeur de champ products : 2, 5, 45, 6, 76 ? (séparé par des virgules, ou pas? ect...)

    Je ne pense pas non... alors que faire?
    Merci à vous.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu ajoutes une table de liaison entre produit et promotion :
    tl_promotion_produit
    id
    promo_id
    produit_id

    Avec un couple promo_id - produit_id en unique.

    Ne pas oublier de gérer ensuite correctement les evenements entre les tables : si un produit devait etre supprimé de la table produit, il faudrait egalement supprimer les promotions correspondantes.

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 215
    Points : 170
    Points
    170
    Par défaut
    Sa m'a l'air intéressant, est-ce que tu peux expliquer ca un peu plus en détails s'il te plait?

    Y'a des termes que je comprend pas trop...
    "couple promo_id - produit_id en unique."

    Et puis, tu pourrais me montrer un exemple ? (sans coder quoi que ce soit, juste avec des mots).

    merci.

    EDIT :
    En faite je creer une table qui se nommera "liaison_produit_promo"
    Dedans il y aurait 3 champs : "id", "produit_id", "promo_id".

    Exemple je créer une promotion dans ma table promo, cette promotion aurait par exemple l'id numero 6. Et je voudrais que cette promo numero 6 s'applique au produit 48, 23 et 21.
    Alors je creer 3 entrées dans ma table "liaison_produit_promo"

    id |produit_id |promo_id
    ------------------------
    ? |48_______|6______
    ? |23_______|6______
    ? |21_______|6______

    Mais que mettre dans le champ id de liaison_produit_promo ?

    Enfin y'a quelque chose que je doit pas avoir compris....

  4. #4
    Membre expérimenté
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Points : 1 316
    Points
    1 316
    Billets dans le blog
    1
    Par défaut
    Yop!


    Mais que mettre dans le champ id de liaison_produit_promo ?
    Ce champ doit être de type auto_increment, donc tu ne t'en occupes pas. A la limite, tu pourrais t'en passer, mais c'est souvent utile d'avoir un auto_increment quand tu dois faire référence à une ligne en particulier (pour l'éditer, la supprimer, etc...)

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 215
    Points : 170
    Points
    170
    Par défaut
    Ok très bien.
    J'ai juste un autre soucis maintenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	// est-ce que cette promotion concerne ce produit ?
    	$query=mysql_query("SELECT `id_product` FROM `link` WHERE `promo`='".$_SESSION["promo"]."' AND `id_product`='".$donnees['id']."' ") or die("Erreur lors de l'exécution de la requête.<br />\nMySQL a retourné :<br />\n". mysql_error()) ; 
    	$result=mysql_fetch_object($query); 	
    	if ( (($result->id_product) == 0) OR (($result->id_product) == $id) ) 
    	{
    	// On applique la promo.				
    	}											
    	elseif (!isset($result->id_product)) { echo "Produit non concerné";}

    Ma verification consiste a aller dans ma table de liaison voir si le produit en question existe, ou pas.

    Dans le dans ou il existe tout se passe bien, mais quand il est pas present j'ai un jolie message d'erreur. Celui-ci :

    Notice: Trying to get property of non-object in C:\Program Files\EasyPHP 2.0b1\www\..............monfichier.php on line 101
    Et la ligne 101 fait reference à cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	if ( (($result->id_product) == 0) OR (($result->id_product) == $id) )
    Que faire ? Merci.

  6. #6
    Membre expérimenté
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Points : 1 316
    Points
    1 316
    Billets dans le blog
    1
    Par défaut
    Yop!

    Il faudrait peut-être d'abord vérifier s'il a quelque chose dans $query avant d'appliquer la fonction mysql_fetch_object().

    Du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if (mysql_num_rows($query) > 0)
    {
      $result=mysql_fetch_object($query);
      .......
    }
    else
    {
      echo "y a que dalle!";
    }

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 215
    Points : 170
    Points
    170
    Par défaut
    C'est parfait sa marche. Voici le code modifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	// est-ce que cette promotion concerne ce produit ?
    	$query=mysql_query("SELECT `id_product` FROM `link` WHERE `promo`='".$_SESSION["promo"]."' AND `id_product`='".$donnees['id']."' ") or die("Erreur lors de l'exécution de la requête.<br />\nMySQL a retourné :<br />\n". mysql_error()) ; 
    	$result=mysql_fetch_object($query); 	
    	if ( (mysql_num_rows($query) > 0) AND ((($result->id_product) == 0) OR (($result->id_product) == $id)) ) 
    	{
    	// On applique la promo.				
    	}											
    	elseif (!isset($result->id_product)) { echo "Produit non concerné";}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appliquer une image 2D sur un nuage de points
    Par eleon_ dans le forum MATLAB
    Réponses: 6
    Dernier message: 18/04/2008, 12h47
  2. Réponses: 1
    Dernier message: 25/10/2007, 22h19
  3. Problème d’accès à une BDD Access sur certains OS !
    Par Alain33 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 25/10/2007, 21h32
  4. Réponses: 8
    Dernier message: 24/01/2007, 15h49
  5. Réponses: 5
    Dernier message: 18/09/2004, 21h30

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