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 :

montrer le nombre d'articles restant à vendre


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 468
    Points : 5 826
    Points
    5 826
    Billets dans le blog
    1
    Par défaut montrer le nombre d'articles restant à vendre
    Bonjour,

    je dois réaliser une application qui affiche la quantité d'articles restant à vendre pour chaque article. Pour faire ça, j'ai créé une table MySQL du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    article varchar(30)
    nb_article tinyint(4)
    Ensuite, j'ai créé une page qui permet de sélectionner les articles que l'on veut acheter (article.php):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $sql='select article from articles';
    $sql = stripslashes($sql);
    $result = mysql_query($sql) or die(mysql_error());
    echo "Articles &agrave; acheter :<br>";
    echo '<form action="demandearticle.php" method="post" enctype="application\/x-www-form-urlencoded">';
    while($ligne = mysql_fetch_array($result, MYSQL_NUM)) {
    echo ' <input type="checkbox" name="article[]" value="'.$ligne[0].'"/>'.$ligne[0]."<br>";
     }
    echo "<center><input name=\"submit\" value=\"Ex&eacute;cuter\" type=\"submit\"></center>"; 
    echo "</form>";
    et une page qui met à jour la table (demandearticle.php)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $sql='select article,nb_article from articles';
    $sql = stripslashes($sql);
    $result = mysql_query($sql) or die(mysql_error());
    echo "<br>";
    while($ligne = mysql_fetch_array($result, MYSQL_NUM)) {
    if (isset($_POST["article"][$i++])) {
    	$sql="UPDATE articles SET nb_article = nb_article -1;";
    	$result1 = mysql_query($sql)or die(mysql_error());}
    	}
    $sql='select article,nb_article from articles';
    $sql = stripslashes($sql);
    $result = mysql_query($sql) or die(mysql_error());	
    while($ligne = mysql_fetch_array($result, MYSQL_NUM))
    echo "Pour l'article ".$ligne[0]." le nb d'articles restants est : ".$ligne[1]."<br>";
    Le problème, c'est que ça marche super mal : si on ne coche qu'un seul article, il ne se passe rien ; par contre, si on en coche 2 (pour tester, j'ai mis 3 articles dans la table), les 3 sont décrémentés (comme si on les achetait tous). Qu'est-ce qui ne va pas ?

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Plusieurs questions pour te faire avancer.

    - Comment identifies-tu les différentes article
    - Que tu décrémentes, comment Mysql sait quel article décrémenté.
    - qaunt tu fais ton post, pourquoi ne pas modifier la base avent de l'afficher plutôt que de faire une boucle.


    Une piste pour t'aider, il manque un id dans ta table

  3. #3
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    C'est la gestion du panier, du caddie que tu est en train de faire.
    Il te faut une table "panier", qui elle aura au minimum 3 champs :
    "panier"
    ID de la personne (client_id)
    ID du produit (article_id ou produit_id)
    nb_article (nombre d'article ou de produit commandé)
    (On peu rajouter la date d'ajout de chaque produit)

    Il te faut quelque chose à part, de spécifique, ça me semble impossible de faire sans.

    Cependant, cette gestion via la Bdd n'est possible QUE si la personne s'est identifiée (donc ayant un compte client), chose qui ne peut être garanti, ou assez restrictive.
    Du coup, il faut donner la possibilité à un visiteur (donc pas encore identifié) de pouvoir mettre des articles dans son panier, et c'est au niveau des session qu'il faudra le faire, et non dans la Bdd.
    Un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $_SESSION['panier']['article_id'] = $article_id;
    $_SESSION['panier']['nb_article'] = $nb_article;

    En admettant que ça ne soit pas du e-commerce ou de la vente en ligne, il te faut quand même quelque chose à part qui stockerait les élément désirés et leur quantité par rapport aux éléments existants, donc session ou/et Bdd.
    Enfin, il me semble.


    Au bout, suffit de faire une soustraction entre la quantité en stock (quantité de l'article dans la table article) et la quantité désirée du même article (table panier ou/et session panier).

  4. #4
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 468
    Points : 5 826
    Points
    5 826
    Billets dans le blog
    1
    Par défaut
    Mais pourquoi faudrait-il stocker les données de l'acheteur dans une session ? J'avais juste imaginé de faire un formulaire, et en fonction de ce qu'il veut acheter, mettre à jour la table "articles"...

  5. #5
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Mais pourquoi faudrait-il stocker les données de l'acheteur dans une session ? J'avais juste imaginé de faire un formulaire, et en fonction de ce qu'il veut acheter, mettre à jour la table "articles"...
    Comment fais tu pour savoir qui achète ?
    En d'autre terme, tu as 2 visiteurs au même moment par exemple, les 2 sélectionnent 1 produit.
    Quel produit appartient à l'un et à l'autre, et dans quelle quantité ?

    Toujours dans l'éventualité que c'est du commerce en ligne, et bien on ne décrémente pas son stock alors que le client n'en ai qu'à remplir son panier.
    On décrémente lorsque la personne aura commandée, payée.
    Et encore ...

    En somme, entre "vouloir acheter" et "acheter", c'est pas pareil.

  6. #6
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 468
    Points : 5 826
    Points
    5 826
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    En somme, entre "vouloir acheter" et "acheter", c'est pas pareil.
    Tout-à-fait d'accord, mais si l'acheteur se déconnecte après avoir exprimé son intention d'acheter, les données en session seront perdues...Et d'autre part, comment savoir que les articles sont vraiment achetés ? A mon avis, ça sera au vendeur de le signaler, et dans ce cas, pourquoi ne pas faire pour lui un formulaire (protégé par mot de passe) avec lequel il pourrait spécifier les articles vendus, et après mettre à jour la table "articles" ?

  7. #7
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    S'il s'agit bien de commerce en ligne (faudrait au moins de confirmer ou pas), en tout cas il sera impossible de te décrire comment ça se réalise, tant les choses sont loin d'être évidentes, voir complexes selon les besoins.

    En tout cas, tu ne répond pas à une question qui me semble essentiel : Comment désigne tu 1 personne parmi d'autres ?
    Qui est en train d'acheter ?

    mais si l'acheteur se déconnecte après avoir exprimé son intention d'acheter, les données en session seront perdues
    Oui et non, ça dépend, et il faut d'ailleurs répondre à la question précédente.

    - Si tu as un mécanisme d'identification (compte client) et que la personne s'identifie, alors tu pourras stocker le panier dans la Bdd.
    Mais dans ta Bdd, il faut désigner la personne : Un ID quoi.
    Car rien ne dit que la personne va acheter à l'instant même. Il faut pouvoir récupérer le panier de cette personne le jour où elle reviendra.

    - Si la personne ne s'identifie pas, le panier sera perdu.
    Et là, il y a rien à faire, tu vas tout de même obliger une personne à commander tout de même. De tout manière, c'est impossible, heureusement.

    Et d'autre part, comment savoir que les articles sont vraiment achetés ?
    Quand il aura payé.
    Qui dit payer, dit transaction, non ? Donc la banque, ou autre Paypal le signalera, du moins, tout organisme digne de ce nom.


    A mon avis, ça sera au vendeur de le signaler, et dans ce cas, pourquoi ne pas faire pour lui un formulaire (protégé par mot de passe) avec lequel il pourrait spécifier les articles vendus, et après mettre à jour la table "articles" ?
    Ca, c'est à toi de voir, et ça dépend pour beaucoup de la politique de la boite qui vend, et surtout de sa gestion de stock.

    S'il y a 10 personnes qui commande le même produit dans le même jour par exemple (on peu même aller dans la même heure), faut être certain de pouvoir livrer les produits dans les quantités commandées.
    Donc décrémenter manuellement, après la vente peu dans certain cas être la grosse tuile ... pas assez de produits en stock.

    Bref ... c'est la problématique de tout commerces en ligne : La gestion du stock.

    Dans tous les cas, décrémenter la quantité en stock lorsqu'il s'agit que du panier, c'est 100% casse gueule.
    Soit on décrémente au moment de la vente, soit manuellement après (mais pas avant).

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 468
    Points : 5 826
    Points
    5 826
    Billets dans le blog
    1
    Par défaut
    Tu poses des questions auxquelles je n'avais même pas pensées. Est-ce du commerce en ligne ? Je n'en sais rien, n'étant pas le vendeur : en fait, j'essaie de rendre service à quelqu'un qui a besoin de ça ; je vais donc lui demander plus de précisions.

    Citation Envoyé par RunCodePhp Voir le message
    Et là, il y a rien à faire, tu vas tout de même obliger une personne à commander tout de même. De tout manière, c'est impossible, heureusement.
    Et si le PC de l'acheteur plante à ce moment-là, il faut envoyer la police

  9. #9
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    en fait, j'essaie de rendre service à quelqu'un qui a besoin de ça ; je vais donc lui demander plus de précisions.
    Tu fais comme tu le sent, mais ça me semble préférable, car tu touche sa Bdd, son code tout de même. Au bout, rien ne dit que ça sera un bon service.

    Et si le PC de l'acheteur plante à ce moment-là, il faut envoyer la police
    C'est ce qui s'appelle la "force de vente", non ?

  10. #10
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 468
    Points : 5 826
    Points
    5 826
    Billets dans le blog
    1
    Par défaut
    Tu fais comme tu le sent, mais ça me semble préférable, car tu touche sa Bdd, son code tout de même.
    Mon idée était de développer ça sur un compte séparé, et de lui permettre d'intégrer ça via une iframe... Mais ça veut dire qu'il ne pourrait pas gérer les articles, pas même les lire, ce qui doit être un peu central (même si je n'en sais pas plus que ça).

  11. #11
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Je ne peux pas te répondre, j'ai aucune idée de quelle application il s'agit, et apparemment toi aussi.
    C'est l'inconnue ...

    Pour ma part, je ne vois pas comment on peu programmer un truc dont on ne sait même pas de quoi il s'agit.

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

Discussions similaires

  1. Calculer le nombre de jours restant suivant un évènement précis
    Par Olivier Regnier dans le forum Langage
    Réponses: 11
    Dernier message: 14/04/2008, 14h20
  2. [dé]compter le nombre de caractères restants sur une saisie
    Par akara dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/09/2007, 15h36
  3. [MySQL] Nombre d'articles par année
    Par Topheur dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/05/2007, 09h35
  4. nombre d'article dans mon panier
    Par sam01 dans le forum Langage
    Réponses: 1
    Dernier message: 26/07/2006, 19h50
  5. Calculer le nombre de jours restants
    Par localhost dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 27/01/2006, 17h31

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