Signaler

PHP-HTML formulaire [Résolu]

Posez votre question chabinot 64Messages postés mardi 10 novembre 2015Date d'inscription 11 novembre 2017 Dernière intervention - Dernière réponse le 11 nov. 2017 à 15:09 par chabinot
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
Utile
+0
plus moins
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

.

Donnez votre avis
Utile
+0
plus moins
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 
Donnez votre avis
Utile
+0
plus moins
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
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !