pfiouuuu...j'en ai bavé avec les dates.
Il y a tellement de fonctions php et tellement de possibilités que l'on peut se retrouver un peu perdu.
Mettre une date dans une table mysql est super facile, mais j'ai pas trouvé le moyen d'aller la chercher !
Alors si toi aussi t'es un noob et que tu aimerais utiliser des dates pour gérer des droits d'acces, ce code est fait pour toi. Ou pas.
On va commencer par le commencement, rentrer la date dans une table.
J'ai décidé de rentrer la date courante et non la date d'expiration.
C'est bien parce qu'il n'y a qu'une variable à modifier si on veut changer la durée de l'abonnement, mais c'est moins pratique si l'abonné veut prolonger son abonnement avant la date d'expiration.
En fait il suffira de faire un petit calcul de prorata...enfin ces modifications vous les ferez vous même, selon vos besoins :)
CREATE TABLE abonnement (
id_user INT(6),#identifiant unique
date_abonnement date,#colonne date
primary key(id_user)
);
<?php
//identifiants. Ces variables se placent en général dans un fichier qu'on peut appeler config.php et qu'on appelle avec la commande include.
$host="adresse_serveur_mysql";
$user="nom_utilisateur_mysql";
$password="password_utilisateur_mysql";
$database="ma_base";
//on se connecte à la base de données
$connexion= mysql_connect($host,$user,$password) or die ("connexion au serveur mysql impossible !");
$db= mysql_select_db($database, $connexion) or die ("connexion a la base de donnees impossible !");
//on regarde si le formulaire a été envoyé
if(isset($_GET['form']))
{
//on crée l'entrée
$requete="INSERT INTO abonnement(id_user,date_abonnement) VALUES('".$_POST['id_user']."',now())";//now() correspond a la date courante.
$execute=mysql_query($requete) or die('impossible d\'executer cette requete :<br />'.$requete);
//on affiche le résultat
echo "L'utilisateur dont l'identifiant est ".$id_user." est abonné.<br />";
//pour connaitre un fonction de plus je vous montre comment afficher la fin de l'abonnement (celui-ci dure un an)
$expiration= date("Y-m-d",strtotime("next year gmt"));//on ajoute 1 an à la date courante
echo "L'abonnement sera expiré le : ".$expiration."<br />";
}
//on affiche le formulaire
echo '
<form method="post" action="'.$_SERVER['PHP_SELF'].'?form=yes">
Saisir l\'idenfiant de l\'utilisateur :
<input type="text" name="id_user" />
<input type="submit" />
</form>
';
?>
<?php
//identifiants. Ces variables se placent en général dans un fichier qu'on peut appeler config.php et qu'on appelle avec la commande include.
$host="adresse_serveur_mysql";
$user="nom_utilisateur_mysql";
$password="password_utilisateur_mysql";
$database="ma_base";
//on se connecte à la base de données
$connexion= mysql_connect($host,$user,$password) or die ("connexion au serveur mysql impossible !");
$db= mysql_select_db($database, $connexion) or die ("connexion a la base de donnees impossible !");
//on regarde la date d'expiration de l'abonnement de l'utilisateur 20. Celui-ci s'est abonné le 2009-03-10 (format date de mysql)<br />";
$requete="SELECT * FROM abonnement WHERE id_user=20";
$exec=mysql_query($requete) or die('impossible d\'executer cette requete :'.$requete);
//une fois la requete effectuée on extrait les données, je suis sur qu'il y a plus court mais bon ça marche...
while ($ligne = mysql_fetch_array($exec))
extract($ligne);
echo "la date est".$date_abonnement."<br />";//maintenant on peut afficher le contenu de la table en utilisant le nom de la colonne comme variable, c\est trop super.
//parce que je ne sais pas utiliser la date contenue dans la table : j'explose,
//je pense que ça ressemble à du bricolage mais bon, ce tuto est pour les noobs :)
$ma_date=explode("-",$date_abonnement);
//maintenant on a le jour, le mois et l'année
echo "l'annee : ".$ma_date[0]."<br />
le mois : ".$ma_date[1]."<br />
le jour : ".$ma_date[2]."<br />";
//on transforme la date en nombre de seconde entre le début de l'aire UNIX (1er Janvier 1970 00:00:00 GMT) et la date.
//Pour obtenir la date d'expiration on ajoute 1 an
$date_expiration=mktime(0,0,0,$ma_date[1],$ma_date[2],$ma_date[0]+1);//mktime(heures, minutes, secondes, mois, jour, année)
//on affiche le résultat
echo "date d'expiration en secondes : ".$date_expir."<br />";
//on trouve la date actuelle en secondes
$date_actuelle=strtotime("now");
echo "la date actuelle en secondes est : ".$date_actuelle."<br />";
//il ne reste plus qu'a comparer les 2 dates. Si la date d'expiration a plus de secondes que la date actuelle c'est bon :)
if($date_actuelle<=$date_expiration) echo "abonnement valide";
else echo "abonnement expiré";
?>
| ©cqgclub 2007 | Contact |
|
Votre @IP : 38.107.191.99 |