PHP-HTML formulaire

Résolu/Fermé
chabinot Messages postés 321 Date d'inscription mardi 10 novembre 2015 Statut Membre Dernière intervention 22 mars 2024 - 11 nov. 2017 à 08:36
chabinot Messages postés 321 Date d'inscription mardi 10 novembre 2015 Statut Membre Dernière intervention 22 mars 2024 - 11 nov. 2017 à 15:09
Bonjour,
J'ai un formulaire en html(php), ma page index est index.php
Voilà le code :
<form class="form" method="post">
            <div class="form-group">
                <label for="annee">Année</label>
                <select class="select" name="annee" id="an">
                    <option value="2017">2017</option>
                    <option value="2018">2018</option>
                    <option value="2019">2019</option>
                    <option value="2020">2020</option>
                    <option value="2021">2021</option>
                </select>
                <button type="submit" class="btn btn-success btn-sm">Envoyer</button>
            </div>
        </form>

et le code php :
<?php

// Autoloading
require './vendor/autoload.php';

// Date du jour 
$date = new Date();
$year = date('Y');

$today = date('Ymd');
$dref = $year . '0630';

// Traitement du formulaire
if (!empty($_POST['annee'])) {
  $annee = htmlspecialchars($_POST['annee']);
  $year  = $annee;
}

Quand je sélectionne une année, j'aimerais que l'année reste affichée, je sais qu'il faut jouer avec selected=selected. Mais, je veux qu'il me mette cela au niveau de la date sélectionnée.
Comment faire ?
Cordialement
A voir également:

3 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
11 nov. 2017 à 13:14
Bonjour,

voila :
<?php
//fichier index.php
//-----------------------------------------------------------//
//activation des erreurs php
//-----------------------------------------------------------//
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//-----------------------------------------------------------//
// Autoloading
//-----------------------------------------------------------//
require './vendor/autoload.php';

//-----------------------------------------------------------//
// Date du jour 
//-----------------------------------------------------------//
$year = date('Y');
$today = date('Ymd');
$dref = $year . '0630';

//-----------------------------------------------------------//
//Récupération propre des variables POST / GET / SESSION....
//-----------------------------------------------------------//
$annee = !empty($_POST['annee']) ? $_POST['annee'] : NULL;



?>



<form class="form" method="post" action="">
    <div class="form-group">
        <label for="annee">Année</label>
        <select class="select" name="annee" id="an">
        <?php
          for($a = 2017 ; $a<=2021 , $a++){
            $selected = $a == $annee ? ' selected="selected" ' : '';
            echo '<option value="'.$a.'" '.$selected . '>'.$a.'</option>';
          }
        ?>                  
        </select>
        <button type="submit" class="btn btn-success btn-sm">Envoyer</button>
    </div>
</form>


Au passage, je t'invite à lire ceci :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

.

0
chabinot Messages postés 321 Date d'inscription mardi 10 novembre 2015 Statut Membre Dernière intervention 22 mars 2024 15
11 nov. 2017 à 14:31
Bonjour,
Merci pour la réponse, cela marche très bien.
Encore un petit problème, j'ai une classe php Month comme suit :
<?php
class Month extends Date
{

  /**
   * Libellé du mois
   *
   * @param int $m
   * @return string
   */
    public function rtvDay($date)
    {
        $date = new DateTime($date);
        $j = $date->format('N');
        $d = $date->format('d');

        return $this->days[$j] . ' ' . $d;
    }
    public function rtvDayOfYear($date)
    {
        $date = new DateTime($date);
        $date = $date->format('Y-m-d');
    
        return intval(strftime("%j", strtotime($date)));
    }
    public function rtvWeek($date)
    {
        $date = new DateTime($date);
      
        return $date->format('W');
    }
    public function getMonth($mois)
    {
        $year = date('Y');
        $mois = ($mois < 10 ? '0' : '') . $mois;
        $day = 1;
        $date = $year.'-'.$mois.'-01';
        $nbj = date('t', strtotime($date));
        $nbj = intval($nbj);

        $today = date('Y-m-d');

        $an = $year.'-01-01';
        $paq = $this->paques($year);
        $lpaq = $this->rtvPaq($year);
        $trav = $year.'-05-01';
        $vict = $year.'-05-08';
        $asc = $this->rtvAsc($year);
        $pent = $this->pentecote($year);
        $lpent = $this->rtvPent($year);
        $fetnat = $year.'-07-14';
        $assomp = $year.'-08-15';
        $toussaint = $year.'-11-01';
        $arm = $year.'-11-11';
        $noel = $year.'-12-25';
    
  
        $feries = [
        $an, $paq, $lpaq, $trav, $vict, $asc, $pent, $lpent, $fetnat, $assomp, $toussaint, $arm, $noel
        ];
    
        for ($i = 1; $i <= $nbj; $i++) {
            $j = ($i < 10 ? '0' : '') . $i;
            $dt = $year.'-'.$mois.'-' . $j;
            $y = date('Y', strtotime($dt));
            $m = date('m', strtotime($dt));
            $d = date('d', strtotime($dt));
            if (in_array($dt, $feries) && ($dt !== $today)) {
                $r = '<div class="day green">';
            } elseif ($dt == $today) {
                $r = '<div class="day red">';
            } else {
                $r = '<div class="day">';
            }
            $r .= '<p>' . $this->rtvDay($dt)  . '</p>';
            $r .= '</div>';
            $r .= '<div class="jour-sem">';
            if (in_array($dt, $feries) && ($dt !== $today)) {
                $r .= '<div class="daylib green">';
            } elseif ($dt == $today) {
                $r .= '<div class="daylib red">';
            } else {
                $r .= '<div class="daylib">';
            }
            $r .= '<p>' . $this->rtvDayOfYear($dt) . '</p>';
            $r .= '</div>';
            if (in_array($dt, $feries) && ($dt !== $today)) {
                $r .= '<div class="weeklib green">';
            } elseif ($dt == $today) {
                $r .= '<div class="weeklib red">';
            } else {
                $r .= '<div class="weeklib">';
            }
            $r .= '<p>' . $this->rtvWeek($dt) . '</p>';
            $r .= '</div></div>';

            echo $r;
        }
    }
}
J'aimerais passer l'année en paramètre pour pouvoir remplacer dans la fonction getMonth $year = date('Y') par $year = $year passée en paramètre.
Si vous avez une idée, elle serait la bienvenue.
Cordialement 
0
chabinot Messages postés 321 Date d'inscription mardi 10 novembre 2015 Statut Membre Dernière intervention 22 mars 2024 15
11 nov. 2017 à 15:09
Bonjour,
J'ai trouvé, il fallait ajouter un constructeur, voilà ce que j'ai fait :
class Month extends Date
{
    public $year;
    public function __construct($year)
    {
        $this->year = $year;
    }
    public function getMonth($mois)
    {
        $year = $this->year;
        $mois = ($mois < 10 ? '0' : '') . $mois;
        $day = 1;
        $date = $year.'-'.$mois.'-01';
        $nbj = date('t', strtotime($date));
        $nbj = intval($nbj);

        $today = date('Y-m-d');

        $an = $year.'-01-01';
        $paq = $this->paques($year);
        $lpaq = $this->rtvPaq($year);
        $trav = $year.'-05-01';
        $vict = $year.'-05-08';
        $asc = $this->rtvAsc($year);
        $pent = $this->pentecote($year);
        $lpent = $this->rtvPent($year);
        $fetnat = $year.'-07-14';
        $assomp = $year.'-08-15';
        $toussaint = $year.'-11-01';
        $arm = $year.'-11-11';
        $noel = $year.'-12-25';
    
  
        $feries = [
        $an, $paq, $lpaq, $trav, $vict, $asc, $pent, $lpent, $fetnat, $assomp, $toussaint, $arm, $noel
        ];
    
        for ($i = 1; $i <= $nbj; $i++) {
            $j = ($i < 10 ? '0' : '') . $i;
            $dt = $year.'-'.$mois.'-' . $j;
            $y = date('Y', strtotime($dt));
            $m = date('m', strtotime($dt));
            $d = date('d', strtotime($dt));
            if (in_array($dt, $feries) && ($dt !== $today)) {
                $r = '<div class="day green">';
            } elseif ($dt == $today) {
                $r = '<div class="day red">';
            } else {
                $r = '<div class="day">';
            }
            $r .= '<p>' . $this->rtvDay($dt)  . '</p>';
            $r .= '</div>';
            $r .= '<div class="jour-sem">';
            if (in_array($dt, $feries) && ($dt !== $today)) {
                $r .= '<div class="daylib green">';
            } elseif ($dt == $today) {
                $r .= '<div class="daylib red">';
            } else {
                $r .= '<div class="daylib">';
            }
            $r .= '<p>' . $this->rtvDayOfYear($dt) . '</p>';
            $r .= '</div>';
            if (in_array($dt, $feries) && ($dt !== $today)) {
                $r .= '<div class="weeklib green">';
            } elseif ($dt == $today) {
                $r .= '<div class="weeklib red">';
            } else {
                $r .= '<div class="weeklib">';
            }
            $r .= '<p>' . $this->rtvWeek($dt) . '</p>';
            $r .= '</div></div>';

            echo $r;
        }
    }
}

Merci encore pour ton aide
Cordialemnt
0