Ajout impossible

kritpo
Invité n'ayant pas de compte PHPfrance

23 janv. 2013, 18:21

Bonjour,
Voilà, je vous expose mon problème:J'ai créer un chat avec une page post, cette page a un header qui redirige le visiteur sur la page de chat. Mais quand j'entre quelque chose dans l'input, il ne le rajoute pas sur la BDD; voici le code:
<?php
// Connexion à la base de données
try
{
$bdd = new PDO('mysql:host=mysql.heberg.fr;dbname=dbname', 'dbusers', 'mdp');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
// Insertion du message à l'aide d'une requête préparée
$req = $bdd->prepare('INSERT INTO `**-**`(id, date, ip, pseudo, message) VALUES(NULL, CURDATE(), :ip, :pseudo, :message)');
$req->execute(array(
	'ip' => $_SERVER ['REMOTE_ADDR'],
	'pseudo' => $_SESSION['pseudo'],
	'message' => $_POST['message'],
	));
// Redirection du visiteur vers la page du minichat
header('Location: **-**.php');
?>

Mammouth du PHP | 571 Messages

23 janv. 2013, 19:45

bonjour,
quel est le message d'erreur affiché?

tu dois effectuer un contrôle sur les variables reçues en POST avant d’insérer des données.
pour la méthode exécute tu dois lui passer un tableau dont clés sont le noms des variables à insérer précédées par :.

voici le corrigé de execute(..):
 $req->execute(array(
        ':ip' => $_SERVER ['REMOTE_ADDR'],
        ':pseudo' => $_SESSION['pseudo'],
        ':message' => $_POST['message'],
        ));

kritpo
Invité n'ayant pas de compte PHPfrance

23 janv. 2013, 20:16

Bonjour,
Non, il n'y a aucun message d'erreur, et cela ne marche tout de même pas même avec la modification...

Mammouth du PHP | 571 Messages

23 janv. 2013, 20:44

c'est évident que le message d'erreur ne s'affiche pas ,ta requête doit être dans le bloc try. Ensuite c'est pas la classe Exception à la place il faut mettre une classe pdo dediée(PDOException) à la gestion d'exception

<?php
// Connexion à la base de données
try
{
$bdd = new PDO('mysql:host=mysql.heberg.fr;dbname=dbname', 'dbusers', 'mdp');
// Insertion du message à l'aide d'une requête préparée
if(isset($_SERVER ['REMOTE_ADDR']) && isset( $_SESSION['pseudo') && isset($_POST['message']) ) {
$req = $bdd->prepare('INSERT INTO `**-**`(id, date, ip, pseudo, message) VALUES(NULL, CURDATE(), :ip, :pseudo, :message)');
 $req->execute(array(
        ':ip' => $_SERVER ['REMOTE_ADDR'],
        ':pseudo' => $_SESSION['pseudo'],
        ':message' => $_POST['message'],
        ));
// Redirection du visiteur vers la page du minichat
header('Location: **-**.php');
}else{
echo "les variables n'existent pas";
}
} catch (PDOException $erreur) {
 
        echo 'Erreur : '.$erreur->getMessage();
    }

?>


kritpo
Invité n'ayant pas de compte PHPfrance

23 janv. 2013, 21:21

Bonjour,
Merci:D(ton code comporte quelques erreur, mais il est parfait), j'ai compris, j'avais oublier d'activer la fonction $_SESSION sur ma page(sur les autres pages, j'avais fait un include...:p Vraiment bête, non?;))

Merci pour tout!!