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 :

Suppression automatique des données [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Points : 70
    Points
    70
    Par défaut Suppression automatique des données
    Bonjour tout le monde !

    Voilà je voudrais réaliser une suppression automatique des données de ma base en fonction de l'heure et de la date.

    Je suis tombée sur ce code en parcourant les divers posts du forum

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql_query("DELETE FROM demande WHERE DATE_ADD(date, INTERVAL 1296000 SECOND) < TIME()");
    Une tite explication ? piste ou autre

    mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $delete = mysql_query("DELETE FROM $fiche WHERE id='$id'");

  2. #2
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    Bonsoir,

    Dès lors que tu as un champ qui contient la date et l'heure de l'ajout de l'enregistrement, la première solution me parait bien (comparaison de la date / heure courante et de la date / heure dans ton champ...).

    @+

  3. #3
    Membre régulier Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Points : 70
    Points
    70
    Par défaut
    Bonjour,

    Arf je viens de voir à mon grand désarroi que mon post d'hier soir n'a pas été enregistré ...

    Voilà je n'arrive pas à mettre en place cette suppression automatique et il n'y a pas beaucoup de posts à ce sujet sur les forums ...

    J'ai une petite piste avec la fonction unlink()

    Mais comment l'utiliser ?

    Exemple :

    Dans mon application j'insère des données avec les champs 'date' et 'heure' et je souhaiterais que toutes les données qui dépasse la date soient automatiquement supprimées.

    il suffit que tu compares la (date d'enregistrement + 30 jours) avec la date du jour, si celle-ci est supérieure alors tu la supprime


    J'ai ça aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $deletes = mysql_query("SELECT nom_de_fichier FROM produit WHERE DATE_ADD(date_p, INTERVAL 1296000 SECOND) < TIME()");
    while ($del = mysql_fetch_array($deletes)) {
        $suppression = unlink($del[nom_de_fichier'']);
    }
    Par quoi remplacer 'nom_de_fichier' si je veux supprimer toute la ligne de ma table ?

    Merci d'avance

  4. #4
    NoT
    NoT est déconnecté
    Membre actif
    Profil pro
    Inscrit en
    Février 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 237
    Points : 280
    Points
    280
    Par défaut
    Salut,

    unlink() permet d'effacer des fichiers, pas des données stockées dans un table. Oubli donc ça.

    Pour le reste arme toi d'une légère dose de courage, investi dans un peu de concentration et parcours la doc MySQL sur la partie qui t'interesse : http://dev.mysql.com/doc/refman/5.0/...functions.html

  5. #5
    Membre régulier Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Points : 70
    Points
    70
    Par défaut
    Suite ...

    J'ai testé le code ci-dessous que bisunurs m'a conseillé. Tout me paraît bon mais aucune donnée n'est supprimé de ma base

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql = "DELETE FROM fiche WHERE date_p > \"".date('Y-m-d h:i:s')."\"";
    Pour bisunurs : j'ai bien fusionné mes champs heure et date ==> date_p type DATETIME

  6. #6
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Fais un print de $sql :

    Fais un copié/collé de la requête générée et exécute-la dans PHPMyAdmin.

    As-tu une erreur ? Si oui laquelle ? Si non fais-tu bien le mysql_query() ?

  7. #7
    Membre régulier Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Points : 70
    Points
    70
    Par défaut
    fais un copié/collé de la requête générée et exécute-la dans PHPMyAdmin.
    ?

    Dans le menu 'requête' de mon phpMyAdmin ?

    Sinon j'ai ce message dans mon phpMyAdmin :
    Vous devez choisir au moins une colonne à afficher
    après avoir copié collé ma requête issue de print $sql;

  8. #8
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    Effectivement, fait attention à ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $sql = "DELETE FROM fiche WHERE date_p > \"".date('Y-m-d h:i:s')."\"";
    $row=mysql_query($sql);
    if($row==false){
    echo $sql;
    }
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  9. #9
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Quand tu fais un print $sql; qu'est-ce qui s'affiche ?

    Tu dois avoir un truc du style :

    DELETE FROM fiche WHERE date_p > "2006-12-14 20:37:15"
    Donc dans phpMyAdmin sélectionne ta base de données, clique sur SQL en haut et entre ta requête donnée par le print $sql;

    Evidemment, si tu n'as aucune donnée à supprimer tu peux avoir une erreur ..

  10. #10
    Membre régulier Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Points : 70
    Points
    70
    Par défaut
    rahhhhhhhhhh la C..... ! en faite je recopié bêtement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    $sql = "DELETE FROM fiche WHERE date_p > \"".date('Y-m-d h:i:s')."\"";
    $row=mysql_query($sql);
    if($row==false){
    echo $sql;
    }
    ?>
    effectivement la requête marchait nikel mais ne me supprimait aucune donnée ... Je comprenait pas jusqu'au dénouement ...

    En tout cas merci pour votre aide

  11. #11
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    De rien
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

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

Discussions similaires

  1. Suppression automatique des fichiers sur le serveur
    Par phpieur dans le forum ASP.NET
    Réponses: 9
    Dernier message: 17/05/2007, 13h19
  2. [Formulaire]Suppression automatique des doublons
    Par lionjpl dans le forum IHM
    Réponses: 3
    Dernier message: 25/03/2007, 09h41
  3. Réponses: 5
    Dernier message: 20/07/2006, 16h01
  4. Suppression automatique des fichiers trop vieux
    Par HwRZxLc4 dans le forum Langage
    Réponses: 5
    Dernier message: 09/05/2006, 11h22
  5. suppression automatique des enregistrements
    Par abdou.sahraoui dans le forum Langage SQL
    Réponses: 4
    Dernier message: 02/08/2005, 13h45

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