Pdo bogué
Résolu/Fermé
loulou
-
11 janv. 2022 à 12:45
jordane45 Messages postés 38380 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 janvier 2025 - 12 janv. 2022 à 16:00
jordane45 Messages postés 38380 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 janvier 2025 - 12 janv. 2022 à 16:00
A voir également:
- Pdo bogué
- Bogue facebook - Accueil - Facebook
- Pdo fetch vs fetchall ✓ - Forum Webmastering
- Desactivation rapport de bogue - Forum Autres distributions Linux
- Pdo could not find driver ✓ - Forum PHP
- Pdo mysql_real_escape_string ✓ - Forum Webmastering
4 réponses
jordane45
Messages postés
38380
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 janvier 2025
4 727
11 janv. 2022 à 14:30
11 janv. 2022 à 14:30
Bonjour,
Déjà, merci d'utiliser les balises de code lorsque tu postes du code sur le forum.
Explications ( à lire entièrement ! ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite,
ça ne sert à rien de placer le code de connexion à la bdd que si ton formuaire est envoyé..... place le directement au début de ton code.
Pense aussi à activer l'affichage des erreurs PHP ainsi que l'affichage des erreurs PDO.
Et puis,
As tu d'autres fichiers php ? n'aurais tu pas écrit le code de connexion à la bdd ailleurs ? (que tu aurais laissé en "localhost" au lieu de "127.0.0.1" ? )
Par contre, comment sais tu que le user et le password sont bons ?
Tu arrives à te connecter à la bdd par un autre moyen avec ces identifiants ( en ligne de commande par exemple ? ) Il faudrait faire ce teste la en premier pour être certains que les infos sont bonnes.
Déjà, merci d'utiliser les balises de code lorsque tu postes du code sur le forum.
Explications ( à lire entièrement ! ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite,
ça ne sert à rien de placer le code de connexion à la bdd que si ton formuaire est envoyé..... place le directement au début de ton code.
Pense aussi à activer l'affichage des erreurs PHP ainsi que l'affichage des erreurs PDO.
<?php //Affichage des erreurs php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //connexion à la bdd $host = '127.0.0.1'; $dbname = 'chat'; $username = 'root'; $password = 'mon mdp'; try{ $bdd =new PDO('mysql:host='.$host.';dbname='.$dbname.'; charset=utf8', $username, $password); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } if(isset($_POST['insert'])){ /** //exemple d'utilisation d'une requête préparée en pdo: //préparation de la requête et des variables $sql = "INSERT INTO tatable (champ1,champ2) VALUES (:valeur1,:autrevaleur)"; $datas = array(':valeur1'=>$valeur1, ':autrevaleur'=>$toto); //Execution de la requete (il n'y a rien à toucher dans les lignes ci-dessous) try{ $requete = $bdd -> prepare($sql) ; $requete->execute($datas) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } */ }
Et puis,
As tu d'autres fichiers php ? n'aurais tu pas écrit le code de connexion à la bdd ailleurs ? (que tu aurais laissé en "localhost" au lieu de "127.0.0.1" ? )
Par contre, comment sais tu que le user et le password sont bons ?
Tu arrives à te connecter à la bdd par un autre moyen avec ces identifiants ( en ligne de commande par exemple ? ) Il faudrait faire ce teste la en premier pour être certains que les infos sont bonnes.
J'arrive à me connecter à la bdd via "sudo mysql" et avec mysqli.
Si vous voulez le code complet est :
Si vous voulez le code complet est :
<?php // Initialiser la session session_start(); // Vérifiez si l'utilisateur est connecté, sinon redirigez-le vers la page de connexion if(!isset($_SESSION["username"])){ header("Location: login.php"); exit(); } $host = '127.0.0.1'; $dbname = 'chat'; $username = 'root'; $password = 'mon mdp'; if(isset($_POST['insert'])){ try { // se connecter à mysql $pdo = new PDO("mysql:host=$host;dbname=$dbname","$username","$password"); } catch (PDOException $exc) { echo $exc->getMessage(); exit(); } // récupérer les valeurs $pseudo = $_SESSION["username"]; $message = htmlspecialchars($_POST['message']); // Requête mysql pour insérer des données $sql = "INSERT INTO `chatbox`(`pseudo`, `message`) VALUES (:pseudo,:message)"; $res = $pdo->prepare($sql); $exec = $res->execute(array(":pseudo"=>$pseudo,":message"=>$message)); // vérifier si la requête d'insertion a réussi if($exec){ $alerte = 'Message envoyé !!!'; }else{ echo "Échec de l'opération d'insertion"; } } header("refresh: 15;"); ?> <!DOCTYPE html> <html> <head> <META NAME="ROBOTS" content="none"> <title>Tableau de bord</title> <link rel="stylesheet" href="style.css" /> </head> <body> <div class="sucess"> <h1>Bienvenue <?php echo $_SESSION['username']; ?> !</h1> <p>C'est votre tableau de bord.</p> <a href="logout.php">Déconnexion</a> </div> <form action="" method="post" class="box"> <?php if (! empty($message)) { ?> <p class="errorMessage"><?php echo $alerte; ?></p> <?php } ?> <textarea type="text" name="message" placeholder="message" class="textarea"></textarea> <input type="submit" name="insert" value="Envoyer" class="box-button"> <p></br></p> <?php $host = 'localhost'; $dbname = 'chat'; $username = 'root'; $password = 'mon mdp'; try { // se connecter à mysql $pdo = new PDO("mysql:host=$host;dbname=$dbname","$username","$password"); } catch (PDOException $exc) { echo $exc->getMessage(); exit(); } $req = $pdo->query("SELECT * FROM chatbox ORDER BY ID DESC LIMIT 20"); while($msg = $req->fetch()){ ?> <p align="center"><font color="#003cff"><b><?php echo $msg['pseudo'] ?> :</b> <?php echo $msg['message'] ?></font></p> <?php } ?> </form> </body> </html>
EDIT : Ajout des BALISES DE CODE !!
jordane45
Messages postés
38380
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 janvier 2025
4 727
12 janv. 2022 à 13:09
12 janv. 2022 à 13:09
Tu peux m'explilquer pourquoi tu essayes de REFAIRE une connexion aux lignes 58 -> 68 ... alors que tu en a déjà une aux lignes 14 à 20 ??
Surtout que dans cette seconde connexion tu as utilisé 'localhost" ( ah tiens.. ça correspond à ton message d'erreur contrairement au premier code que tu nous as montré... )
Bref.. il ne faut qu'une seule connexion... la première...
Surtout que dans cette seconde connexion tu as utilisé 'localhost" ( ah tiens.. ça correspond à ton message d'erreur contrairement au premier code que tu nous as montré... )
Bref.. il ne faut qu'une seule connexion... la première...
Je refais une connexion pour récupérer les messages du tchat.
La premiere connexion sert uniquement à envoyer les messages dans la bdd.
La premiere connexion sert uniquement à envoyer les messages dans la bdd.
jordane45
Messages postés
38380
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
13 janvier 2025
4 727
12 janv. 2022 à 16:00
12 janv. 2022 à 16:00
Une seule connexion par fichier php suffit..