Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/06/2006, 14h59   #1
Invité régulier
 
Inscription : février 2006
Messages : 67
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 67
Points : 8
Points : 8
Par défaut [PHP/MySQL] Insérer des données dans une DB le dernier jour de chaque mois

Bonjour,

Je voudrais enregistrer automatiquement une valeur à la fin de chaque mois dans une base de données, mais je ne sais pas comment faire

Merci de m'aider.

Bonne après midi ...
ok07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 15h12   #2
Membre chevronné
 
Avatar de gerald2545
 
Inscription : février 2003
Messages : 643
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 643
Points : 660
Points : 660
je ne sais pas si mysql permet d'exécuter une fonction à intervalle régulier (ce qui serait le plus simple), mais moi j'utilise un cron (je suis sous RedHat AS3) qui appelle un script perl qui exécute les requêtes SQL désirée....
gerald2545 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 15h17   #3
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
sinon tu as http://webcron.org/

Une autre solution bien plus bourrin consiste a stocker quelque part la derniere fois que l'action a été faite. Puis a chaque chargement de page, verifier que l'action a déja été faite pour ce mois ci. Si ce n'est pas le cas, tu fait l'action, comme ca elle sera faite par ton premier visiteur du mois a chaque fois.
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 15h26   #4
Invité régulier
 
Inscription : février 2006
Messages : 67
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 67
Points : 8
Points : 8
Merci pour vos réponse

>> gerald2545 et Fladnag : en fait je préfèrerais utiliser PHP et MySQL uniquement.

N'existe t-il pas une fonction qui permette de la faire ? J'ai cherché dans la doc de PHP en vain ...
ok07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 15h30   #5
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
La deuxième solution de Fladnag est 100% PHP / MySQL...
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 15h38   #6
Invité régulier
 
Inscription : février 2006
Messages : 67
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 67
Points : 8
Points : 8
Citation:
Envoyé par JWhite
La deuxième solution de Fladnag est 100% PHP / MySQL...

Effectivement mais elle me parait compliquée

Est ce que c'est possible de le faire avec une expression régulière ? Si oui quelqu'un peut m'expliquer ?

Merci
ok07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 15h42   #7
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Citation:
Envoyé par ok07
Effectivement mais elle me parait compliquée
Non, j'ai déjà fait ça dans d'autres circonstances, c'était la seule solution que j'avais.

1 - Tu stockes quelque part (dans ta base à la limite) la date de ton dernier enregistrement
2 - Quand une de tes pages (une qui est fréquemment utilisée tant qu'à faire) est lancée par un utilisateur, tu regardes par rapport à la date courante et à la date sauvegardée si il faut mettre un nouvel enregistrement
3 - si c'est pas la peine (c'est à dire si la valeur du mois précédent a été enregistrée) tu fais rien, sinon tu fais l'enregistrement et tu mets à jour la valeur de la date du dernier enregistrement.

Ca se fait tout seul si tu as compris le principe.


Citation:
Est ce que c'est possible de le faire avec une expression régulière ?
Je vois pas le rapport avec la question
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 15h54   #8
Invité régulier
 
Inscription : février 2006
Messages : 67
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 67
Points : 8
Points : 8
Citation:
Envoyé par JWhite
Non, j'ai déjà fait ça dans d'autres circonstances [...], ça se fait tout seul si tu as compris le principe.
Merci de ta réponse j'en prends note

Citation:
Je vois pas le rapport avec la question
En fait, je voulais demander si c'étais possible d'enregistrer automatiquement une valeur à la fin de chaque mois dans une base de données avec les expressions régulières.

@+
ok07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 16h20   #9
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
Citation:
Envoyé par ok07
En fait, je voulais demander si c'étais possible d'enregistrer automatiquement une valeur à la fin de chaque mois dans une base de données avec les expressions régulières.
Quelque chose me dit que tu as deja entendu quelqu'un dire "mais on peut tout faire avec les expressions régulieres !" mais que tu ne sais pas réellement ce que c'est ;o)

Les expressions régulieres ne peuvent etre utilisées que pour faire des recherches et/ou des remplacements dans des chaines de caracteres. On peux pas laver du linge avec, ni faire un toast, ni mettre a jour une base de donnée ;o)
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 16h23   #10
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Citation:
Quelque chose me dit que tu as deja entendu quelqu'un dire "mais on peut tout faire avec les expressions régulieres !" mais que tu ne sais pas réellement ce que c'est
C'est bien ce qu'il me semblait mais j'étais pas sûr.

