Afficher résultat selon date (en mois)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Afficher résultat selon date (en mois)

Re: Afficher résultat selon date (en mois)

par Fafa » 26 juin 2012, 09:24

Bonjour,

Dans mon site internet, j'aimerais que suivant la date, il y ait marqué un évenement précis. Je m'explique : exemples : le 17 juin, c'est la fête des pères. Offrez un ... ; Le 10 juin, c'est la fête des mères. Offrez un ..... ; Le .....
Et lorsqu'il n'y a pas d'évenement à venir, j'aimerais qu'il soit marqué, "Pour votre anniversaire, ....."

Si vous voulez voir sur mon site ce que je veux dire, allez sur provencemassage.fr.

Merci de votre aide.

par lafieau » 21 mars 2006, 17:41

Bonjour !

Oumetou c'est écrit résolu, donc logiquement c'est que ça doit marcher ! :wink:

par Oumetou » 21 mars 2006, 17:09

SA MARCHE MAINTENANT?

par Ryle » 02 mars 2006, 14:50

C'est pas mal en effet pour changer le format de la date. Moi qui m'embêtait avec des substring pour couper la chaine aux bons endroits, je vais peut être opter pour celle là également :)

par lafieau » 02 mars 2006, 13:40

Salut !

Oui j'avais oublié pour le résolu. :roll:
Pour transformer les dates j'ai pris cette solution (avec de l'aide bien sûr ! merci encore Lousky !) :
$row_Recordset2['datedebut']= preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3.$2.$1',  $row_Recordset2['datedebut']);
$row_Recordset2['datefin']= preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3.$2.$1',  $row_Recordset2['datefin']);
Encore merci pour toute cette aide ! :D

par lafieau » 23 févr. 2006, 13:30

Bah t'es trop fort (mais j'y avais un peu songé tout d'même ! mais pas trop le réflexe de corriger les autres vu mon niveau ! :roll: )

Encore merci :lol:
Reste plus que je règle le pb des dates et selon l'évolution je te tiens au courant (avec tout ce que tu m'as refilé j'espère m'en sortir !)

par Ryle » 23 févr. 2006, 13:21

Arf, bah déjà ça te rammène quelque chose, c'est que tu es sur la bonne voie ;)

Ce serait pas une inversion sur les <= et >= dans ta comparaison de date ? (genre celle que j'ai fait dans le mon exemple ... tiens y a pas de smileys mal à l'aise qui regarde en l'air en sifflotant..)

Il doit te rammener les enregistrement dont la date de début est inférieure ou égale au mois sélectionné (datedebut <= $num_mois) et dont la date de fin est supérieure ou égale à celui-ci (datefin >= $num_mois). Cela rammènera toutes les périodes contenant le mois désiré :)

par lafieau » 23 févr. 2006, 12:59

Encore un pb, les résultats s'affichent bien quand c'est une date sur une seule journée, mais sur plusieurs mois ça n'affiche rien ! Du coup je comprends pas !
C'était trop beau ! :roll:

par Ryle » 23 févr. 2006, 10:55

Pas de quoi :)

et puis pour la transformation de tes dates, j'ai vu qu'il y avait un topic sur les dates dans la FAQ : http://www.phpfrance.com/forums/voir_sujet-8323.php

Il t'explique comment les transformer en php ou directement dans ta requête... il y a également pas mal d'infos sur leur manipulation (ajouter des jours, calculer un écart, ...) bref, tu pourras y faire ton marché ;)

par lafieau » 23 févr. 2006, 10:46

Merci Ryle, c'était bien ma requête qui ne collait pas (j'ai donc enlevé le surplus), ça marche à peu près, je dois régler encore quelques trucs et je te redis ça ! (comme transformer la date...).

Encore merci pour toute cette aide ! =D>

par Ryle » 23 févr. 2006, 10:32

C'est qu'il doit y avoir une erreur dans ton code sur (ou pas loin) de la ligne 9. Peux tu indiquer le début de ton code (genre les 15 premières lignes) que l'on puisse voir ce qui va pas ? :)

Sinon, dès le moment où tu as déclaré ta variable $num_mois=$_POST['num_mois']; tu peux utiliser $num_mois dans ta requête, ça permet de la rendre plus lisible (ça évite de la surcharger de crochets, apostrophes, ... :)
WHERE MONTH(datedebut) >= $num_mois AND MONTH(datefin)<= $num_mois

