merci d'avance.
bain j'ai réaliser mon site ce dernier est pour le don du sang
j'ai un bleme je doi crée un sytéme de DELETE ce dernier suprrime tous les donns q'ils ont expiré
pck dans le formulaire de donnation ya un champ date d'inscription et un autre date d'expiration et S systeme va supprimer tt les donnations q'ils ont expiré comment faire ?
merci
remrque :
j'ai crée mon site a laide du tuto grafikart commen developper un site de A a Z
MVC

13 réponses


Lartak
Réponse acceptée

Quand je disais pour lister, c'est après la requête SQL et donc, dans le controller.
Une fois la requête SQL effectuée, si par exemple tu as stocké les données dans la variable $donneurs.

foreach ($donneurs as $k => $v) {
    if ($v->endtime < date('Y-m-d')) {
        $this->Post->delete($v->id);
    }
}

Ce bout de code va supprimer chaque enregistrement récupéré dont la valeur du champ endtime est inférieure à la date du jour dont la requête est faite.
Ceci bien sûr, dans le controlleur juste après la requête SQL.

Bonsoir.
Tu dois obligatoirement passer par un formulaire pour faire cette suppression ?
Car si c'est une opération qui peut être faite sans confirmation au préalable, lors d'une requête select qui liste toutes les donnations, tu pourrais faire un foreach des données récupérées suite au select, y faire une condition qui ferait une requête en DELETE sur chaque enregistrement dont la date d'expiration est inférieure à la date du jour par exemple.

I-dev
Auteur

voici la réponse de carouge10



Une simple condition sur le DELETE et le tour est joué
"WHERE date_entree >= NOW() + 2 mois" ==> (Je vous laisse faire la convertion).```

mais cette condition ou je dois la placer ou dans la structure MVC de grafikart
jai des posts et je Ve lé supprimer apres "X" jours

Je t'ai partiellement expliqué comment tu pouvais faire, mais tu n'as pas répondu à mon post précédent, je ne vois donc pas comment nous pouvons t'aider.
Nous n'en savons pas assez pour te répondre précisément.

Bonsoir,

Soit vous faite un bouton qui fait cette action dans une fonction d'un controller,
Soit vous avec un système de cron et vous avez juste la requête sql à faire.

@Carouge10 : Pas obligatoirement un cron pour le 2ème cas, il y a bien un moment où il récupére les données pour les lister sur une page, il lui suffirait de le faire à ce moment là.
Déjà que l'on a du mal à avoir une réponse de sa part, qu'est-ce que ça va être pour lui expliquer comment faire avec un cron.

Je me suis dit la même chose, l'avantage du cron c'est qu'il ne le feras qu'une ou quelques fois tandit que s'il le fait lors du listing, il va être beaucoup plus soliciter.

I-dev
Auteur

ici lors q j lsité la rsésultat

<?php

     foreach ($donneurs as $k => $v):   
        if(($department == $v->department) && ($blood_type == $v->blood_type && ($v->endtime >= date('Y-m-d')))){?>

            <tbody>
                <tr>
                    <td><?php echo $v->name; ?></td>
                    <td><?php echo $v->department; ?></td>
                    <td><?php echo $v->tel; ?></td>
                    <td><?php echo $v->email; ?></td>
                    <td><?php echo $v->blood_type; ?></td>
                </tr>

     <?php
        }   

      endforeach;   

    ?>

Il y a aussi la possibilité de tout faire en BDD directement, avec l'avantage de pouvoir faire de l'archivage régulier avec des triggers par exemple. J'ai fais une vidéo sur les events qui pourra aider et apporter une autre approche. http://youtu.be/a7igJt3YB0Y
(PS: Je me rend compte que ça fait un peux pub pour ma chaine, désolé si ça rentre pas totalement dans le cadre :/ )

Il y a aussi la possibilité de tout faire en BDD directement

C'est justement en rapport avec la base de données, puisque les données sont récupérées de la BDD et supprimés en BDD.
Je ne vois donc pas pourquoi vous dites ça.

Dans l'exemple du "$this->Post->delete($v->id);", la suppression est amorcé du côté serveur d'application (j'en parle un peux a la fin de ma vidéo si je me souviens bien). Ce que je propose, c'est de créer des Events qui vont s'executer uniquement côté serveur de base de donnée.

Dans cet exemple c'est pas obligatoire, mais on oublie souvent que c'est possible et que ça a pas mal d'avantages en terme de perfs.

I-dev
Auteur

1000 merci Lartak
elle marche
merci tou le monde

De rien, bonne continuation. :)