Partage
  • Partager sur Facebook
  • Partager sur Twitter

erreure datetime sur le tp minichat

Sujet résolu
    18 octobre 2018 à 10:17:44

    Bonjour,

    Je suis actuellement le cours "concevez votre site web avec php et mysql".

    Je suis au chapitre ou il faut créer un minichat jusque là tout va bien.

    Le problème survient quand je veux insérer la date devant les messages poster.

    Auriez vous une suggestion.

    Par avances merci du temps que vous me consacrerez.

    Tony

    Code principale

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<link rel="stylesheet" type="text/css" href="style.css">
    		<title>POGOFLY-TCHAT</title>
    	</head>
    	<style>
        form
        {
            text-align:center;
        }
        </style>
    
    	<body>
    
    		<?php include("header.php"); ?>
    
    		<div id="bloc_page">
    			<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" />
        				<input type="button" onclick='window.location.reload(false)' value="Refresh" />
    				</p>
        		</form>
    
    <?php
    // Connexion à la base de données
    try
    {
    	$bdd = new PDO('mysql:host=localhost;dbname=minichat;charset=utf8', 'root', '');
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessage());
    }
    
    // Récupération des 100 derniers messages
    $reponse = $bdd->query('SELECT pseudo, message, DATE_FORMAT(date_creation, '%d/%m/%Y %Hh%imin%ss') FROM minichat ORDER BY ID DESC LIMIT 0, 100');
    
    // Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
    while ($donnees = $reponse->fetch())
    {
    	echo '<p><strong>' . htmlspecialchars($donnees['date_creation']) . ' - ' . htmlspecialchars($donnees['pseudo']) . '</strong> : ' . htmlspecialchars($donnees['message']) . '</p>';
    }
    
    $reponse->closeCursor();
    
    ?>
    		</div>
    
    		<?php include("footer.php"); ?>
    		
    	</body>
    </html>


    Methode POST 

    <?php
    // Connexion à la base de données
    try
    {
    	$bdd = new PDO('mysql:host=localhost;dbname=minichat;charset=utf8', '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 minichat (pseudo, message) VALUES(?, ?)');
    $req->execute(array($_POST['pseudo'], $_POST['message']));
    
    // Redirection du visiteur vers la page du minichat
    header('Location: minichat.php');
    ?>



    -
    Edité par AnthoNy30 18 octobre 2018 à 10:24:44

    • Partager sur Facebook
    • Partager sur Twitter
      18 octobre 2018 à 10:30:10

      Bonjour,

      Activez les erreurs PDO.

      Cordialement.

      • Partager sur Facebook
      • Partager sur Twitter
        18 octobre 2018 à 10:38:05

        Merci pour votre reponse rapide. cependant une nouvelle erreure apparait 

        <!DOCTYPE html>
        <html>
        	<head>
        		<meta charset="utf-8">
        		<link rel="stylesheet" type="text/css" href="style.css">
        		<title>POGOFLY-TCHAT</title>
        	</head>
        	<style>
            form
            {
                text-align:center;
            }
            </style>
        
        	<body>
        
        		<?php include("header.php"); ?>
        
        		<div id="bloc_page">
        			<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" />
            				<input type="button" onclick='window.location.reload(false)' value="Refresh" />
        				</p>
            		</form>
        
        <?php
        // Connexion à la base de données
        try
        {
        	$bdd = new PDO('mysql:host=localhost;dbname=minichat;charset=utf8', 'root', '', array(PDO: :ATTR_ERRMODE => PDO: :ERRMODE_EXCEPTION));
        }
        catch(Exception $e)
        {
                die('Erreur : '.$e->getMessage());
        }
        
        // Récupération des 100 derniers messages
        $reponse = $bdd->query('SELECT pseudo, message, DATE_FORMAT(date_creation, '%d/%m/%Y %Hh%imin%ss') FROM minichat ORDER BY ID DESC LIMIT 0, 100');
        
        // Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
        while ($donnees = $reponse->fetch())
        {
        	echo '<p><strong>' . htmlspecialchars($donnees['date_creation']) . ' - ' . htmlspecialchars($donnees['pseudo']) . '</strong> : ' . htmlspecialchars($donnees['message']) . '</p>';
        }
        
        $reponse->closeCursor();
        
        ?>
        		</div>
        
        		<?php include("footer.php"); ?>
        		
        	</body>
        </html>

        -
        Edité par AnthoNy30 18 octobre 2018 à 10:41:08

        • Partager sur Facebook
        • Partager sur Twitter
          18 octobre 2018 à 10:53:12

          Je pense que le problème vient de votre requête où vous définissez le format de la date, si vous utilisez les mêmes quotes sans slashs cela vous créez des erreurs ainsi que vous ne donnez pas d'alias à date_format donc pas possible d'afficher la date. Essayez comme ceci :

          $reponse = $bdd->query('SELECT pseudo, message, DATE_FORMAT(date_creation, \'%d/%m/%Y %Hh%imin%ss\')AS date_creation_fr FROM minichat ORDER BY ID DESC LIMIT 0, 100');
          while ($donnees = $reponse->fetch())
          {
          echo '<p><strong>' . htmlspecialchars($donnees['date_creation_fr']) . ' - ' . htmlspecialchars($donnees['pseudo']) . '</strong> : ' . htmlspecialchars($donnees['message']) . '</p>';
          }



          • Partager sur Facebook
          • Partager sur Twitter
            18 octobre 2018 à 10:54:34

            Bonjour,

            Dans "Activez les erreurs" il est sous-entendu "merci de les fournir"...

            La coloration de la ligne 42 devrait fournir un indice : on ne peut pas utiliser les mêmes délimiteurs (apostrophes ici) pour encadrer la requête et le format de la date sans les échapper.

            • Partager sur Facebook
            • Partager sur Twitter
              18 octobre 2018 à 10:57:00

              Ceci a bien fonctionner. Merci JohanVallon.

              -
              Edité par AnthoNy30 18 octobre 2018 à 11:01:01

              • Partager sur Facebook
              • Partager sur Twitter

              erreure datetime sur le tp minichat

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown