IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

insérer une date dans une table dans un format compréhensible [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut insérer une date dans une table dans un format compréhensible
    Pour faire un test, je souhaite insérer dans une bdd des dates ; la valeur insérée est au format timestamp, par contre je souhaite que la saisie soit en clair. J'ai décidé de rajouter un peu de code PHP afin que l'utilisateur (moi) puisse saisir la date en clair, qu'elle soit ensuite convertie en timestamp et enfin insérée dans la bdd. Les 2 premières étapes sont au point mais pas la 3e et dernière car dans la bdd, ça m'insère 0000-00-00 00:00:00 :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <form method="post" action=""><table>
    <tr><td>année</td><td><input type="number" name="year"></td></tr>
    <tr><td>mois</td><td> <input type="number" name="month"></td></tr>
    <tr><td>jour</td><td> <input type="number" name="day"></td></tr>
    </table>
    <input type="submit" value="Envoyer" />
    </form>
    <?php
    if ((($_POST["year"])!="") && (($_POST["month"])!="")&&(($_POST["day"])!="")) 
    {
    /* conversion date en timestamp */
    $timestamp = new DateTime($_POST['day']."-".$_POST['month']."-".$_POST['year']); 
    $req="INSERT INTO visites (timestamp) VALUES('".$timestamp->getTimestamp()."')";
    $result=mysqli_query($db,$req);
    }
    else echo "remplissez tous les champs !<br/>";
    ?>
    quel est le bug ?

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    if (empty($_POST['year']) || empty($_POST['month']) || empty($_POST['day']))
    {
        echo "remplissez tous les champs !<br/>";
    }
    else
    {
        $date = new \DateTime($_POST['year'].'-'.$_POST['month'].'-'.$_POST['day']);
        if ($date === false)
        {
            echo 'Date invalide';
        }
        else
        {
            $sql = "INSERT INTO visites (`timestamp`) VALUES ('".$date->format('Y-m-d')."')";
            $qry = mysqli_query($db, $sql);        
        }
    }

  3. #3
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Merci de me proposer un truc, au début ça marchait pas, mais c'est sûr que sans se connecter à la bdd, c'est difficile...et il y a quand même un petit bug dans ton code : $date->format('Y-m-d') marche mieux que $timestamp->format('Y-m-d')...

  4. #4
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Hier soir, ça ne marchait pas et j'ai pas compris (aucun message d'erreur mais pas d'insertion d'enregistrement), mais ce matin, ça marche...

    Au fait, y avait un autre bug dans ton code : if (empty($_POST['year']) || empty($_POST['month']) || empty($_POST['day'])) plutôt que
    if (empty($_POST['year']) && empty($_POST['month']) && empty($_POST['day']))Et pour ne pas réintroduire un bug par copier-coller, le code corrigé :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    if (empty($_POST['year']) || empty($_POST['month']) || empty($_POST['day']))
    {
        echo "remplissez tous les champs !<br/>";
    }
    else
    {
        $date = new DateTime($_POST['year'].'-'.$_POST['month'].'-'.$_POST['day']);
        if ($date === false)
        {
            echo 'Date invalide';
        }
        else
    	{
    		$sql = "INSERT INTO visites (`timestamp`) VALUES ('".$date->format('Y-m-d')."')";
            $qry = mysqli_query($db, $sql);       
        }
    }

  5. #5
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Ouaip, merci

    Je devais être paumé dans ma tête quand j'e t'ai répondu.

  6. #6
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Ce soir, plus résolu !

    En effet, plus rien n'est inséré dans la table ; pourtant le code est exactement le même que celui de la discussion #4 (où j'ai renommé la colonne en "timestamp1" pour ne pas utiliser un mot-clé), la requête est : INSERT INTO visites (`timestamp1`) VALUES ('2001-09-11'), le type de la colonne "timestamp1" est timestamp, l'affichage des erreurs PHP est activé et je teste la requête avec un PDO en mode exception...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/07/2015, 13h20
  2. Réponses: 8
    Dernier message: 05/12/2008, 11h43
  3. JPanel dans une JFrame ok, mais JPanel dans un JScrollPane dans une JFrame non :(
    Par FenX. dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 22/05/2008, 10h45
  4. [Dates] récupérer le mois dans une date
    Par griese dans le forum Langage
    Réponses: 3
    Dernier message: 06/06/2006, 15h25
  5. Réponses: 5
    Dernier message: 28/04/2006, 11h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo