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

Langage PHP Discussion :

Delete dans une base de donnée [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut Delete dans une base de donnée
    Bonjour à tous,

    Voila mon souci dans ma base de donnée j'ai une date sous la forme de Y-m-d. J’aimerais faire une requête pour supprimer tout les insertions de la veille mais pas celle du jour.

    Comment je peux faire pour que cela me supprime uniquement les insertions de la veille, enfin toutes celles qui sont avant la date du jour.

    Merci de votre aide.

  2. #2
    Membre éprouvé Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Points : 1 241
    Points
    1 241
    Par défaut
    Bonjour,

    En PHP, la fonction date te permets de générer les dates aux formats que tu veux (donc le format AAAA-MM-JJ cher à MySQL), tu pourras en plus aller chercher la veille ou un autre jour.
    Tu n'as plus qu'à mixer cela avec ta requête SQL.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut
    J’ai déjà essayé plusieurs requêtes et cela ne fonctionne pas, ça me supprime rien, j'ai fais comme ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <?php
     
    $maDate = date('Y-m-d', strtotime('-1 day')); 
    $maDate1 = date('Y-m-d', strtotime('-2 day')); 
    $maDate2 = date('Y-m-d', strtotime('-3 day')); 
    $maDate3 = date('Y-m-d', strtotime('-4 day')); 
    $maDate4 = date('Y-m-d', strtotime('-5 day')); 
    $maDate5 = date('Y-m-d', strtotime('-6 day')); 
    $maDate6 = date('Y-m-d', strtotime('-7 day')); 
    $maDate7 = date('Y-m-d', strtotime('-8 day')); 
    $maDate8 = date('Y-m-d', strtotime('-9 day')); 
    $maDate9 = date('Y-m-d', strtotime('-10 day')); 
    $maDate10 = date('Y-m-d', strtotime('-11 day')); 
    $maDate11 = date('Y-m-d', strtotime('-12 day')); 
    $maDate12 = date('Y-m-d', strtotime('-13 day')); 
    $maDate13 = date('Y-m-d', strtotime('-14 day')); 
    $maDate14 = date('Y-m-d', strtotime('-15 day')); 
     
     
     
    $sql = "SELECT * FROM `fraude` where dateajout='$maDate' OR dateajout='$maDate1' OR dateajout='$maDate2' OR dateajout='$maDate3' OR dateajout='$maDate4' OR dateajout='$maDate5
    OR dateajout='$maDate6' OR dateajout='$maDate7' OR dateajout='$maDate8' OR dateajout='$maDate9' OR dateajout='$maDate10' OR dateajout='$maDate11'
    OR dateajout='$maDate12' OR dateajout='$maDate13' OR dateajout='$maDate14' OR dateajout='$maDate15'";
     
    $sql = mysql_db_query($db_name,$sql);
    while($dep = mysql_fetch_array($sql)) {
    $id_ann=$dep['id'];
    $date=$dep['dateajout'];
     
     
    if ($maDate == $date) {
     
    echo '';  
    }  
    else { 
    $sql = "delete from fraude where dateajout='$date'"; 
    $sql = mysql_db_query($db_name,$sql);
     
    echo '';
    }
     
     
     
     
    }
    ?>
    Mais je ne trouve pas ça très jolie comme code.

  4. #4
    Membre éprouvé Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Points : 1 241
    Points
    1 241
    Par défaut
    Je ne comprends pas ce que tu fais.
    Pourquoi tu passes 15 jours en revue dans ta première requête ?
    (D’ailleurs, pas besoin de faire j-1 OU j-2 OU ... OU j-15, avec 2 dates butoires j-1 et j-15, ca suffit)

    Et ensuite, tu recompares le résultat de ta requête avec ta variable $ma_date ?

    Pourquoi ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    Sinon, si le champ de référence est de type "date" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DELETE FROM maTable WHERE laDate < DATE( NOW() )
    Supprimera toutes les entrées antérieures à aujourd'hui

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DELETE FROM maTable WHERE laDate = DATE_SUB( DATE( NOW() ) , INTERVAL 1 DAY )
    Supprimera toutes les entrées d'hier, par exemple.

    A partir de là tu peux modifier tes critères pour gérer des intervalles etc.
    Pourfendeur de singletons en croisade

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut
    Bonjour,

    Voila j'ai essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "DELETE FROM fraude WHERE dateajout = DATE_SUB( date( NOW() ) , INTERVAL 1 DAY )";
    Dans ma base SQL j'ai ca comme résultat :
    id idaffilier email votregain idpub ip dayt dateajout code
    67 20 boutique.meder@wanadoo.fr 0.03529 26 127.0.0.1 19 2010-09-18 4c8de4f04f72f

    Mais ça ne me supprime rien du tout.

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

Discussions similaires

  1. DELETE dans une base de donnée
    Par lenny32 dans le forum VB.NET
    Réponses: 3
    Dernier message: 10/05/2008, 18h14
  2. intégrer un fichier image dans une base de donnée?
    Par Lody dans le forum Requêtes
    Réponses: 9
    Dernier message: 16/03/2006, 19h08
  3. les images dans une base de données
    Par houhou dans le forum Bases de données
    Réponses: 8
    Dernier message: 22/06/2004, 14h27
  4. [SYBASE]Libérer espace libre dans une base de données ?
    Par le_parrain dans le forum Sybase
    Réponses: 3
    Dernier message: 14/05/2004, 09h36
  5. [Strategie][Java][XML] Import dans une base de données
    Par nad dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 23/09/2002, 11h12

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