par lafieau » 23 févr. 2006, 10:03

Salut Ryle ! :lol:

Hé bien j'ai essayé comme tu m'as expliqué, mais j'ai ce message d'erreur :
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\program files\easyphp1-8\www\regiontoujours\essaievenementresultat.php on line 9
la requête :
$query_Recordset2 = "SELECT evenement, descriptif, ville, datedebut, datefin FROM tb_evenements WHERE MONTH(datedebut)>=$_POST['num_mois'] AND MONTH(datefin)<=$_POST['num_mois']";
et j'ai bien déclaré mes variables avant comme ça :
$num_mois=$_POST['num_mois'];
$evenement=$_POST['evenement'];
$departement2=$_POST['departement2'];

par Ryle » 22 févr. 2006, 15:33

En effet, il s'agit bien de tes deux champs datedebut et datefin (je me suis d'ailleurs planté dans la derniere requête que j'ai donné, le month() est pas du bon côté :)

Avec tout plein détail ça nous donne ceci :
// $_POST['num_mois'] contient le mois sélectionné par l'utilisateur

// La requête SQL recherche (SELECT) les entrées (champ1, champ2, ...) dans la table maTable 
$sql = "SELECT champ1, champ2, ..., datedebut, datefin FROM maTable "; 
// DONT le mois de la date "début" est supérieur ou égal au mois sélectionné
$sql.= " WHERE MONTH(dateDebut) >= $_POST['num_mois'] "; 
// ET le mois de la date "fin" est inférieur ou égal au mois sélectionné 
$sql.= " AND MONTH(dateFin) <= $_POST['num_mois'] "; 
Concernant ta deuxième question, dans MySql, les dates sont au format AAAA-MM-JJ (ce qui n'est pas le format us : MM-JJ-AAAA). Pour l'affichage, il n'y a pas de règle quant au moment ou il faut les transformer. En ce qui me concerne et pour me simplifier la tâche, je les change au format JJ/MM/AAAA juste après l'exéction de la requête, au moment ou je viens lire le champ, comme ça je suis toujours sûr du format que je manipule dans mes variables, mais tu peux tout aussi bien ne le faire qu'au moment où tu l'affiches :)

Prépare toi une petite fonction pour basculer d'un format à l'autre. C'est quelque chose que l'on fait régulièrement dès le moment où on manipule des dates ;)

N'hésites pas à me le dire si je ne suis pas clair ou si tu as besoin de plus d'infos :)

par lafieau » 22 févr. 2006, 11:47

Bonjour !

Ryle merci de ton intervention, mais le problème c'est que je n'ai pas vraiment compris comment fonctionnait la requête :
$sql = "... WHERE tonChampMoisEnBase = MONTH($_POST['num_mois']) ... ";
Quand tu dis "tonChampMoisEnBase" c'est bien des champs datedebut ou datefin dont il s'agit ? Désolé mais il me faut plus d'explications car je suis très nulle ! :shock:
Aussi, je ne l'avais pas spécifié avant, à quel moment je transforme le format us pour les dates afin de pouvoir les afficher en fr dans ma page résultat ?
Encore merci de tout cette aide ! :lol:

par Ryle » 21 févr. 2006, 16:59

Lorsque tu vas valider ton formulaire, il va envoyer les données de celui-ci à l'adresse indiquée dans l'attribut action de ce dernier, donc à "essaievenementresultat.php".

La méthode d'envoi étant POST, tu vas pouvoir récupérer les valeurs envoyées dans la variable globale $_POST. C'est un tableau associatif contenant pour chaque champ du formulaire le nom du champ associée la valeur saisie ou selectionnée.

Ainsi sur ta page "essaievenementresultat.php", $_POST['num_mois'] contiendra la valeur du "value" de l'option sélectionnée. Tu peux ainsi connaitre le mois choisis.

De même $_POST['evenement'] et $_POST['departement2'] contiendront les valeurs correspondante selectionnées.

Tu peux ainsi les utiliser dans ta requête avec par exemple un
$sql = "... WHERE tonChampMoisEnBase = MONTH($_POST['num_mois']) ... ";
A adapter avec la requête précédente pour gérer les enregistrement commençant ou finissant en janvier :)