Citation:
On peux pas laver du linge avec
Sisi en cherchant bien sur Google tu vas trouver çà (ou ptet dans le FAQ )
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 16h30   #11
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
Citation:
Envoyé par JWhite
Sisi en cherchant bien sur Google tu vas trouver çà (ou ptet dans le FAQ )
Code :
echo preg_replace("#(chemise|t-shirt|pantalon)(.*)taches?#Uis", "$1$2", $texte);
?
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 16h35   #12
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910


Bien joué, moment détente avant le WE
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 16h41   #13
Invité régulier
 
Inscription : février 2006
Messages : 67
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 67
Points : 8
Points : 8


Merci à Fladnag et JWhite pour ce foutage de gueule .

Bon, je pense faire ça avec une fonction mais ce que vous m'avez dis ne me semble pas clair (ou alors c'est moi ).

En gros vous me conseillez
Citation:
d'exécuter une fonction à intervalle régulier
, or c'est impossible car il n'y a pas tous les mois le même nombre de jour donc ... heu ... je comprends pas

Merci de m'aider parce que là ... je suis à bout
ok07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 16h50   #14
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
C'est pas tout à fait ça...

Allez je m'enflamme dans un algo freestyle :

(quand l'utilisateur arrive sur la page que tu as choisie)
Code :
1
2
3
4
5
6
7
SI MOIS(date_dernier_enregistrement) < MOIS(date_courante) ALORS
   (ça veut dire que c'est la première visite du mois donc on enregistre)
   enregistrer la valeur pour le dernier mois
   mettre à jour la date du dernier enregistrement
SINON
  rien à faire parce que le traitement du mois précédent a déjà été fait
FSI
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 16h52   #15
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
En fait, c'est un peu l'histoire du chat de Schrödinger.

Tu as besoin du resultat du traitement sur une certaine page non ?

Donc imaginons que tu mette l'appel a la fonction en haut de cette page, tu est sur qu'elle sera executée avant chaque affichage de la page, donc si le mois précédent elle ne s'est pas executée (ie : on est pas allé sur cette page), elle se lancera avant le premier affichage.

Maintenant si la page en question n'est pas visitée au moins une fois par mois, tu peux aussi mettre l'appel a la fonction sur une page plus vue (voir en haut de chaque page de ton site si t'est parano comme moi !)

En gros, dès que quelqu'un se connecte, ta petite fonction va :
* Regarder la date actuelle
* Verifier que le mois de la date stockée de la derniere mise a jour est différent du mois en cours
* Lancer le traitement

Evidemment, si tu as 3000 visiteurs par mois, tu va executer 2999 fois un test qui renverra false pour 1 test qui renverra true.
Evidemment aussi, si ton site n'a pas une seule visite en un mois, le traitement ne sera jamais executé.

C'est plus clair ?
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 17h07   #16
Membre chevronné
 
Avatar de gerald2545
 
Inscription : février 2003
Messages : 643
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 643
Points : 660
Points : 660
sinon la solution du cron correspond bien. Sauf qu'au lieu de perl tu utilises php pour ton script Tu pourras exécuter ton script php le 1er jour de chaque mois à 00H00min00s00....1, et ce tous les mois, quel que soit le nombre de visiteur que tu as (0 visisteur te posant problème avec l'autre solution en l'occurence, mais on ne te le souhaite pas!!)
gerald2545 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 17h21   #17
Invité régulier
 
Inscription : février 2006
Messages : 67
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 67
Points : 8
Points : 8
Merci pour vos réponse je vais bucher dessus

Bon j'explique plus dans les détails pour être plus clair.

Tous les mois, mes visiteurs vont gagner des points, à compter de leur inscription. Ensuite, je veux faire un tableau de statistiques (un récapitulatif) des
points gagné au mois de janvier, février, etc

Et donc j'ai besoin d'enregistrer le nombre de points qu'ils ont gagnés chaque mois pour pouvoir mettre :
150 points gagnés au mois de janvier, 128 au mois de février, etc.

Mais je ne sais pas comment faire ça ...

En espérant avoir été clair, @+, et encore
ok07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 17h25   #18
Membre chevronné
 
Avatar de gerald2545
 
Inscription : février 2003
Messages : 643
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 643
Points : 660
Points : 660
ben pourquoi tu stockes cette info alors que tu peux la récupérer facilement par requêtage?
gerald2545 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 17h31   #19
Invité régulier
 
Inscription : février 2006
Messages : 67
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 67
Points : 8
Points : 8
Comment ça
ok07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 17h42   #20
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Citation:
Envoyé par gerald2545
ben pourquoi tu stockes cette info alors que tu peux la récupérer facilement par requêtage?
Je plussoie.

En fait il faudrait connaître la structure de ta base, mais si c'est bien fait tu peux avoir ces infos avec des belles requêtes SQL.
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h25.


 
 
 
 
Partenaires

Hébergement Web