Formulaire de contact

Résolu/Fermé
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 - Modifié par flo39400 le 11/12/2016 à 17:42
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 - 18 déc. 2016 à 14:12
Bonjour,

Voila j'ai envie de mettre une section contact afin que les utilisateurs puisse contacter les modérateurs ou administrateur du site.

J'ai un léger problème a envoyer cela dans la base de données.


<?php
include("CObdd.php");
include_once('cookieconnect.php');
include('/ban_site/bann_ip.php');


if(isset($_POST['submit_message']))
 {
  if(isset($_POST['message']) AND !empty($_POST['message']) AND ($_POST['mail']) AND !empty($_POST['mail']) OR !empty($_SESSION['pseudo'])) 
  {
   $message = htmlspecialchars($_POST['message']);
   
   $ins = $bdd->prepare('INSERT INTO message (pseudo, message, mail, ip_uttilisateur, date_heur) VALUES (?, ?, ?, ?, NOW())');
   $ins->execute(array($_SESSION['pseudo'],$message,$mail,$user_ip));
   $msg = "<span style='color:red'>Votre message a bien été envoyer !</span>";
  }
 }
?>
<!DOCTYPE html>
<html>
 <head>
  <title>Bienvenue <?php if(!empty($_SESSION['id'])) { echo $_SESSION['pseudo']; } else {?> uttilisateur <?php } ?> -> Contact</title>
  <link rel="stylesheet" type="text/css" href="style.css">
  <meta charset="utf-8">
 </head>
 
<?php
if($statut['statut_ip'] == 1)
{
 include("menu.php");
?>

<body>
<section class="contact">
<h2>Contact</h2>
 <p>
 Vous voulez nous contacter uttilisez le formulaire ci-dessous :
 </p>
<article>
 <form method="POST" class="post_message">
 
  <tr><td class="com_pseudo"><?php if(!empty($_SESSION['pseudo'])) { echo "Votre pseudo :  "; echo $_SESSION['pseudo']; } ; ?></td></tr><br/><br/>
  <tr><td class="adresse_mail"><label for="mail">Mail :</label></td></tr>
  <tr><td><input type="email" placeholder="Votre e-mail" id="mail" name="mail" value="<?php if(isset($mail)) { echo $mail; } ?>"/></td></tr></br>
  </br>
  <tr><td><textarea name="message" placeholder="Votre message" rows="5" cols="40" class=""></textarea></td></tr><br/>
  </br>
  <tr><td><input type="submit" value="Evoyer votre message" name="submit_message" class="message_submit"/></td></tr><br/><br/>
 </form>
 </br>
 <p>
 <i>Votre adresse ip sera enregistré en même temps que votre message !</i>
 </p>
</article>
</section>


<?php
}
else
{
?>
<p align="center"><br/><br/>L'adresse <a href="https://fr.wikipedia.org/wiki/Adresse_IP" rel="nofollow noopener noreferrer" target="_blank">IP</a> de votre <a href="https://fr.wikipedia.org/wiki/Fournisseur_d%27acc%C3%A8s_%C3%A0_Internet" rel="nofollow noopener noreferrer" target="_blank">FAI</a> a était bloquer,<br/> a cause d'un problème grave contre notre site internet.<br/><br/><br/>
Si cela vous semble être une erreur veuilliez contacter l'administrateur a cette adresse:<br/> <a href="mailto:?to=floflo12@gmail.com" rel="nofollow noopener noreferrer" target="_blank" />floflo12@gmail.com</a></p>
<?php
}
  
?>

 </body>
</html>




J'ai des codes erreur :

_Notice: Undefined variable: mail in C:\wamp64\www\2017\contact.php on line 14

_Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Champ 'message' inconnu dans field list' in C:\wamp64\www\2017\contact.php on line 14

_PDOException: SQLSTATE[42S22]: Column not found: 1054 Champ 'message' inconnu dans field list in C:\wamp64\www\2017\contact.php on line 14


Voici la table "message" en détail:
_id / int(11) / / AI / primary
_pseudo / varchar(255) / NULL
_mail / varchar(40)
_date_heur / datetime
_ip_uttilisateur / varchar(255)
_traitement / varchar(11) / NON


Merci d'avance.

2 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
12 déc. 2016 à 14:57
Bonjour,

Ta variable $mail n'a jamais été déclarée et aucune valeur ne lui est assignée.
Tu devrais lui donner une valeur sur le modèle de ce que tu as fait pour $message :
$mail = htmlspecialchars($_POST['mail']);


Au passage, cela n'a aucune incidence, mais tu peux enlever tes tests isset() quand tu fais un !empty à côté, car empty appelle lui-même isset().
Fonctionnellement,
isset($_POST['message']) AND !empty($_POST['message'])
est strictement équivalent à
!empty($_POST['message'])
.

Xavier
1
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
18 déc. 2016 à 10:22
Bonjour, donc merci ça fonctionne, cela apparait dans la base de données mais au moment de l'envoie j'ai un message d'erreur:

Notice: Undefined index: pseudo in C:\wamp64\www\2017\contact.php on line 17

A cause du fait que si le visiteur laisse le message avec son adresse mail, le pseudo dois rester vide voila pourquoi j'ai mis :
OR !empty($_SESSION['pseudo'])


