Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 28/11/2007, 10h23   #1
Membre confirmé
 
Inscription : octobre 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 340
Points : 221
Points : 221
Envoyer un message via MSN à ideal23
Par défaut [SQL] Requête pour comparer 2 dates

bonjour
j’ai un problème pour comparer 2 champs dates. Je voudrais comparer la date de fin par rapport à la date du jour. Si la date du jour est inférieure à la date de fin de la table, autorisation d’accès à la page commande, si la date du jour est supérieure à la date de fin, direction page de réabonnement.
J’ai trouvé ce script qui fonctionne :

<?php
$DateExpiration="2007-12-26";
if ((strtotime($DateExpiration) - mktime(0 , 0 , 0 , date("m") , date("d") , date("Y"))) < 0)
echo "La date d'expiration est dépassée"; else echo"date valide";
?>
mais j’ai des difficultés à l’intégrer dans ma page avec une requête. Pourriez-vous m’aider
ideal23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2007, 11h01   #2
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
Hello,

SQL intègre très bien les calculs de date....

Code :
1
2
 
$SQL = 'SELECT name_abo FROM abonnement WHERE date_fin > NOW() AND id ='.$id;
Si la requete te renvoi quelque chose, c'est que la date de fin est bien supérieure a la date du jour. Si cela ne te renvoi rien, c'est que la date de fin est dépassée pour cet abonné

@+
cadou
__________________
PHP Competition System
Script de gestion de coupes et championnats
http://phpcompet.free.fr

Mon jeu de foot
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2007, 11h12   #3
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
Pour compléter un peu la réponse de Cadou, je dirais:

Il y a de multiples façon de répondre à ton problème avec SQL. La solution que propose Cadou me semble assez directe, mais en fonction de ce que tu veux faire il faut adapter.

En premier lieu, a ta place j'utliserai des TimeStamp car les comparaisons sont plus faciles.

Ensuite j'imagine que ta date d'expiration est soit stockés dans une table de ta base, soit sous forme de Cookie dans le client, soit encore sous forme de SESSION php.

Il faut trouver une solution adaptée a ton besoin.
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2007, 14h00   #4
Membre confirmé
 
Inscription : octobre 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 340
Points : 221
Points : 221
Envoyer un message via MSN à ideal23
salut
merci pour vos réponses. effectivement ma date d'expiration est stockée dans une table de ma base.
Explication: pour accéder à la commande le client doit entrer son identifiant et mot de pass, ensuite grâce à une variable de session, je veux tester si la date d'expiration de son abonnement n'est pas dépassé par rapport à la date du jour.
si la date d'expiration est supérieure à date du jour, on continue le code de la page commande.
si la date d'expiration est inférieure à la date du jour, il devra être redirigé vers la page de réabonnement.
la table clients est composée du nom, prenom, adresse, cp , ville, email, mot de pass, date de saisie, date d'expiration.
c'est pour réaliser la requête et le test que je patauge un peu.
ideal23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2007, 20h31   #5
Membre confirmé
 
Inscription : octobre 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 340
Points : 221
Points : 221
Envoyer un message via MSN à ideal23
bonsoir
voici ma réalisation, mais j'ai la fonction date_fin NOW() ne fait la difference <ou>

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php require_once('../Connections/connexionboutique.php'); ?>
<?php require_once('../includes/treemenus/MX_TreeMenu.inc.php'); ?>
<?php
//-------------------------------------------------Jeu rsRappelClient
$colname_rsRappelClient = "1";
if (isset($_SESSION['MM_Username'])) {
  $colname_rsRappelClient = (get_magic_quotes_gpc()) ? $_SESSION['MM_Username'] : addslashes($_SESSION['MM_Username']);
}
mysql_select_db($database_connexionboutique, $connexionboutique);
$query_rsRappelClient = sprintf("SELECT ID, date_fin FROM clients WHERE email = %s  and date_fin > NOW()", $colname_rsRappelClient);
$rsRappelClient = mysql_query($query_rsRappelClient, $connexionboutique) or die(mysql_error());
$row_rsRappelClient = mysql_fetch_assoc($rsRappelClient);
$totalRows_rsRappelClient = mysql_num_rows($rsRappelClient);
//-----------------------------------------Mémorisation du ID client dans la session
$clientID= mysql_result($rsRappelClient,0,'ID');
$_SESSION['clientID']=$clientID;
avez-vous une idée?
ideal23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2007, 15h57   #6
Membre confirmé
 
Inscription : octobre 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 340
Points : 221
Points : 221
Envoyer un message via MSN à ideal23
bonjour
merci beaucoup ça fonctionne, j'ai rectifié seulement la fonction `date_fin` > NOW()
je ne suis pas un pro en php, pourrais-tu m'aider à réaliser le code pour rediriger le client vers la page de réabonnement lorsque la date de fin est inférieure à la date du jour.
si inférieure: redirection vers page réabonnement
si supérieure: on continue la commande
ideal23 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2007, 15h17   #7
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
Pour ma part, j'utilise le refresh HTML. D'autres utilise header() en php. Mais le résultat est le même. Dans un cas comme dans l'autre, je te conseil de mettre exit; après la command qui te redirige. Cela permet de clore le process php (je ne connais pas les raisons exactes, mais "il faut faire comme cela c'est mieux disent les Wizards".
Code :
<meta http-equiv=\"refresh\" content=\"2; url=http://tonurl\">
Bon courage
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2007, 15h35   #8
Membre chevronné
 
Avatar de |PaRa-BoL
 
Inscription : novembre 2003
Messages : 737
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : novembre 2003
Messages : 737
Points : 782
Points : 782
Citation:
Pour ma part, j'utilise le refresh HTML. D'autres utilise header() en php. Mais le résultat est le même. Dans un cas comme dans l'autre, je te conseil de mettre exit; après la command qui te redirige. Cela permet de clore le process php (je ne connais pas les raisons exactes, mais "il faut faire comme cela c'est mieux disent les Wizards".
Attention, le résultat na rien avoir.
header() va envoyer une notification directement dans les headers HTTP disant que l'adresse a changée temporairement (ou pas). Cela a un impacte sur le référencement, la qualité de la redirection et sécurité (les redirection META ne se font pas sur tout les navigateurs).
exit(); permet tout simplement de ne pas exécuter ni afficher le reste du code et bien faire la redirection au moment voulu évitant ainsi toute triche.

Si tu colles un exit; après une balise <meta> tu va couper la sémantique de la page web qui ne sera donc plus standard.
__________________
http://www.ape-project.org/
|PaRa-BoL est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2007, 17h20   #9
Membre confirmé
 
Inscription : octobre 2006
Messages : 340
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 340
Points : 221
Points : 221
Envoyer un message via MSN à ideal23
bonjour
avec:
if ($row_rsRappelClient <='NOW()'){
header('Location: reabonnement.php');
exit;
}
ça fonctionne
ideal23 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 05h35.


 
 
 
 
Partenaires

Hébergement Web