Exploité la derniere modification sur l'affichage de prix

Invité
Invité n'ayant pas de compte PHPfrance

04 mai 2005, 11:07

bonjour,
J'ai une base de donnée avec des produits et des prix.

Comment puis-je faire pour que dés lors qu'un prix est changé, il puisse etre remarqué afin que je puisse trier la base par date de derniere modification de prix ?

je suis dans unflou partiel

j'ai pensé à la fonction DATE mais le champs reste par défaut 00 00 0000

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

04 mai 2005, 12:34

Il faut ajouter un champ 'date_modification' de type datetime dans la table des produits et le mettre à jour dès que le prix d'un produit change.

Pratiquement : quand tu change le prix d'un produit, tu fait une requête UPDATE qui met le nouveau prix dans le champ 'prix' et la date du jour dans le champ 'date_modification'.

ça peut être un truc comme ça :
....
$date_jour = date("y/m/d");
$sql ="UPDATE Produit SET prix = $nouveau_prix , date_modification = '$date_jour' WHERE ref_produit = $ref_produit";
...
En suite, tu peux faire ton tri... comme :

Code : Tout sélectionner

SELECT * from produit ORDER BY date_modification DESC
tu vois
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

04 mai 2005, 12:48

si le champ "date_modification" suggéré par sadeq est de type Timestamp, il sera automatiquement mis à jour lors de la requête UPDATE

Invité
Invité n'ayant pas de compte PHPfrance

04 mai 2005, 13:02

merci je vais essayer

ViPHP
pjl
ViPHP | 2119 Messages

04 mai 2005, 13:05

oui mais s'il change un libéllé par exemple et non un prix, la valeur du timestamp changera aussi.
j'ai pensé à la fonction DATE mais le champs reste par défaut 00 00 0000
Par défaut, le format est YYYY-MM-DD donc ca donnera 0000 00 00.

Invité
Invité n'ayant pas de compte PHPfrance

04 mai 2005, 13:22

Super ca marche bien,

$date_jour = date("y/m/d");
$sql ="UPDATE produits SET prix,marque,designation = $nouveau_prix , dateproduit = '$date_jour' WHERE id = $id";

A placer avant

$stmt = db_query($req)

Et en effet, il faut utiliser
timestamp

pour que la base SQL se mette à jour

Invité
Invité n'ayant pas de compte PHPfrance

04 mai 2005, 13:22

Merci beaucoup

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

04 mai 2005, 13:37

oui mais s'il change un libéllé par exemple et non un prix, la valeur du timestamp changera aussi.
c'est vrai, pardon.

ViPHP
pjl
ViPHP | 2119 Messages

04 mai 2005, 13:46

oui mais s'il change un libéllé par exemple et non un prix, la valeur du timestamp changera aussi.
c'est vrai, pardon.
c'est simplement une précision à apporter, ensuite tout dépend de la structure de sa table.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

04 mai 2005, 13:49

oui, moi je n'ai pas réfléchi plus loin que ça tu fais bien de le préciser :)

Invité
Invité n'ayant pas de compte PHPfrance

04 mai 2005, 14:38

non justement ce qui est bien avec le datestamp

c'est que l'on choisi les libélé à faire changé par la date.

Moi en ce qui me concerne c'était le prix, mais dés lors que j'ai vu que ca fonctionnais alors j'ai intégré

$sql ="UPDATE produits SET prix,marque,designation = $nouveau_prix , dateproduit = '$date_jour' WHERE id = $id";

Mais si tu veux uniquement avoir la date de derniere modif du prix
alors dans ce cas

$sql ="UPDATE produits SET prix = $nouveau_prix , dateproduit = '$date_jour' WHERE id = $id";

je le sais grace à vous