Problème insert bdd avec un formulaire

Résolu/Fermé
Nicolas - 21 août 2019 à 10:53
 Nicolas - 21 août 2019 à 12:57
Bonjour à tous,
J'essaie de faire un formulaire d'inscription sur un site. J'ai fait mon formulaire d'inscription qui lorsqu'il est valider doit créer une ligne dans ma bdd et m'envoyer un mail avec les informations qui viennent d'être envoyées.
Mon formulaire fonctionne à merveille, autant que ma fonction d'envoi de mail... Par contre, ça n'enregistre pas sur ma bdd et j'ai besoin de votre aide!

Voici mon code de la page avec le formulaire:
<?php include('gestion_recrutement.php');?>
<?php
$erreur='Une personne ayant votre nom et votre prénom a été trouvée dans notre base de données... Un mail a été envoyé aux gestionnaires, ceux-ci reviendront vers vous au plus vite.'
?>

  <?php
  if(!empty($_POST)) {
	$valid=true;
      if(!isset($_POST['nom']) || empty($_POST['nom'])) {
      	echo "<div class='bandeau bandeau-error'>Merci de renseigner votre nom.</div>";
       	$valid=false;
      }
      if(!isset($_POST['prenom']) || empty($_POST['prenom'])) {
      	echo "<div class='bandeau bandeau-error'>Merci de renseigner votre prénom.</div>";
        $valid=false;
      }
      if(!isset($_POST['age']) || empty($_POST['age'])) {
      	echo "<div class='bandeau bandeau-error'>Merci de renseigner votre âge.</div>";
        $valid=false;
      }
      if(!isset($_POST['domicile']) || empty($_POST['domicile'])) {
      	echo "<div class='bandeau bandeau-error'>Merci de renseigner votre domicile.</div>";
        $valid=false;
      }
      if(!isset($_POST['profession']) || empty($_POST['profession'])) {
      	echo "<div class='bandeau bandeau-error'>Merci de renseigner votre profession et/ou étude.</div>";
        $valid=false;
      }
      if(!isset($_POST['mail']) || empty($_POST['mail'])) {
      	echo "<div class='bandeau bandeau-error'>Merci de renseigner votre adresse email.</div>";
        $valid=false;
      } 
      if(!isset($_POST['choixaide']) || empty($_POST['choixaide'])) {
      	echo "<div class='bandeau bandeau-error'>Merci de renseigner au moins un domaine d'aide.</div>";
        $valid=false;
      }  
      if(!isset($_POST['reglement']) || empty($_POST['reglement'])) {
      	echo "<div class='bandeau bandeau-error'>Merci de cocher la case concernant le règlement.</div>";
        $valid=false;
      }  
      if(!isset($_POST['RGPD']) || empty($_POST['RGPD'])) {
      	echo "<div class='bandeau bandeau-error'>Merci de cocher la case concernant vos données.</div>";
        $valid=false;
      }
  
      	if($valid) {
      		$req = $pdo->prepare('SELECT prenom FROM membres WHERE nom=?');
   	  		$req->execute(array($_POST['nom']));
      		$result= $req->fetchAll();
    		if(count($result)==0) {
            	$nom = htmlspecialchars($_POST['nom']);
        		$prenom = htmlspecialchars($_POST['prenom']);
        		$age = htmlspecialchars($_POST['age']);
                $date_naissance = htmlspecialchars($_POST['naissance']);
                $domiciliation = htmlspecialchars($_POST['domicile']);
                $adresse = htmlspecialchars($_POST['adresse']);
                $profession = htmlspecialchars($_POST['profession']);
              	$ID = htmlspecialchars($_POST['ID']);
                $email = htmlspecialchars($_POST['mail']);
                $tel = htmlspecialchars($_POST['tel']);
                $autrecontact = htmlspecialchars($_POST['autres']);
                $aide = htmlspecialchars($_POST['choixaide']);
                $infos = htmlspecialchars($_POST['infos']);
                $reglement = htmlspecialchars($_POST['reglement']);
                $rgpd = htmlspecialchars($_POST['RGPD']);
              	$statut = 'Indisponible';
                	
                    $res = add_user($pdo, $nom, $prenom, $date_naissance, $domiciliation, $adresse, $profession, $ID, $email, $tel, $autrecontact, $aide, $statut);
                    	if($res) {
                        	echo "<div class='bandeau bandeau-success'>L'action a été effuctuée avec succès !</div>";
                    	} else {                        
                       		echo "<div class='bandeau bandeau-success'>L'action a été faites</div>";
                    	}
            } else { echo "<div class='bandeau bandeau-error'> Erreur avec le prénom-nom</div>";}
       	}  
    
    
  
 
// Préparation du mail
                      $destinataire = '***@***';
                      $sujet = "Demande de recrutement" ;
                      $expediteur = "***@***" ;
                          $headers = "MIME-Version: 1.0 \r\n";
                          $headers .= 'To: '.$destinataire."\n"; // Mail de reponse
                          $headers .= "From: \"Recrutement TUCS\"<$expediteur>"."\n";
                          $headers .= "MIME-Version: 1.0\r\n";
                          $headers .= "Content-type: text/html; charset: utf8\r\n";
                                            
                     $msghtml = 
'<html><body>
<table width="95%" align="center" cellspacing=0 cellpadding=0>
  <tr>
    <td colspan="3" bgcolor="lightgreen">
      <br><div style="margin-left:10%;">Tousuniscontrelesuicide.com</div><br>
    </td>
  </tr>
  <tr>
    <td width="10%" bgcolor="lightgreen">
    </td>
    <td>
      <table  style="text-align:center;"  width="100%" align="center" cellspacing=0 cellpadding=0>
        <tr>
          <td>
            <br>
            Nouvelle demande de recrutement:<br>
            Madame/Monsieur '.$nom.' souhaite nous rejoindre, voici toutes les informations:<br>
            <table border="1px solid black" width="70%" align="center">
            <tr><td>Nom:</td><td>'.$nom.'</td></tr>
            <tr><td>Prénom:</td><td>'.$prenom.'</td></tr>
            <tr><td>Age:</td><td>'.$age.'</td></tr>
            <tr><td>Date naissance:</td><td>'.$date_naissance.'</td></tr>
            <tr><td>Domicile:</td><td>'.$domiciliation.'</td></tr>
            <tr><td>Adresse:</td><td>'.$adresse.'</td></tr>
            <tr><td>Profession:</td><td>'.$profession.'</td></tr>
            <tr><td>Email:</td><td>'.$email.'</td></tr>
            <tr><td>Téléphone:</td><td>'.$tel.'</td></tr>
            <tr><td>Autres:</td><td>'.$autrecontact.'</td></tr>
            <tr><td>Domaines d\'aides:</td><td>'.$aide.'</td></tr>
            <tr><td>Infos:</td><td>'.$infos.'</td></tr>
            </table>
            <br><br>
            Ceci est un mail automatique, merci de ne pas y répondre.<br>
            <br>
          </td>
        </tr>
      </table>
    </td>
    <td width="10%" bgcolor="lightgreen">
    </td>
  </tr>
  <tr>
    <td colspan="3" bgcolor="lightgreen">
      <br><div style="text-align: center;"><a href="http://tousuniscontrelesuicide.com">Site de l\association</a> -  <p>TUCS ; 2018</p></div><br><br>
    </td>
  </tr>
</table>
</body></html>';
                        
                   if($valid) {
                     if(mail($destinataire, $sujet, $msghtml, $headers))
                        echo '<script languag="javascript" >if ( confirm( "Un mail a été envoyé aux gestionnaires... Vous allez recevoir un accusé de recpetion. Nous vous répondrons au plus vite!" ) ) {
                                  document.location.href="index.php"
                              } else {
                                  document.location.href="index.php" 
                              };</script>';  

                      } else {// Non envoyé
                        echo '<script languag="javascript">alert("Le mail n\'a pu vous être envoyé. Contactez l\'administrateur via le formulaire du site ou par email!");</script>';
                      }                       
}
?>
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />

  <title>Recrutement | TUCS</title>

  <style>
    body {margin: auto; background: #f0f7d1}    
    p {text-align: center;}
    h1 {text-align: center;}
    h2 {text-align: center;}
    h3 {text-align: center;}
    
.bouton_haut {
	background-color:#4593c7;
	border:2px solid #18ab29;
	display:inline-block;
	cursor:pointer;
	color:#ffffff;
	font-family:Arial;
	font-size:17px;
	font-weight:bold;
	padding:10px 30px;
	text-decoration:none;
	text-shadow:0px 0px 0px #2f6627;
}
.bouton_haut:hover {
	background-color:#2a42bd;
}
.bouton_haut:active {
	position:relative;
	top:1px;
}
    
    .inscription {text-align: center; width: 90%;}

  </style>
</head>
<body>
<!--Script pour faire apparaitre et disparaitre les formulaires de modifications d'informations dans les dossiers.-->
<script type="text/javascript">
  function masquer_div(id)  {
    if (document.getElementById(id).style.display == 'none')    {
      document.getElementById(id).style.display = 'block';
    } else  {
      document.getElementById(id).style.display = 'none';
    }
  }
</script>
  
  <table width="90%" align="center" style="text-align: center;">
    <tr>
      <td colspan="5">
        <br>
        <img 
          align="left" 
          src="Logo.png"
          alt="Logo association: Chargement en cours - Erreur de chargement"
          height="200px" 
          width="200px"
        >
        <img 
          align="right" 
          src="Logo.png"
          alt="Logo association: Chargement en cours - Erreur de chargement"
          height="200px" 
          width="200px"
        >
        <br>
        <u><h1>Tous unis contre le suicide</h1></u>
        <h2>Service recrutement:</h2>
      </td>
    </tr>
    <tr>
      <td width="15%">
      </td>
      <td width="30%">
        <a href="https://tousuniscontrelesuicide.com" class="bouton_haut">Page d'accueil de notre site</a>
      </td>
      <td>
      </td>
      <td width="30%">
        <a href="#" class="bouton_haut">Faq ici</a>
      </td>
      <td width="15%">
      </td>
    </tr>
  </table>
  <br>
  <br>
      <table width="90%" border="1px solid blue" id="4" align="center" style="text-align: center;" bgcolor="white">
        <tr>
          <td width="30%">
            Etape 4:
          </td>
          <td>
            Formulaire d'inscription
          </td>
        </tr>
        <tr>
          <td colspan="2">
            Vous avez presque fini...<br>
            Maintenant il va falloir remplir le formulaire d'inscription.
			Ce formulaire nous sera envoyé, nous le consulterons et puis nous vous donnerons suite. 
            <br>
            Les champs avec * sont obligatoires!<br>
            <br>
            <table border="1px solid blue" width="65%" bgcolor="#fffb88" align="center"><tr><td>
            <form method="POST" action="">
              <label for="nom">Votre nom: *</label><br>
              <input type="text" class="inscription" id="nom" name="nom" placeholder="Votre nom" required/><br>
              <br>
              <label for="prenom">Votre prénom: *</label><br>
              <input type="text" class="inscription" id="prenom" name="prenom" placeholder="Votre prénom" required/><br>
              <br>
              <label for="age">Votre âge actuel: *</label><br>
              <input type="text" class="inscription" id="age" name="age" placeholder="Votre âge" required/><br>
              <br>
              <label for="naissance">Votre date de naissance:</label><br>
              <input type="date" class="inscription" id="naissance" name="naissance" placeholder="Votre date de naissance"/><br>
              <br>
              <label for="domicile">Votre domiciliation (pays-departement-ville) : *</label><br>
              <input type="text" class="inscription" id="domicile" name="domicile" placeholder="Votre domiciliation" required/><br>
              <br>
              <label for="adresse">Votre adresse postale (Rue-n°-Code postal):</label><br>
              <input type="text" class="inscription" id="adresse" name="adresse" placeholder="Votre adresse"/><br>
              <br>
              <label for="profession">Votre profession (et/ou étude): *</label><br>
              <input type="text" class="inscription" id="profession" name="profession" placeholder="Votre profession" required/><br>
              <br>
              <label for="ID">Votre id: *</label><br>
              <input type="text" class="inscription" id="ID" name="ID" placeholder="Votre id" required/><br>
              <br>
              <br>
              <label for="mail">Votre adresse email: *</label><br>
              <input type="email" class="inscription" id="mail" name="mail" placeholder="Votre mail" required/><br>
              <br>
              <label for="tel">Votre téléphone: (conseillé)</label><br>
              <input type="text" class="inscription" id="tel" name="tel" placeholder="Votre téléphone"/><br>
              <br>
              <label for="autre">Autre(s): </label><br>
              <input type="text" class="inscription" id="autre" name="autre" placeholder="Autre(s) point(s) de contact"/><br>
              <br>
              <br>
              <label for="choixaide">Vos domaines d'aides: *</label><br>
              <input type="checkbox" name= "choixaide" value="Harcelement">Harcèlement<br>
              <input type="checkbox" name= "choixaide" value="Cyberharcelement"/> Cyberharcèlement<br>
              <input type="checkbox" name= "choixaide" value="Agressions sexuelles"/>Agressions sexuelles<br>
              <input type="checkbox" name= "choixaide" value="Problemes scolaires"/>Problèmes scolaires<br>
              <input type="checkbox" name= "choixaide" value="Problemes familiaux"/>Problèmes familiaux<br>
              <input type="checkbox" name= "choixaide" value="Deuil"/>Deuil<br>
              <input type="checkbox" name= "choixaide" value="Anorexie"/>Anorexie<br>
              <input type="checkbox" name= "choixaide" value="Autres"/>Autre(s) (Précisez ci-dessous)<br>
              <br>
              <label for="infos">Autres informations: </label><br>
              <TEXTAREA class="inscription" id="infos" name="infos" placeholder="Autres informations à nous faire parvenir"></TEXTAREA><br>
              <br>
              <input type="checkbox" class="inscription" id="reglement" name="reglement" value="OK"><br><label for="reglement">J'accepte le règlement de l'association. *</label><br><br>
              <input type="checkbox" class="inscription" id="RGPD" name="RGPD" value="OK"><br><label for="RGPD">En envoyant le formulaire, j'accepte que mes données soient collectées dans le but de traiter ma demande. *</label><br><br>
              <br>
              <input type="submit" value="Envoyer le formulaire maintenant" class="inscription" />
              <br><br>
            </form>
              </td></tr></table>
            
          </td>
        </tr>
  	  </table>
  <br><br><br>
  
</body>
</html>

J'ai supprimé les parties qui ne sont pas intéressantes pour vous. Il se peut donc qu'il y ait une ou deux petites incohérences dans mon code.

Voici ma page de connexion à ma BDD et qui gère l'insertion de la ligne:
<?php
$host_name = 'db770114383.hosting-data.io';
$database = 'db770114383';
$user_name = 'dbo770114383';
$password = 'MON MDP';
  try {
  $pdo = new PDO("mysql:host=$host_name; dbname=$database;", $user_name, $password);
    $pdo->exec('SET NAMES utf8');
} catch (PDOException $e) {
  echo "Erreur!: " . $e->getMessage() . "<br/>";
  die();  
}

	    function add_user($pdo, $nom, $prenom, $date_naissance, $domiciliation, $adresse, $profession, $ID, $email, $tel, $autrecontact, $aide, $statut) {
        try {
            $stmt = $pdo->prepare('INSERT INTO membres (nom, prenom, date_naissance, domiciliation, adresse, profession, ID, email, tel, autrecontact, aide, statut) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)');
			$stmt->execute(array($nom, $prenom, $date_naissance, $domiciliation, $adresse, $profession, $mise_a_jour, $ID, $email, $tel, $autrecontact, $aide, $statut));     
            return false;
            } catch(Exception $e) {
                return false;
            }
        }
?>


Quelqu'un voit t'il le(les) soucis? Et peut m'aider?
Lors de l'envoi du formulaire, aucune alerte, erreur signalée. Ca fait rien!

Merci d'avance à vous!
Configuration: Windows / Firefox 68.0

1 réponse

jee pee Messages postés 39702 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 8 mai 2024 9 262
21 août 2019 à 12:23
Bonjour,

Je ne pratique ni php, ni mysql, donc juste des observations de forme.

Sur l'insert il y a plus de ? que de colonnes à insérer. Et sur la ligne qui suit, il y a au milieu le champ $mise_a_jour en plus
0
Bonjour,
Merci, il s'agissait de mes erreurs car cela fonctionne maintenant!
Merci pour votre aide;
Bonne journée à vous!
0