Problème d'écriture dans une base de données
- Accueil
- Forum
- Programmation
- SQL
- Problème d'écriture dans une base de données
Goyom Le 14 juin 2016 à 19:27 (Édité le 25 janvier 2019 à 17:51)
J'ai suivi les tutos de PrimFX sur le PHP et SQL pour essayer de créer un chat et j'ai un problème : je n'arrive pas à insérer une entrée dans ma base de données. Pourtant, quand j'essaye de lire ce qui est déjà écrit dans ma base de données, le script affiche bien tout.
Voilà le code :
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
<title>Test</title>
<link rel="stylesheet" href="style.css">
<script src="script.js" type="text/javascript" ></script>
<link rel="icon" type="image/png" href="favicon.png" />
</head>
<body>
<?php include("header.php"); ?>
<?php
$bdd = new PDO("mysql:host=127.0.0.1;dbname=pfc;charset=utf8","root","");
$requete = $bdd->exec("INSERT INTO chat(pseudo, message) VALUES ('Goyom','Bonjour !')");
$reponse = $bdd->query('SELECT pseudo, message FROM chat ORDER BY id ASC LIMIT 0, 10');
while ($donnees = $reponse->fetch())
{
echo '<br><strong>' . htmlspecialchars($donnees['pseudo']) . ' : </strong>' . htmlspecialchars($donnees['message']);
}
?>
</body>
</html>
En espérant que vous pourrez m'aider.
Merci d'avance !
Goyom
PS : Je ne sais pas si ça peut être utile, mais voilà ma table, avec deux lignes entrées manuellement :
TheOldNoob Le 15 juin 2016 à 11:35 (Édité le 15 juin 2016 à 11:36)
j'aurais fait deux ou trois truc differement.
ta colonne date, j'aurais fait un date_add et je l'aurais mis en datetime dans la table afin d'avoir l'heure de l'ajout.
Ainsi dans ton code, tu pourrais chercher l'ordre
'SELECT pseudo, message FROM chat ORDER BY date_add ASC LIMIT 10'
Pour le retour des données,
while ($donnees = $reponse->fetch())
J'aurais fait : (sachant que 'chat' est le nom de ta table)
$reponse = bdd->query(SELECT * FROM chat ORDER BY date_add DESC LIMIT 10');
$reponse->execute();
$view_chat = $reponse->fetchAll(PDO::FETCH_ASSOC);
foreach($view_chat as $view){ ?>
<div><strong><?=$view['pseudo']?> :</strong> <?=$view['message'] ?>; </div><br>
<?php } ?>
ça doit te faire une boucle limité au 10 dernier message de tout ce qui se trouve dans ta table 'chat' classer par date et heure d'ajout. Après a toi d'ajouter les champs que tu souhaite faire apparaitre ou bon te semble sur ta page (tu peu ajouter la date et l'heure du massage... etc... Florian Le 15 juin 2016 à 14:41 (Édité le 1 janvier 1970 à 01:00)
$bdd = new PDO("mysql:host=127.0.0.1;dbname=pfc;charset=utf8","root",""); $requete = $bdd->exec("INSERT INTO chat(pseudo, date, message) VALUES ('Goyom', time(), 'Bonjour !')");
ça va te retourner en secondes depuis le 1janvier 1970 tu peux trier tes messages comme ça aussi TheOldNoob Le 15 juin 2016 à 15:11 (Édité le 1 janvier 1970 à 01:00)
Par contre, j'utiliserais NOW() a la place de time() histoire de simplifier. vu que ça reprend la date au moment de l'insertion
La fonction NOW() ainsi que ses innombrables synonymes comme CURRENT_TIMESTAMP() retournent la date complète au format "AAAA-MM-JJ HH:MM:SS
Goyom Le 15 juin 2016 à 21:40 (Édité le 15 juin 2016 à 21:40)
J'ai pu bien corriger et améliorer mon chat, en rajoutant aussi "port=3306;" dans le "$bdd = new PDO" (ça a l'air d'être mieux avec plutôt que sans). :)