$messages = $DB->query(
'SELECT * FROM messages WHERE id_destinataire = :id_destinataire',
array(':id_destinataire' => $id_destinataire));
Au moins pas besoin de modifier l'ordre des paramètres dans le tableau si l'ordre change dans la requête (lors de modifications) et si il manque un paramètre dans le tableau ça me paraît plus simple de voir lequel.Code : Tout sélectionner
$id_destinataire = $DB->query('SELECT id FROM utilisateur WHERE mail = ?');// <====ligne 18
$id_destinataire->execute(array($destinataire));Code : Tout sélectionner
<?php
if($msg_nbr == 0) { echo "Vous n'avez aucun message..."; }
while($m = $messages->fetch()) {
$p_exp = $DB->query('SELECT mail FROM utilisateur WHERE id = ?'); // ça c'est la ligne 144 .
$p_exp->execute(array($m['id_expediteur']));
$p_exp = $p_exp->fetch();
$p_exp = $p_exp['mail'];
?>// ligne 18
$stmt = $DB->query(
'SELECT id FROM utilisateur WHERE mail = :mail', // paramètre $sql
array(':mail' => $destinataire)); // paramètre $data
$id = $stmt->fetchObject()->id;
// ligne 144
$stmt = $DB->query(
'SELECT mail FROM utilisateur WHERE id = :id', // paramètre $sql
array(':id' => $m['id_expediteur'])); // paramètre $data
$mail = $stmt->fetchObject()->mail;
public function query($sql, $data = array()){
$req = $this->connexion->prepare($sql);
$req->execute($data);
return $req;
}
Code : Tout sélectionner
if(isset($_POST['envoi_message'])) {
if(isset($_POST['destinataire'],$_POST['mess']) AND !empty($_POST['destinataire']) AND !empty($_POST['mess'])) {
echo "formulaire soumis<br/>";
$destinataire = htmlspecialchars($_POST['destinataire']);
$messages = htmlspecialchars($_POST['mess']);
$stmt = $DB->query(
'SELECT id FROM utilisateur WHERE mail = :mail', // paramètre $sql
array(':mail' => $destinataire)); // paramètre $data
$dest_exist = $stmt->rowCount();
if($dest_exist== 1) {
echo "le destinataire existe, on enregistre le message<br/>";
$stmt = $stmt->fetch();
$stmt = $stmt['id'];
$messages = $DB->query('SELECT*FROM messages WHERE id_destinataire = :id_destinataire',
array(':id_destinataire' => $stmt));
$error = "Votre message a bien été envoyé !";
} else {
$error = "Cet utilisateur n'existe pas...";
}
} else {
$error = "Veuillez compléter tous les champs";
}
}Code : Tout sélectionner
$messages = $DB->query('SELECT*FROM messages WHERE id_destinataire = :id_destinataire',
array(':id_destinataire' => $stmt)); $id = $DB->insert('INSERT INTO messages (id_expediteur,id_destinataire,message) VALUES (?,?,?)', array($_SESSION['id'], $id_destinataire, $message));
$error = $id ? "Votre message a bien été envoyé !" : $DB->getError();