[sql]|[php] help systeme d expiration

Résolu/Fermé
alborq Messages postés 52 Date d'inscription jeudi 21 octobre 2010 Statut Membre Dernière intervention 20 février 2012 - 27 déc. 2010 à 02:59
avion-f16 Messages postés 19243 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 8 avril 2024 - 27 déc. 2010 à 23:01
Bijour, Bisoir,
je suis venu encore une fois vous demandez votre aide j'ai un champs de ma table de compte de mon site qui se nomme expire sont type es INT et j'aimerais automatiser un -1 chaque jours de cette donné dans l'intégrale de la colone expire pour que chaque mois les compte soit désactivez pour vidé ma bases ou réactiver grâce un script déjà tout prêt mais je ne sais pas comment automatisé un -1 dans toute la colone de ma table sachant que je n'es pas de serveur dédier disponible pour faire tourné une page web de -1 donc y a t'il possibilité d'entrer une requête sql sur phpmyadmin qui aurais cette effet ? merci de m'avoir lu au-revoir a bientôt !



A voir également:

7 réponses

avion-f16 Messages postés 19243 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 8 avril 2024 4 496
27 déc. 2010 à 17:13
Salut.

Tu peux utiliser les tâches CRON.
Seulement, il te faut un serveur dédié, ou certains hébergeurs en mutualisés proposent aussi cette option. Elles permettent tout simplement d'exécuter un script PHP à un moment donné (une date, ou à intervalle).
Sinon, tu peux coder toi-même un système de CRON en PHP. Tu vérifies si la différence entre la date de la dernière exécution (stockée dans un fichier) et la date actuelle est supérieur à une jour. Si oui, tu exécutes la requête SQL. Ce script devra être inclus dans toutes les pages.

Ou bien alors tu peux tout simplement indiquer le jour d'expiration au lieu de stocker le nombre de jours restant.
1
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
27 déc. 2010 à 13:06
Salut, si je comprend bien tu veux décrémenter ton champ "expire".
tu peux le faire avec une requête du type:
UPDATE 'Nom_de_ta_table' SET 'expire' =  ('expire' - 1)
0
alborq Messages postés 52 Date d'inscription jeudi 21 octobre 2010 Statut Membre Dernière intervention 20 février 2012
27 déc. 2010 à 14:35
Oui c'est sa mais j'ai besoin que cette requete s'execute automatiquement chaque jour a minuit par exemple es possible ?
0
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
27 déc. 2010 à 15:15
Ah, autant pour moi, j'avais pas bien lu.
Je ne l'ai jamais mis en place mais je pense qu'il y a moyen de créer une procédure SQL et ensuite de la scheduler, j'ai vite fait trouvé ça sur google : https://atranchant.developpez.com/mysql/evenement/

Bon courage
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
alborq Messages postés 52 Date d'inscription jeudi 21 octobre 2010 Statut Membre Dernière intervention 20 février 2012
27 déc. 2010 à 17:03
je vais regardez merci a toi
0
alborq Messages postés 52 Date d'inscription jeudi 21 octobre 2010 Statut Membre Dernière intervention 20 février 2012
27 déc. 2010 à 17:34
eee.... LOVE =) tu roxx toi =)
0
alborq Messages postés 52 Date d'inscription jeudi 21 octobre 2010 Statut Membre Dernière intervention 20 février 2012
27 déc. 2010 à 18:32
la requete que l'on ma donnez pour le -1 ne marche pas elle remplace le champs par -1 donc comment soustraire en requete SQL un champs svp ? ou un scrypt php ^^
0
avion-f16 Messages postés 19243 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 8 avril 2024 4 496
27 déc. 2010 à 18:35
Il faut d'abord récupérer la valeur actuelle. Une fois que tu l'as dans une variable PHP, il suffit de décrémenter cette variable de 1 : $var -= 1
Et après, tu fais une requête pour mettre à jour la valeur de la colonne.

Mais je te conseille plutôt d'utiliser les dates ou le timestamp plutôt qu'un nombre représentant le nombre de jours restant.
0
alborq Messages postés 52 Date d'inscription jeudi 21 octobre 2010 Statut Membre Dernière intervention 20 février 2012
27 déc. 2010 à 18:48
Avec les Date je vois pas comment faire ^^ car la apres je compte mettre un systeme de conditions sur mes pages proteger pour verifié s'il sont toujours abonné
0
avion-f16 Messages postés 19243 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 8 avril 2024 4 496
27 déc. 2010 à 18:56
Il suffira de vérifier si "la date d'expiration est inférieur à la date actuelle"
0
alborq Messages postés 52 Date d'inscription jeudi 21 octobre 2010 Statut Membre Dernière intervention 20 février 2012
27 déc. 2010 à 19:12
je fait le scrypt de -1 la mon code es en cours c'est corect ?
<?php
try
{
    // On se connecte à MySQL
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);
    
    // On récupère tout le contenu de la table jeux_video
    $reponse = $bdd->query('SELECT * FROM compte');
    
    // On affiche chaque entrée une à une
    while ($donnees = $reponse->fetch())
    {
    ?>
    <?php
	 $result = $donnees['expire'] -= 1; 
	$req = $bdd->prepare(UPDATE 'compte' SET 'expire' = :top)
    $req->execute(array(
	                'top' => $result,
					));
    ?>

    }
    
    $reponse->closeCursor(); // Termine le traitement de la requête

}
catch(Exception $e)
{
    // En cas d'erreur précédemment, on affiche un message et on arrête tout
    die('Erreur : '.$e->getMessage());
}


?>
l'erreur es
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\wamp\www\gm\lecture table.php on line 17
es la je voit pas ....
0
avion-f16 Messages postés 19243 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 8 avril 2024 4 496
27 déc. 2010 à 19:19
Pourquoi fermer et réouvrir directement les "balises" PHP ?
Ta requête SQL est une chaine de caractère en PHP, donc il faut des guillemets autour.
De plus, il faut ajouter la clause WHERE pour ne pas mettre à jour tous les comptes par le nombre qui vient d'être trouvé.
Et pour terminer, "-=" sert à décrémenter une variable. Ici, le signe "moins" seulement suffit.
<?php
while ($donnees = $reponse->fetch()) {
	$result = $donnees['expire'] - 1;
	$req = $bdd->prepare('UPDATE compte SET expire = :top WHERE id = :id')
	$req->execute(array(
		'top' => $result,
		'id' => $donnees['id'],
	));
}
?>
0