Menu

PHP-HTML formulaire [Résolu]

chabinot 121 Messages postés mardi 10 novembre 2015Date d'inscription 16 février 2018 Dernière intervention - 11 nov. 2017 à 08:36 - Dernière réponse : chabinot 121 Messages postés mardi 10 novembre 2015Date d'inscription 16 février 2018 Dernière intervention
- 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
Afficher la suite 

3 réponses

Répondre au sujet
jordane45 19991 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 17 février 2018 Dernière intervention - 11 nov. 2017 à 13:14
0
Utile
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 :
http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

.

Commenter la réponse de jordane45
chabinot 121 Messages postés mardi 10 novembre 2015Date d'inscription 16 février 2018 Dernière intervention - 11 nov. 2017 à 14:31
0
Utile
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 
Commenter la réponse de chabinot
chabinot 121 Messages postés mardi 10 novembre 2015Date d'inscription 16 février 2018 Dernière intervention - 11 nov. 2017 à 15:09
0
Utile
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
Commenter la réponse de chabinot