2 votes

Quelle est la bonne façon d'obtenir une valeur locale de date et d'heure à partir de l'entrée et de l'insérer dans une base de données ?

J'ai un formulaire avec une entrée datetime-local et je cherche comment extraire la valeur de la date et de l'heure que l'utilisateur a entré dans cette datetime-local et passer sa valeur dans une colonne nommée listDates dans ma table de base de données appelée date_table ;

Ma connexion à la base de données fonctionne correctement et tout le reste. Et j'ai d'autres fonctions similaires qui ajoutent de simples chaînes de caractères dans des zones de texte et elles fonctionnent toutes correctement. C'est juste la datetime-local qui ne s'enregistre pas (ou plutôt qui ne s'enregistre que comme 0000-00-00 00:00:00 (la valeur datetime initiale du 1er janvier 1970).

Comment puis-je obtenir la valeur de datetime-local et la passer dans ma base de données ? Je vous remercie pour toute l'aide que vous pourrez m'apporter, je suis seulement coincé avec cette partie particulière du codage PHP et MySQLi.

Mon formulaire

     <form>

        <input name="theDate" type="datetime-local" required>

        <a href="dateCRUD.php?theDate=<?php $_GET['theDate'] ?>&action='addDate'"</a>

        <!--I'm not sure if $_GET should be the proper way to get the datetime-local value-->
    </form>

Mon dateCRUD php où j'ajoute, mets à jour, supprime des dates à partir d'une table de base de données appelée date_table

    $theDate = isset($_REQUEST['theDate']);

    switch($_REQUEST['action']){
        case 'addDate':
        {
             addDate($theDate);
             break;
        }
    }

Ma fonction php MySQLi pour ajouter la date (addDate())

      function addDate($theDate)
      {
           global $conn; //my connection to my database which works fine.

           $query = 'INSERT INTO date_table SET listDates = ?';
           $stmt = $conn->prepare($query);
           $stmt->bind_param('s', $theDate) //can datetime-local be a 'string'?
           $stmt->execute();
      }

EDIT

Si cela peut vous aider, j'ai défini mon type listDate à "datetime" dans ma table date_table de ma base de données. Dois-je le remplacer par un type "string" ?

2voto

Prakash Saini Points 465

Le problème se situe dans votre formulaire où vous essayez d'envoyer une date locale au serveur et de la stocker dans la base de données. Le type datetime de la table date_table dans la base de données est correct. L'heure de la date stocke la valeur locale de l'heure de la date. Dans votre formulaire <a href="dateCRUD.php?theDate=<?php $_GET['theDate'] ?>&action='addDate'"</a> , <?php $_GET['theDate'] ?> n'envoie pas la valeur locale de la date et de l'heure au serveur. Vous devez envoyer la valeur du formulaire en utilisant un bouton dans le formulaire. Comme par exemple

<form method="post" action="dateCRUD.php&action=addDate">
        <input name="theDate" type="datetime-local" required>
        <input type="submit" name="addDate">

</form>

Mettez à jour votre code php comme suit

if(isset($_POST['addDate'])){
 $theDate = isset($_POST['theDate']);
 switch($_REQUEST['action']){
    case 'addDate':
    {
         addDate($theDate);
         break;
    }
 }
}

Utilisez la même fonction MySQL pour stocker la date dans la base de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X