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 :

Supprimer des données après un certains temps dépassé


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2022
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2022
    Messages : 13
    Par défaut Supprimer des données après un certains temps dépassé
    Bonjour a tous

    Je travaille actuellement sur une base de donnée SQL SERVER auquel je me connecte via ODBC
    Mon site est un affichage de commandes que passe le client . Le site affiche donc le numéro de commande du client ainsi que si sa commande est prête ou non .

    La colonne s'appelle enc_prepared et proviens de la table encaissement
    j'ai egalement deux autes colonnes nomées : enc_heure_fab_deb et enc_heure_fab_fin qui indique l'heure auquel la commande a commencé et s'est arrêté


    Mon problème est donc le suivant :
    Je souheterais supprimer les anciennes commandes qui ont été passé . Par exemple lorsque la commande d'une personne passe en prête , celui-ci a 3 minutes pour la récupérer pour qu'elle se supprime par la suite pour faire place aux autres commandes.

    Mon code est donc le suivant :


    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1">
    	<link rel="stylesheet" type="text/css" href="css/commandess.css">
         <meta http-equiv="refresh" content="5" />
     
    	<title></title>
    </head>
    <body>
    <br><br>
     
                <table>
                <tr>
                    <th class='NUMCOMMANDE'>COMMANDE</th>
                </tr>
     
                <tr>
                    <td>
                        <div class="NUMERODECOMMANDE">
                        <?php
                //CONNEXION ODBC SERVER//
                $dsn="";
                $user="";
                $password="";
                $conn=odbc_connect($dsn
                    ,$user, $password);
     
                //REQUETES
                $sql = <<<EOF
                        SELECT top 10 [enc_cmd_num] 
                        FROM [encaissement]
                        WHERE enc_date= '20221227' 
                        EOF;
     
                $results = odbc_exec($conn,$sql);
     
     
                while($resultrow = odbc_fetch_array($results)){ 
                    echo "<p class='cmdnum'>".$resultrow["enc_cmd_num"]."<p/>" ; }
                    ?>
     
    <br><br><br>
            </div>
     
             <div class="STATUTCOMMANDE">
      <?php
                //CONNEXION ODBC SERVER//
                $dsn="";
                $user="";
                $password="";
                $conn=odbc_connect($dsn,$user, $password);
     
                //REQUETES
                $sql = <<<EOF
                        SELECT top 10 [enc_prepared]
                        FROM [encaissement]
                        WHERE enc_date= '20221227'
                        EOF;
     
                $results = odbc_exec($conn,$sql);
     
                //CONDITION
     
                    while($resultrow = odbc_fetch_array($results)) {
                        switch($resultrow['enc_prepared']){
                        case 0:
                            echo"<p class='ENCOURS'>Commande en cours de préparation<p/>\r \n";
                            break;
                        case 1:
                            echo "<p class='green'>Commande prête<p/>\r\n";
                            break;
     
                    }
     
                }
     
     
     
     
    ?>
    </div>
    </td>
    </tr>
    </table>

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 599
    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 599
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Il ne faut pas supprimer physiquement les commandes, mais éventuellement changer un statut permettant de les filtrer.
    En effet, la commande justifie la facture, il faut donc la conserver dans la base de données.

    Pour le reste, quelques remarques :

    • une date au format CCAAMMJJ ne correspond pas à une colonne de type date. C'est probablement une colonne de type char ou varchar, soit la porte ouverte à toutes les incohérences : impossibilité d'utiliser directement des fonctions date et impossibilité d'indexer efficacement cette colonne
    • pour limiter la recherche à un certain nombre de lignes, il faut utiliser la clause FETCH FIRST n ROWS ONLY et non pas son ersatz TOP n

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2022
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2022
    Messages : 13
    Par défaut
    Je viens de recevoir une requête qui elle rassemble toutes les données de la base

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT enc_id, enc_cmd_num, enc_paye, enc_prepared, enc_ext_ref, enc_heure_fab_deb, enc_heure_fab_fin, Client.cli_civilite,Client.cli_nom, Client.cli_prenom FROM Client RIGHT JOIN encaissement ON Client.cli_id = encaissement.enc_client WHERE enc_etat<>4 AND enc_date= '20221227' AND ((DATEDIFF(n,enc_heure_fab_fin, getDate()) < 3 AND enc_prepared <> 0) OR enc_prepared = 0) AND enc_emporte <> 1 ORDER BY encaissement.enc_heure_fab_deb ASC
    Mais lorsque je l'execute avec mon code rien ne s'affiche aucune donnée n'apparait :

    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
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title></title>
    </head>
    <body>
        <?php
            $dsn="";
            $user="";
            $password="";
            $conn=odbc_connect($dsn,$user, $password);
     
            //REQUETES
                $sql = <<<EOF
                        SELECT enc_id, enc_cmd_num, enc_paye, enc_prepared, enc_ext_ref, enc_heure_fab_deb, enc_heure_fab_fin, Client.cli_civilite,Client.cli_nom, Client.cli_prenom FROM Client RIGHT JOIN encaissement ON Client.cli_id = encaissement.enc_client WHERE enc_etat<>4 AND enc_date= '20221227' AND ((DATEDIFF(n,enc_heure_fab_fin, getDate()) < 3 AND enc_prepared <> 0) OR enc_prepared = 0) AND enc_emporte <> 1 ORDER BY encaissement.enc_heure_fab_deb ASC
                        EOF;
     
                $results = odbc_exec($conn,$sql);
     
                if( $results ) {
     
                    while($resultrow = odbc_fetch_array($results)){
                        switch($resultrow['enc_prepared']){
                    case 0:
                            echo"<p class='ENCOURS'>Commande en cours de préparation<p/>\r \n";
                            break;
                        case 1:
                            echo "<p class='green'>Commande prête<p/>\r\n";
                            break;
                            }
     
     
            }
     
     
                        } else {
                        var_dump( odbc_errormsg( $conn ) );
                        }
    ?>

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 599
    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 599
    Billets dans le blog
    10
    Par défaut
    Que donne la requête exécutée seule, hors PHP ?
    Car si la colonne enc_heure_fab_fin est du même type que enc_date (donc probablement du char ou du varchar) la fonction DATEDIFF() n'est pas utilisable en l'état, il faut d'abord transtyper la colonne.

Discussions similaires

  1. [WD14] Verrouillage des données après une certaine durée
    Par free_dom dans le forum WinDev
    Réponses: 4
    Dernier message: 23/07/2016, 10h38
  2. Réponses: 10
    Dernier message: 14/06/2016, 15h21
  3. Réponses: 0
    Dernier message: 29/07/2014, 23h31
  4. [10g] Comment supprimer des données déjà ajoutées après la date du fichier de l'export?
    Par Limpasse Creative dans le forum Import/Export
    Réponses: 2
    Dernier message: 17/08/2013, 23h04
  5. Supprimer des données dans un xml
    Par pingoui dans le forum Format d'échange (XML, JSON...)
    Réponses: 49
    Dernier message: 12/08/2004, 16h49

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