[RESOLU] Problème $date du jour. Créer une variable $today pour comparaison

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 : [RESOLU] Problème $date du jour. Créer une variable $today pour comparaison

Re: Problème $date du jour. Créer une variable $today pour comparaison

par johanna » 20 mai 2015, 11:05

Sujet Résolu:

en fait cela venait de :

Code : Tout sélectionner

$donnees = $reponse->fetch(); // On affiche chaque entrée une à une while($donnees =$reponse->fetch(PDO::FETCH_BOTH))
Il y avait une répétition des fetch, il m'a fallu remplacer par

Code : Tout sélectionner

while($donnees =$reponse->fetch(PDO::FETCH_BOTH))
et ça fonctionne.

Merci de votre aide

Re: Problème $date du jour. Créer une variable $today pour comparaison

par johanna » 20 mai 2015, 10:55

Bonjour,

Alors ma table agenda se présente comme tel :
NOM - TYPE - AUTRE
idEvent - int - (primary key, AI)
titre - varchar
lieu - varchar
duree - date
description - longtext

Voici mon champ dans mon formulaire pour la date

Code : Tout sélectionner

<label for="duree" class="col-sm-4">Durée</label> <input type="date" name="duree" id="duree" class="form-control" value="2015-05-19" />
et enfin mon traitement php pour insérer les éléments dans la base de donnée

Code : Tout sélectionner

$req = $pdo->prepare('INSERT INTO agenda (titre, lieu, duree, description) VALUES(?, ?, ?, ?)'); $req->execute(array($_POST['titre'], $_POST['lieu'], $_POST['duree'], $_POST['description']));
Merci pour votre aide

Re: Problème $date du jour. Créer une variable $today pour comparaison

par tof73 » 20 mai 2015, 02:07

un exemple du contenu de la table agenda et surtout du champ duree, stp.

Re: Problème $date du jour. Créer une variable $today pour comparaison

par johanna » 20 mai 2015, 01:57

Effectivement ce n'était pas au bon format, j'ai donc changé mon format dans mon code pour qu'il corresponde à celui de la base de donné "Y m d", mais là c'est pire car plus rien ne marche. Ni les event à venir ni ceux du moment.

Code : Tout sélectionner

<h2 class="souligne">En ce moment</h2> <?php $today = date("Y-m-d"); $reponse = $pdo->query("SELECT * FROM agenda WHERE duree = '$today'"); $donnees = $reponse->fetch(); // On affiche chaque entrée une à une while ($donnees = $reponse->fetch(PDO::FETCH_BOTH)) { ?> <h3><?php echo $donnees['titre']; ?></h3> <p><strong>Lieu</strong> : <?php echo $donnees['lieu']; ?></p> <p><strong>Date</strong> : <?php echo $donnees['duree']; ?></p> <p><?php echo $donnees['description']; ?></p> <br/> <?php } $reponse->closeCursor(); // Termine le traitement de la requête ?> <h2 class="souligne">Evénements à venir</h2> <?php $today = date("Y-m-d"); $reponse = $pdo->query("SELECT * FROM agenda WHERE duree > '$today'"); $donnees = $reponse->fetch(); // On affiche chaque entrée une à une while ($donnees = $reponse->fetch(PDO::FETCH_BOTH)) { ?> <h3><?php echo $donnees['titre']; ?></h3> <p><strong>Lieu</strong> : <?php echo $donnees['lieu']; ?></p> <p><strong>Date</strong> : <?php echo $donnees['duree']; ?></p> <p><?php echo $donnees['description']; ?></p> <br/> <?php } $reponse->closeCursor(); // Termine le traitement de la requête ?>

Re: Problème $date du jour. Créer une variable $today pour comparaison

par johanna » 20 mai 2015, 01:13

merci pour ta réponse, donc normalement selon toi tel que mon code est écrit il n'y a pas de problème?
Le " = " sur ce bout de code est bien une forme correcte pour comparer la date avec ma valeur dans ma base de donnée ?

Code : Tout sélectionner

$reponse = $pdo->query("SELECT * FROM agenda WHERE duree = '$today'");
Je vais essayer de faire un echo pour voir ce que cela me donne, je pensais plutôt que cela venait de ce égal du coup j'ai peut-être fait l'impasse sur quelque chose en SQL. Merci pour cette nouvelle orientation.

Re: Problème $date du jour. Créer une variable $today pour comparaison

par @rthur » 20 mai 2015, 00:51

Bonjour,

Es-tu sûr que dans ta table SQL, la date de tes évènement est stocké sous la forme d-m-Y ?
Car généralement, c'est stocké sous forme Y-m-d ou à défaut sous forme de timestamp.

Sinon pour débuguer ce que tu peux faire c'est un echo de ta requête SQL et la tester dans phpmyadmin pour voir ce qui cloche, car je pense que c'est davantage un problème de SQL que de PHP.

Problème $date du jour. Créer une variable $today pour comparaison

par johanna » 20 mai 2015, 00:32

Bonjour,

Je suis entrain de créer un site annuaire, et il y a une partie "Agenda". Dans celle-ci les personnes membres peuvent ajouter des événements et après ces événements apparaissent chacun dans des onglets rangés par :
- en ce moment
- a venir
- passé.

Mon problème c'est que mes événements "en ce moment" ne s'affichent pas et je ne comprends pas pourquoi. J'ai regardé sur plein de forum, de site et sur la nomemclature php mais je n'ai pas trouvé d'où vient le problème.

Voici mon code qui ne marche pas pour la catégorie "En ce moment cela affiche les événement à venir or ce n'est pas le but :

Code : Tout sélectionner

<h2 class="souligne">En ce moment</h2> <?php $today = date("d-m-Y"); $reponse = $pdo->query("SELECT * FROM agenda WHERE duree = '$today'"); $donnees = $reponse->fetch(); // On affiche chaque entrée une à une while ($donnees =$reponse->fetch(PDO::FETCH_BOTH)) { ?> <h3><?php echo $donnees['titre']; ?></h3> <p><strong>Lieu</strong> : <?php echo $donnees['lieu']; ?></p>< <p><strong>Date</strong> : <?php echo $donnees['duree']; ?></p> <p><?php echo $donnees['description']; ?></p> <?php } $reponse->closeCursor(); // Termine le traitement de la requête ?>
Et maintenant voici la catégorie "a venir" qui elle fonctionne et affiche bien les événement qui n'ont pas encore eu lieu

Code : Tout sélectionner

<h2 class="souligne">Evénements à venir</h2> <?php $today = date("d-m-Y"); $reponse = $pdo->query("SELECT * FROM agenda WHERE duree > '$today'"); $donnees = $reponse->fetch(); while ($donnees = $reponse->fetch(PDO::FETCH_BOTH)) { ?> <h3><?php echo $donnees['titre']; ?></h3> <p><strong>Lieu</strong> : <?php echo $donnees['lieu']; ?></p> <p><strong>Date</strong> : <?php echo $donnees['duree']; ?></p> <p><?php echo $donnees['description']; ?></p> <br/> <?php } $reponse->closeCursor(); // Termine le traitement de la requête ?>
Merci de votre aide