Problème dans mon code PHP

Bonjour,

Je débute dans le PHP. J'aimerais tout simplement que quand je clique sur mon bouton "Envoyer le message", que le script vérifie si le contact existe, et si oui, enregistrer le message dans la base de données MySQL.

J'essayer ceci dans mon navigateur, et ça affiche toujours "Tous les champs doivent être complétés !", savez-vous pourquoi ?

Voici mon script PHP :
if(isset($_POST['envoi'])) {
$contact = htmlspecialchars($_POST['recherche']);

if(!empty($recherche) AND !empty($mon_message)) {
$requser = $bdd->prepare("SELECT * FROM utilisateurs WHERE pseudo = ?");
$requser->execute(array($contact));
$userexist = $requser->rowCount();

if($userexist == 1) {
$userinfo_contact = $requser->fetch();
$_SESSION['id'] = $userinfo_contact['id'];
$_SESSION['nom'] = $userinfo_contact['nom'];
$_SESSION['email'] = $userinfo_contact['email'];
$_SESSION['pseudo'] = $userinfo_contact['pseudo'];
$_SESSION['prenom'] = $userinfo_contact['prenom'];
$id_exp = $userinfo['id'];
$id_des = $userinfo_contact['id'];
$mon_message = htmlspecialchars($_POST['mon_message']);
$insertmbr = $bdd->prepare("INSERT INTO message_envoi(id_exp, id_des, mon_message) VALUES(?, ?, ?)");
$insertmbr->execute(array($id_exp, $id_des, $mon_message));
$erreur = "Message envoyé avec succes !";

} elseif($userexist == 0) {
$erreur = "Contact invalide !";
}

} else {
$erreur = "Tous les champs doivent être complétés !";
}
}


Voici mon code HTML :
<form method = "post" action = "">
<h1>Nouveaux messages</h1>

Choisir un contact :<br>
<input type = "text" name = "recherche" /><br><br>

Envoyer un message :<br>
<input type = "text" name = "mon_message" />
<br><br>
<input type = "submit" name = "envoi" value = "Envoyer le message" />

<?php
if(isset($erreur))
{
echo $erreur;
}
?>
</form>


Merci d'avance
Cordialement
FlorianJ29

2 réponses

  1. Tu ne récupères pas les variables $recherche et $mon_message,
    $recherche=!empty($_POST['recherche'])?$_POST['recherche']:null;
    $mon_message=!empty($_POST['mon_message'])?$_POST['mon_message']:null;
    1. Merci beaucoup, le code fonctionne bien !
      Mais juste un petit truc qui me dérange...

      En actualisant la page, l'erreur "Tout les champs doivent être complétés !" apparaît.
      L'utilisateur n'a pas appuyé sur ce bouton, alors que l'erreur s'affiche quand même...

      Merci de votre aide.
      Cordialement
      FlorianJ29
  2. Bonjour,
    Après ton insert dans la BDD il faudrait faire une redirection vers une autre page ou la page courante, ce qui devrait permettre de vider les variables $_POST.
    header('Location: http://www.example.com/tapage.php');