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

PHP & Base de données Discussion :

Enregistrement temporaire dans une TABLE SQL ?


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 3
    Points
    3
    Par défaut Enregistrement temporaire dans une TABLE SQL ?
    Bonsoir à tous,

    j'aimerais savoir si il existe un moyen de pouvoir creer des enregistrement qui ont une certaine durée de vie.

    Exemple j'enregistre un pseudo dans une table, et j'aimerais qu'au bout de 1h l'enregistrement s'efface automatiquement de la table..

    J'ai cherché en vain..


    Merci d'avance pour votre aide

  2. #2
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    Salut,
    D'apres moi, ce n'est pas possible.
    Par contre, tu peux créer une tache cron :
    - qui effacera ce pseudo au bout d'une heure
    - ou qui lancera un script regulierement (mettons toutes les 10 minutes) et effacera les pseudo périmés.

    Z.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    autre astuce possible

    à l'aide dun trigger ou d'un petit script à chaque nouvelle insert tu effaces tout ceux qui on plus d'une heure pour cela il te faudra un champ date

    sinon quel est ton but de stocker des champs pour une durée limité car peut etre que des variables de sessions ou autre suffisent


  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    En fait j'enregistre les produits sélectionnés par le client dans ma base sql, c'est une sorte de panier qui enregistre chaque produit sélectionné avec l'id de session du client.

    Seulement j'aimerais que les enregistrements ne durent qu'une heure chacun afin de ne pas surcharger ma BDD.

    En fait je crois que OS commerce utilise ce système car j'ai pu voir un champ " EXPIRY " dans la table "sessions" qui apparemment donne une limite de temps à ces enregistrement.


    Donc ta solution BOO64 m'intéresse, peux tu m'en dire un peu plus (je n'y connais rien aux trigger)


    Ps: je sais qu'on peut faire un système de panier juste avec des session mais ce n'est pas ce que je veux^^

  5. #5
    Membre averti Avatar de Linio
    Inscrit en
    Octobre 2005
    Messages
    431
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 431
    Points : 332
    Points
    332
    Par défaut
    Une petite parenthèse tout de même, les triggers ne supprimeront pas tes lignes exactement une heure après leur création, mais seulement au moment de la connexion de quelqu'un (donc typiquement sur une affluence normale d'un site internet, cette méthode risque de moins bien marcher lorsqu'il y a peu d'influence (3h du mat sur Internet... )

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    C'est pas grave ca ^^

    alros quelqu'un connait la commande ou la requête sql a faire pour cela ?

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    quelqu'un saurait faire ca svp ?

    à l'aide dun trigger ou d'un petit script à chaque nouvelle insert tu effaces tout ceux qui on plus d'une heure pour cela il te faudra un champ date

  8. #8
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    niveau script :
    Tu fais ton select dans php.
    Puis, tu va effaacer les enregistrements preimés. Comme tu devras avoir un champ date,a vec la date de l'insertion, il te sufira d'effacer tout les enregistrement qui ont "champ date - date actuelle > 1heure" :

    Soit qq chose comme ca :
    delete from<table> where (<table.date>-date) < 1heure;
    Z.

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    Merci c'est un bon début mais n'y connaissant strictement rien sur la manipulation des dates et de leur calcul je ne vois vraiment pas comment faire marcher ta requête

    Si quelqu'un saurait traduire cette requête pour qu'elle marche ca serait super..

    delete from <table> where (<table.date>-date) < 1heure;
    j'ai trouvé ce tuto sur les dates et heures mais je n'y comprend pas grand chose.. si ca peux vous aider :

    http://dev.mysql.com/doc/refman/5.1/...functions.html

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 3
    Points
    3
    Par défaut
    delete FROM panier WHERE ((dateexpiry - CURRENT_TIMESTAMP) < 1HOUR);
    dateexpiry = c'est le champs où est stocké la date de l'enregistrement
    panier = c'est la table panier contenant les enregistrements
    CURRENT_TIMESTAMP = ca renvoi la date et heure actuelle
    1HOUR = 1heure (je sais même pas si ca marche ca)


    j'ai essayé mais sans succès.. un ptit coup de pouce svp ?
    Je pense que j'y suis presque, ma syntaxe ne doit pas être bonne.

  11. #11
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    delete FROM panier WHERE ((dateexpiry - CURRENT_TIMESTAMP) < 3600);
    ou qq chose comme ca.

    Fait des tests avec un temps de 10secondes par exemple au lieu de 3600 secondes, et tu sera fixé

Discussions similaires

  1. [PowerShell] Enregistrer les programmes installés dans une table sql server
    Par Seriale dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 10/02/2014, 13h23
  2. [MySQL] enregistrer un calcul dans une table sql
    Par ifiii dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 18/01/2011, 18h27
  3. Ajout d'un enregistrement dans une table(SQL Server)
    Par guestCam dans le forum WebDev
    Réponses: 1
    Dernier message: 08/11/2009, 17h07
  4. Nombre d'enregistrements maximum dans une table sql server
    Par maxime_01 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/05/2009, 16h49
  5. nombre d'enregistrements limite dans une table sql
    Par lilou229 dans le forum Outils
    Réponses: 3
    Dernier message: 30/01/2007, 15h21

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