2010-01-04 6 views
0

Je souhaite ajouter automatiquement la date dans le champ order_date lorsqu'un client achète ma boutique en ligne.Comment ajouter une date avec PHP/MySQL?

Quelle est la meilleure façon de le faire?

Il existe d'autres champs comme, les données de livraison et la date de paiement dans le même tableau.

Est-ce une bonne idée d'ajouter un champ caché de sorte que quand un client se présente, la date sera ajoutée?

Mais je ne suis pas sûr de savoir comment le faire.

Quelqu'un peut me suggérer la meilleure façon de le faire s'il vous plaît?

Répondre

5

Non, vous n'avez pas besoin d'un champ de formulaire masqué. Vous pouvez le faire directement dans MySQL.

En supposant que votre champ order_date est une DATE. DATETIME ou TIMESTAMP, puis dans votre SQL qui insère l'enregistrement de la commande, il suffit de mettre NOW() comme valeur pour order_date:

INSERT INTO orders (x,y,z,order_date) VALUES ('x','y','z',NOW()); 
+1

Je suis d'accord. Mettre la fonction NOW() dans votre SQL rendra ceci plus sûr et plus fiable. En utilisant un champ de formulaire masqué, les utilisateurs malveillants peuvent changer cette valeur en n'importe quoi, en exploitant potentiellement votre boutique en ligne. Ne faites jamais confiance à l'entrée de l'utilisateur: p –

+0

En outre, ne faites pas confiance à la date côté client. –

0

Dans la déclaration de mise à jour qui finalise votre dossier de commande, faire quelque chose comme ceci:

update order set ....., order_date = now() where ... 

Vous ne voulez pas compter sur la date côté client de toute façon. Il pourrait être éteint, et penser aux fuseaux horaires. Vous voulez une seule source de dates dans votre système, et cela devrait être la base de données ou la couche de code côté serveur (PHP ou autre).

0

Lorsqu'un client passe une commande, vous pouvez utiliser une colonne TIMESTAMP pour suivre quand la commande a été passée/la commande a été enregistrée dans la base de données. Quelque chose comme:

ALTER TABLE sales_order ADD COLUMN date_placed TIMESTAMP DEFAULT CURRENT_TIMESTAMP;

CURRENT_TIMESTAMP DEFAULT sera rempli avec l'heure actuelle lorsque la ligne est créée, mais pas sur les mises à jour ultérieures. Voir la documentation pour plus:

http://dev.mysql.com/doc/refman/5.0/en/timestamp.html Avec une clause DEFAULT CURRENT_TIMESTAMP

et aucune clause ON UPDATE, la colonne a l'horodatage en cours pour sa valeur par défaut, mais n'est pas automatiquement mis à jour.

+0

Um, l'OP veut stocker la date de paiement, pas la date de création. –

+0

C'est un peu ambigu - l'OP était pour enregistrer order_date à la caisse - c'est-à-dire, quand une commande est passée. – leepowers

Questions connexes