bonjour j'ai un code php et il y a une formulaire html de-dans, et le input date de mon formulaire ne retourne pas la date que je selectionne et je ne comprend pas pourquoi, si quelqu'un peux me dire ou se trouve mon probléme, voila mon code


<?php
include("header_date.php");
?>
<?php
$hostdb = 'localhost';
$userdb = 'root';
$passdb = '';
$namedb = 'mfb';

try
   {
     $conn = new PDO("mysql:host=".$hostdb."; dbname=".$namedb."", $userdb, $passdb, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
     $conn->exec("SET CHARACTER SET utf8");
    }
catch (PDOException $e)
   {
     echo 'La base de donnée n\'est pas disponible';
    }

$erreur_requete = null;
$tableau_ville = array();

try
{
        if(isset($_POST['bouton']))
  {
          $stmt = $conn->prepare("INSERT INTO projet(projet_id, projet_nom, projet_descr, projet_debut, projet_fin) VALUES ( ?, ?, ?, ?, ?)");
          $stmt->execute(array($_POST['ID'],$_POST['Nom'],$_POST['Description'],$_POST['Debut'],$_POST['Fin']));
          print_r($stmt->errorInfo());

          header('Location: projet.php');
          exit;
  }
        else
        {
                $req = "SELECT * FROM projet";
                $res = $conn->query($req);

                $tableau_projet = $res->fetchAll(PDO::FETCH_ASSOC);

                $res->closeCursor();
        }
}
catch(PDOException $e)
{

   $erreur_requete = "Problème dans la requête";

     $erreur_requete .= " : ".$e->getMessage();
}

?>

    <div>

        <?= isset($erreur_requete) ? $erreur_requete : '';?>
    </div>
    <script>
            $(function() {
            $( "#Debut" ).datepicker({
            numberOfMonths: 2,
            onClose: function( selectedDate ) {
            $( "#Fin" ).datepicker( "option", "minDate", selectedDate );
            }
            });
            $( "#Debut" ).datepicker({
            numberOfMonths: 2,
            onClose: function( selectedDate ) {
            $( "#Fin" ).datepicker( "option", "maxDate", selectedDate );
            }
            });
            });
            </script>

    <form name="form" action="ajout_projet.php" method="POST" enctype="multipart/form-data" >
                <fieldset>
            <legend><em>Ajout d'un Projet</em></legend>
            <table align="center">
            <tr>
                <td></td>
            </tr>
            <tr>
                <td>
                    <label for="ChampCode">ID du projet:</label>
                </td>
                <td>
                    <input type="text" id="ID" name="ID" require/>
                </td>
            </tr>
            <tr>
                <td>
                    <label for="ChampNom">Nom du Projet:</label>
                </td>
                <td>
                    <input type="text" id="Nom" name="Nom" require/>
                </td>
            </tr>
            <tr>
                <td>
                    <label for="ChampDescription">Projet Description:</label>
                </td>
                <td>
                    <input type="text" id="Description" name="Description" require/>
                </td>
            </tr>
            <tr>

            <script>
            $(function() {
            $( "#from" ).datepicker({
                defaultDate: "+1w",
changeMonth: true,
            numberOfMonths: 1,
            onClose: function( selectedDate ) {
            $( "#to" ).datepicker( "option", "minDate", selectedDate );
            }
            });
            $( "#to" ).datepicker({
                defaultDate: "+1w",
changeMonth: true,
            numberOfMonths: 1,
            onClose: function( selectedDate ) {
            $( "#from" ).datepicker( "option", "maxDate", selectedDate );
            }
            });
            });
            </script>
                 <td>
            <div class="demo">D&eacute;but du projet: <td><input type="date" id="from" name="Debut"></td></div>
            </td>
            </tr>
            <tr>
            <td>

            <div class="demo">Fin du projet: <td><input type="date" id="to" name="Fin"></td></div>
                </td>
            </tr>

        <tr>
        <td></td>       
    <td>
        <form action="ajout_projet.php" method="POST">
            <input type="submit" name="bouton" value="Ajouter" style="background-color: black;
width: 80px;
height:30px;
border-radius: 6px;
color: white;
font-family: algerian;
text-align: center;" /> 
            <a href='projet.php'><input class='button' type='button' value='Annuler' style="background-color: black;
width: 80px;
height:30px;
border-radius: 6px;
color: white;
font-family: algerian;
text-align: center;"></a>
        </form>
    </td>
            </tr>
        </table>
        </fieldset>
    </form>

    <?php
include("footer.php");
?>

18 réponses


Bonjour,

Vous avez 2 balises form dans votre page.

oui et?? l'autre c'est pour les boutons et l'autre pour le formulaire!!

Et ? Vous ne pouvez pas imbriquer 2 form ayant la même destination.
Enlever le form qui entoure le bouton et vous verrez que vos données seront bien envoyé vers la page de traitement.

ok merci
mais rien ne change à mon probléme,

Si vous faite un var_dump($_POST);
vous avez quelque chose ?

En effet le submit est pas situé dans le bon formulaire , fait un

var_dump($_POST);
die();

tout en haut de ta page et fait un copier coller de ce qu'il y a dedans

array (size=0)
empty
voila le message!!

D'après le code vous avez 2 forms imbriqués donc forcément ça ne risque pas de marcher.

De plus un peu plus de politesse et moins de ponctuation agressive seraient les bienvenues ;)

ah ok merci, mais j'ai déjà enlevée l'autre form mais ça ne change rien à mon probléme!!

Pouvons nous voir le nouveaux code ?

le code est bon donc c'est un problème de submit à priori

Il manque les "d" aux "required" dans les inputs donc je préfère avoir le nouveau code afin de bien tout revérifier.

Quant est-il du nouveau code ? Est-ce que le problème est résolu ou non?
De plus, mettre des balises script dans un formulaire n'est pas correct.

le probléme vient donc du fait que mon SGBD ne reconnait que la date du forme 0000-00-00 mais non 00-00-0000 comme moi je fait.

Il ne vous reste plus qu'à transformer cette date avant son insertion.

Quel est le SGBD que tu utilises ?
Car sinon tu peux faire : ALTER SESSION SET NLS_DATE_FORMAT = "dd-mm-yyyy".

j'utilise wampserver

Ton SGBD est donc MySQL. Pour modifier une date, il faut que tu utilises la fonction DATE_FORMAT(date, format).aroundPour en savoir plus sur les formats de la date, je te laisse consulter ce lien si besoin :
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_date-format