Recupération de valur d'une table dans une autre

Philippe92600
Invité n'ayant pas de compte PHPfrance

15 mars 2015, 15:13

Bonjour,
j'ai une table qui se trouve dans une base. Je voudrais récupérer certain champs en temps réel ou du moins toutes les X minutes par un cron job.
J'arrive à récupérer l'intégralité en lançant mon fichier php ( à 00:05 je récupère tout de la veille) mais comment récupere à chque fois les nouvelles infos.
merci
Philippe

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

15 mars 2015, 15:46

salut,

il te faut un discriminant pour limiter la requete.
donc soit en garder la dernière clef primaire la plus élevée, soit en utilisant un champs date indiquant la création.

en clair avec une clef primaire nommée id
select les,colonnes, from latable where id > xxxx
où xxx est le plus id récupérée la fois précédente. (il peux être stockée dans un fichier une base etc.).
Faiblesse de la méthode : on ne récupère que les nouvelles infos et pas celle qui sont modifiées.

Avec des colonnes "d'audit" il est possible de récupérer les colonnes ajoutées et celles modifiées.
Généralement il y a un champs timestamp pour l'instant de création et un pour les mise à jour.
ensuite le select est fait sur les timestamp supérieure à la date de dernière récupération (autant pour la création que la mise à jour).
Pourquoi un timestamp ? parce que c'est le seul type sql normé qui permet de la faire. (sinon un champ date et un champ time).
Suivant les SGBD il existe des "variantes". par exemple pour oracle le champs date contient date et heure, pour mysql il existe le type datetime.
Postgresql ne proposera que timestamp mais permet d'utiliser un literral pour l'affectation (en clair 2015-03-15 14:45:00 est utilisable (cf doc).

avec la structure de ta table il nous serait possible de te fournir un information plus concrète que les principes que je viens d'énonce ;)

@+
Il en faut peu pour être heureux ......