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 :

Comment puis-je effacer toutes les lignes plus anciennes que la date du moment


Sujet :

PHP & Base de données

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 225
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 225
    Par défaut Comment puis-je effacer toutes les lignes plus anciennes que la date du moment
    Bonjour à tous,

    J'ai une api qui soit mettre à jour ou ajouter une saisie dans ma base de donnée.
    Elle enregistre un date dans un champs 'date_until' (DATETIME). Cette date correcpond à un délai donc elle est supérieur à NOW().

    Si ultérieurement la valeur de 'date_util) est supérieur au moment dans l'enregistrement (par exemple 1 semaine plus tard), j'aimerais ue mon script supprime toutes les lignes dont la date de 'date_until' est supérieur à la date/heure du moment.

    Pour cela, j'ai fait ceci

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $sql_delete ='DELETE FROM sensor_mute_by_user WHERE mute_until < "'.$response['now'].'"';
     
        $connect->query($sql_delete);
        $nb = $connect->affected_rows;
        if($nb > 0){
    		echo 'delete '.$nb.' row';
        }
        else{
        	echo 'not delete';
        }
    Il faut savoir que $response['now'] est un string (expl: 2026-05-25 16:39:00).

    Ceci fonctionne, mais je n'ai pas assez de saisie pour vérifier s'il effacerait 50 ancinne saisie.
    Est-ce que ce simple code pourrait être optimiser?

    Bonne soiréée

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 544
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 544
    Par défaut
    Bonjour,
    Comme le seul filtre porte sur la colonne mute_until, toutes les lignes concernées seront effacées, peu importe le nombre.

    Tatayo.

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 769
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 769
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    D'un point de vue fonctionnel :
    La restriction ne porte que sur la date, l'ordre DELETE va donc supprimer toutes les lignes antérieures à cette date, indépendamment de toute autre considération, c'est assez brutal.
    Est-ce vraiment ce qui est souhaité ?


    D'un point de vue technique :
    Vu que la colonne date_until est de type datetime, il faut que la host variable soit également un type datetime, sans quoi il y a un transtypage implicite qui interdit l'usage des index (si index il y a bien entendu), au détriment des performances.


    D'un point de vue sémantique :
    • attention à ne pas confondre "champ" qui est une zone de saisie d'un formulaire ou une zone d'édition d'un état, et "colonne" qui est un attribut dans une table ;
    • le terme "effacement" lui aussi concerne une zone à l'écran, voire tout l'écran, pour une ligne d'une table, on parle de "suppression".

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/01/2019, 11h14
  2. Réponses: 1
    Dernier message: 27/07/2017, 18h02
  3. Réponses: 1
    Dernier message: 25/01/2013, 15h41
  4. Comment effacer toutes les variables de sessions en une fois
    Par dessinateurttuyen dans le forum Langage
    Réponses: 4
    Dernier message: 03/08/2006, 09h20

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