Bonjour à tous,
je suis débutant dans le domaine et j'essai de crée une sorte de selection de date pour afficher un planning de salles, avec par defaut la date aujourd'hui.
Le bout de code que j'ai récupéré sur le web marche pour la selection mais me renvoie 3 erreurs :
Notice : Undefined Index: annee
Notice : Undefined Index: mois
Notice : Undefined Index: jour
voici mon code :

<form method="GET" >
<center>

            <select name="jour">
            <option value="">jour</option>
            <?php for ($jour = 1; $jour <= 31; $jour++) { ?>
            <option value="<?php echo strlen($jour)==1 ? '0'.$jour : $jour; ?>">
            <?php echo strlen($jour)==1 ? '0'.$jour : $jour; ?></option>
            <?php } ?>
            </select> 

            <select name="mois">
            <option value="">mois</option>
            <?php for ($mois = 1; $mois <= 12; $mois++) { ?>
            <option value="<?php echo strlen($mois)==1 ? '0'.$mois : $mois; ?>">
            <?php echo strlen($mois)==1 ? '0'.$mois : $mois; ?></option>
            <?php } ?>
            </select>

            <select name="annee">
            <option value="">annee</option>
            <?php for ($annee = date('Y'); $annee > date('Y')-100; $annee--) { ?>
            <option value="<?php echo $annee; ?>"><?php echo $annee; ?></option>
            <?php } ?>
            </select>
            <input type="submit" value="Envoyer" name="Envoyer" />
</center>
</form>

<center>
    <?php
        $date=$_GET['annee'].'-'.$_GET['mois'].'-'.$_GET['jour']; //ligne qui pose probleme
    ?>
</center>

Si vous pouviez me dire ce qui ne va pas ou me proposer une meilleur solution :/
Merci d'avance !

5 réponses


connected
Réponse acceptée

Bonjour,

je te propose ceci, avec quelques simplifications :

<?php

$_GET['jour'] = empty($_GET['jour']) ? date('j') : $_GET['jour'];
$_GET['mois'] = empty($_GET['mois']) ? date('m') : $_GET['mois'];
$_GET['annee'] = empty($_GET['annee']) ? date('Y') : $_GET['annee'];

?>

<form method="get">

  <select name="jour">
    <option value="">jour</option>

    <?php for ($jour = 1; $jour <= 31; $jour++): ?>
    <option value="<?= sprintf('%02d', $jour) ?>"<?= $jour == $_GET['jour'] ? ' selected' : ''?>>
      <?= sprintf('%02d', $jour) ?>
    </option>
    <?php endfor; ?>
  </select> 

  <select name="mois">
    <option value="">mois</option>
    <?php for ($mois = 1; $mois <= 12; $mois++): ?>
    <option value="<?= sprintf('%02d', $mois) ?>"<?= $mois == $_GET['mois'] ? ' selected' : ''?>>
      <?= sprintf('%02d', $mois) ?>
    </option>
    <?php endfor; ?>
  </select>

  <select name="annee">
    <option value="">annee</option>
    <?php for ($annee = date('Y'); $annee > date('Y')-100; $annee--): ?>
    <option value="<?= $annee; ?>"<?= $annee == $_GET['annee'] ? ' selected' : ''?>>
      <?= $annee; ?>
    </option>
    <?php endfor; ?>
  </select>
  <input type="submit" value="Envoyer" name="Envoyer" />

</form>

<?php
  $date=$_GET['annee'].'-'.$_GET['mois'].'-'.$_GET['jour'];
  echo $date;
?>

Si ton serveur n'accepte pas les shortags pour les echo remplace les "<?=" par "<?php echo".

Bon courage à toi.

Pour sélectionner le jour d'aujourd'hui:

<?php for ($jour = 1; $jour <= 31; $jour++) {  ?>
  <option <?= ($jour == date('d)) ? ' selected ' : ''; ?> value="<?= strlen($jour)==1 ? '0'.$jour : $jour; ?>">
  <?= strlen($jour)==1 ? '0'.$jour : $jour; ?></option>
<?php } ?>
tekado
Auteur

Merci de vos réponses =)
mastertaskone - Les variables n'existent pas tant que je n'ais pas fait de "selection" de date, apres une selection je n'ais plus d'erreurs (voila pourquoi j'aimerais afficher de base, le planning d'aujourd'huis !

Carouge10 - je crois qu'il manque un " ' " après le d dans($jour == date('d)) sinon j'ai testé et ça ne m'affiche pas le résultat voulu.Je veux que la date s'affiche directement dans l'option de selection de date pour qu'il affiche le planning du jour directement

Avez vous d'autres solutions ?
</center>
</form>

tekado
Auteur

connected - Un grand merci à toi ça a marché du 1er coup ! Je vais essayé de comprendre pourquoi maintenant ^^

Pas de quoi :)
N'hésite pas à demander si une partie n'est pas très claire, c'est vrai que je n'ai pas commenté du tout lol

Bon courage à toi.