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 :

Affichage et enregistrer les dates actuelles avec la fonction ROW()


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 11
    Points : 3
    Points
    3
    Par défaut Affichage et enregistrer les dates actuelles avec la fonction ROW()
    bonjour tout le monde
    je suis débutant en php et mysql , j'ai entraîne de faire un minichat qui doit afficher et enregistrer dans la base de données le pseudo, le message et les dates actuelles de chaque entre , j'ai réussit l'affichage du pseudo et le message mais je n'arrive pas afficher les dates et de les enregistrer dans bdd ...
    je demande votre aide afin que je puisse avancer un peu plus .

    et je viens d'inscrire dans ce forum , je ne sais pas la façon d'envoyer les codes dont bien correct ou pas ... je vous attends votre conseille

    donc , pour ce minichat j'ai créé 2 fichiers ..

    voici le fichier minichat.php :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
     
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Mini-chat</title>
        </head>
        <style>
        form
        {
            text-align:center;
        }
        </style>
        <body>
     
        <form action="minichat_post.php" method="post">
            <p>
            <label for="pseudo">Pseudo</label> : <input type="text" name="pseudo" id="pseudo" /><br />
            <label for="message">Message</label> :  <input type="text" name="message" id="message" /><br />
     
            <input type="submit" value="Envoyer" />
    	</p>
        </form>
     
    <?php
    // Connexion à la base de données
    try
    {
    	$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'root');
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessage());
    }
     
    // Récupération des 10 derniers messages
    $reponse = $bdd->query('SELECT pseudo, message,DATE_FORMAT(date_message,\'%d%m%Y à %Hh%imin%ss\') AS date_message_fr FROM minichat1 ORDER BY ID DESC ');
     
    // Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
    while ($donnees = $reponse->fetch())
    {
    	echo '<p>['.$donnees['date_message_fr']. ']<strong>' . htmlspecialchars($donnees['pseudo']) . '</strong> : ' . htmlspecialchars($donnees['message']) . '</p>';
    }
     
    $reponse->closeCursor();
     
    ?>
        </body>
    </html>
    et voici mini chat_post.php
    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
    18
    19
     
    <?php
    // Connexion à la base de données
    try
    {
    	$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'root');
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessage());
    }
     
    // Insertion du message à l'aide d'une requête préparée
    $req = $bdd->prepare('INSERT INTO minichat1 (pseudo, message,date_message) VALUES(?, ?,?)');
    $req->execute(array($_POST['pseudo'], $_POST['message'],ROW()));
     
    // Redirection du visiteur vers la page du minichat
    header('Location: minichat.php');
    ?>

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 847
    Points
    4 847
    Par défaut
    il n y a pas de fonction Row() dans php, il y a plutôt NOW() dans mysql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req = $bdd->prepare('INSERT INTO minichat1 (pseudo, message,date_message) VALUES(?, ?,NOW())');
    pour la concaténation de la date avec la chaine de caractère "à" tu peux utiliser coalesce :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $reponse = $bdd->query('SELECT pseudo, message,concat(coalesce(cast(DATE_FORMAT(date_message,"%d-%m-%Y") as char), ""), 
                   " à ", 
                   coalesce(cast(DATE_FORMAT(date_message,"%Hh:%imin:%ss") as char),"")
                 ) as date FROM minichat1 ORDER BY ID DESC ');

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    ah oui ... je suis bête ... merci bcp ... mais après la correction ... ça ne donne rien comme tjs ...

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 847
    Points
    4 847
    Par défaut
    le type de donnée du champ date_message est bien un datetime ?

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    oui le champ date_message est bien un datetime ...
    Nom : Capture d’écran 2018-11-17 à 21.52.38.png
Affichages : 147
Taille : 40,8 Ko

  6. #6
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Bonsoir....
    Pourquoi tu as coché "résolu" ? Tu ne semblais pas avoir résolu ton problème dans le dernier message ?

    Au cas où, je précise qu'il faut enlever now() dans la seconde ligne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $req = $bdd->prepare('INSERT INTO minichat1 (pseudo, message,date_message) VALUES(?, ?,NOW())');
    $req->execute(array($_POST['pseudo'], $_POST['message']));
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    ah bon ? je suis nouveau dans ce forum ... peut être je l'ai coché sans faire attention ...
    ok ... je vais l'essayer ...par contre je le remplace pas avec $_POST[date_message] ?

  8. #8
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 407
    Points : 4 847
    Points
    4 847
    Par défaut
    Citation Envoyé par nejdet
    ...par contre je le remplace pas avec $_POST[date_message] ?
    non, tu as l'attribut name de l'input name="message" <input type="text" name="message" id="message" />, donc $_POST["message"] et pas $_POST["date_message"] (avec des doubles quottes "" ou single quotte '' ).
    il y a aussi les caractères accentués qui peuvent provoquer une erreur, puisque t'utilise PDO, ajoute 'SET NAMES utf8' dans :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'root', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));

    puis la requête d'insertion :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $req = $bdd->prepare('INSERT INTO minichat1 (pseudo, message,date_message) VALUES(?, ?,NOW())');
    $req->execute(array($_POST['pseudo'], $_POST['message']));

    et la requête de selection :
    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
     
    // Récupération des 10 derniers messages
    $reponse = $bdd->query('SELECT pseudo, message,concat(coalesce(cast(DATE_FORMAT(date_message,"%d-%m-%Y") as char), ""), 
                   " à ", 
                   coalesce(cast(DATE_FORMAT(date_message,"%Hh:%imin:%ss") as char),"")
                 ) as date_message_fr FROM minichat1 ORDER BY ID DESC ');
     
    // Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
    while ($donnees = $reponse->fetch())
    {
    	echo '<p>['.$donnees['date_message_fr']. ']'//récupération de la date message
                    '<strong>'. htmlspecialchars($donnees['pseudo']) . '</strong> : ' 
                    . htmlspecialchars($donnees['message']) . '</p>';
    }
     
    $reponse->closeCursor();

Discussions similaires

  1. [AC-2010] Enregistrer les dates de fréquentation avec Access
    Par Gerpat dans le forum VBA Access
    Réponses: 8
    Dernier message: 11/09/2012, 18h59
  2. [Vxi3] Affichage de toutes les dates
    Par bch97 dans le forum Webi
    Réponses: 15
    Dernier message: 07/08/2009, 15h10
  3. Enregistrer les dates en français
    Par SoGood dans le forum Firebird
    Réponses: 9
    Dernier message: 06/02/2008, 18h00
  4. [Dates] Problème avec la fonction date()
    Par Kernald dans le forum Langage
    Réponses: 5
    Dernier message: 16/02/2007, 11h50
  5. [Dates] Problème avec la fonction header
    Par d.w.d dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2005, 16h33

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