PHP-HTML formulaire

Résolu
chabinot Messages postés 322 Date d'inscription   Statut Membre Dernière intervention   -  
chabinot Messages postés 322 Date d'inscription   Statut Membre Dernière intervention   -
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 322 Date d'inscription   Statut Membre Dernière intervention   16
 
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 322 Date d'inscription   Statut Membre Dernière intervention   16
 
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