Mais a mon avis je doit ajouter quelque chose pour éviter ce message d'erreur mais quoi ?
0
yg_be Messages postés 22726 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476
11 déc. 2016 à 18:30
Dans la commande
INSERT INTO message (pseudo, message, mail, ip_uttilisateur, date_heur) ...
, les noms entre parenthèses devraient être les noms de colonnes de ta table. "message" n'est pas une colonne de ta table. Par ailleurs, je te suggère de ne pas employer le même nom pour une table et pour une colonne.
0
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
Modifié par flo39400 le 11/12/2016 à 19:37
Merci voila la modification mais erreur toujours un problème :

<?php
include("CObdd.php");
include_once('cookieconnect.php');
include('/ban_site/bann_ip.php');


if(isset($_POST['submit_message']))
 {
  if(isset($_POST['message']) AND !empty($_POST['message']) AND ($_POST['mail']) AND !empty($_POST['mail']) OR !empty($_SESSION['pseudo'])) 
  {
   $message = htmlspecialchars($_POST['message']);
   
   $ins = $bdd->prepare('INSERT INTO message (pseudo, mail, message, date_heur, ip_uttilisateur) VALUES (?, ?, ?, NOW(), ?)');
   $ins->execute(array($_SESSION['pseudo'],$mail,$message,$user_ip));
   $msg = "<span style='color:red'>Votre message a bien été envoyer !</span>";
  }
 }
?>
<!DOCTYPE html>
<html>
 <head>
  <title>Bienvenue <?php if(!empty($_SESSION['id'])) { echo $_SESSION['pseudo']; } else {?> uttilisateur <?php } ?> -> Contact</title>
  <link rel="stylesheet" type="text/css" href="style.css">
  <meta charset="utf-8">
 </head>
 
<?php
if($statut['statut_ip'] == 1)
{
 include("menu.php");
?>

<body>
<section class="contact">
<h2>Contact</h2>
 <p>
 Vous voulez nous contacter uttilisez le formulaire ci-dessous :
 </p>
<article>
 <form method="POST" class="post_message">
 
  <tr><td class="com_pseudo"><?php if(!empty($_SESSION['pseudo'])) { echo "Votre pseudo :  "; echo $_SESSION['pseudo']; } ; ?></td></tr><br/><br/>
  <tr><td class="adresse_mail"><label for="mail">Mail :</label></td></tr>
  <tr><td><input type="email" placeholder="Votre e-mail" id="mail" name="mail" value="<?php if(isset($mail)) { echo $mail; } ?>"/></td></tr></br>
  </br>
  <tr><td><textarea name="message" placeholder="Votre message" rows="5" cols="40" class=""></textarea></td></tr><br/>
  </br>
  <tr><td><input type="submit" value="Evoyer votre message" name="submit_message" class="message_submit"/></td></tr><br/><br/>
 </form>
 </br>
 <p>
 <i>Votre adresse ip sera enregistré en même temps que votre message !</i>
 </p>
</article>
</section>


<?php
}
else
{
?>
<p align="center"><br/><br/>L'adresse <a href="https://fr.wikipedia.org/wiki/Adresse_IP" rel="nofollow noopener noreferrer" target="_blank">IP</a> de votre <a href="https://fr.wikipedia.org/wiki/Fournisseur_d%27acc%C3%A8s_%C3%A0_Internet" rel="nofollow noopener noreferrer" target="_blank">FAI</a> a était bloquer,<br/> a cause d'un problème grave contre notre site internet.<br/><br/><br/>
Si cela vous semble être une erreur veuilliez contacter l'administrateur a cette adresse:<br/> <a href="mailto:?to=floflo12@gmail.com" rel="nofollow noopener noreferrer" target="_blank" />floflo12@gmail.com</a></p>
<?php
}
  
?>

 </body>
</html>




Code erreur:

_Notice: Undefined variable: mail in C:\wamp64\www\2017\contact.php on line 14
_Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1048 Le champ 'mail' ne peut être vide (null)' in C:\wamp64\www\2017\contact.php on line 14
_ PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Le champ
'mail' ne peut être vide (null) in C:\wamp64\www\2017\contact.php on line 14
0
yg_be Messages postés 22726 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476
11 déc. 2016 à 20:24
(1) Tu as changé quoi? Pourquoi ne l'expliques-tu pas?
(2) Que comptes-tu faire avec $mail, il sert à quoi?
0
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
18 déc. 2016 à 10:48
Bonjour, donc j'ai corriger maintenant ça fonctionne mieux.
$mail je l'enregistre avec le message et l'adresse ip.
Et si $_SESSION['pseudo'] est présent l'enregistré aussi.


Voila ou j'en suis:

Notice: Undefined index: pseudo in C:\wamp64\www\2017\contact.php on line 17

A cause du fait que si le visiteur laisse le message avec son adresse mail, le pseudo dois rester vide voila pourquoi j'ai mis :
OR !empty($_SESSION['pseudo'])



Mais a mon avis je doit ajouter quelque chose pour éviter ce message d'erreur mais quoi ?
0
yg_be Messages postés 22726 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 476
18 déc. 2016 à 11:33
Suggestion:
if (isset($_SESSION['pseudo'])) 
{
	$pseudo=$_SESSION['pseudo']
}
else
{
	$pseudo=''
}
$ins->execute(array($pseudo,$mail,$message,$user_ip));
0
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
18 déc. 2016 à 14:12
Merci pour tout bonne journée !
0