8797 sujets

Développement web côté serveur, CMS

Bonjour tout le monde.

Débutant dans le complexe monde du PHP, je dois réaliser un trombinoscope pour mon stage. Pour cela, j'ai réalisé un formulaire afin d'envoyer, récupérer et afficher les données demandées.

Le problème que j'ai est le suivant : une fois la première insertion faite, je n'arrive plus à rentrer de nouvelles données et donc forcément à les afficher Smiley decu

Pour infos, voici le code du formulaire

<?php 
   
   include('function.php');
      
    /************************************************************
     * Script d'upload d'image
     *************************************************************/
     if(isset($_POST['valid']))
     {
        $avatar = $_FILES['avatar']['name'];
        $avatar_tmp = $_FILES['avatar']['tmp_name'];
                
        $errors = array();  // On initialise une variable Array vide pour stocker les erreurs éventuelles
          if(!empty($avatar_tmp))
          {
            $image=explode('.',$avatar);
                        
            $image_ext=end($image);     
            
              if(in_array(strtolower($image_ext),array('png','jpg','jpeg'))===false)
              {
                $errors[] = "Veuillez saisir une image";
              }
          }
                    
          if(empty($errors))
          {
              upload_avatar($avatar_tmp);
              
          }else{
          
              foreach($errors as $error)
              {
                echo $error;
              }
          
          }                       
     }
    
    /************************************************************
     * Vérification format mail
   *************************************************************/   
    function VerifierAdresseMail($adresse)  // Vérifie si le format mail est respecté
  	{ 
  	   $Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#'; 
  	   if(preg_match($Syntaxe,$adresse)) 
  	      return true; 
  	   else 
  	     return false; 
  	}
    
    /************************************************************
     * Calcul age
     *************************************************************/        
        if(isset($_POST['valid']))
        {
          $jour = $_POST['journ'];
          $mois = $_POST['moisn'];
          $annee = $_POST['annee'];
          
          if(!empty($jour) && !empty($mois) && !empty($annee))
          {
              $date = explode('/',date('d/m/Y'));
                                      
              if(($mois < $date[1])||(($mois == $date[1]&&$jour <= $date[0])))
              {
                  $age = $date[2]-$annee;                
                  
              }else{
                  $age = $date[2]-$annee-1;                  
              }        
          }
          
          
          /************************************************************
           * Erreurs éventuelles
           *************************************************************/                    
         		// Pour chaque champs, on vérifie les saisies 

      		if (!empty($_POST['nom'])) // Test de l'existence de la variable nom
      		{
      			$nom = strip_tags($_POST['nom']); // On supprime les éventuelles balises HTML saisies -> tout code HTML saisi ne sera pas interprété (faille xss)
      		} 
      		else{
      			$error['nom']= '<span class="error">Les NOM et prénom sont obligatoires</span>';
      		}
          if (!empty($_POST['mandat'])) // Test de l'existence de la variable mandat
      		{
      			$mandat = strip_tags($_POST['mandat']); // On supprime les éventuelles balises HTML saisies -> tout code HTML saisi ne sera pas interprété (faille xss)
      		} 
          if (!empty($_POST['sle'])) // Test de l'existence de la variable sle
      		{
      			$sle = strip_tags($_POST['sle']); // On supprime les éventuelles balises HTML saisies -> tout code HTML saisi ne sera pas interprété (faille xss)
      		} 
      		else{
      			$error['sle']= '<span class="error">La SLE est obligatoire</span>';
      		}
          if (!empty($_POST['fonction'])) // Test de l'existence de la variable fonction
      		{
      			$fonction = strip_tags($_POST['fonction']); // On supprime les éventuelles balises HTML saisies -> tout code HTML saisi ne sera pas interprété (faille xss)
      		} 
      		else{
      			$error['fonction']= '<span class="error">La fonction est obligatoire</span>';
      		}
          if (!empty($_POST['profession'])) // Test de l'existence de la variable profession
      		{
      			$profession = strip_tags($_POST['profession']); // On supprime les éventuelles balises HTML saisies -> tout code HTML saisi ne sera pas interprété (faille xss)
      		} 
      		else{
      			$error['profession']= '<span class="error">La profession est obligatoire</span>';
      		}
          if (!empty($_POST['journ'])) // Test de l'existence de la variable journ
      		{
      			$journ = strip_tags($_POST['journ']); // On supprime les éventuelles balises HTML saisies -> tout code HTML saisi ne sera pas interprété (faille xss)
      		} 
      		else{
      			$error['journ']= '<span class="error">Le jour de naissance est obligatoire</span>';
      		}
          if (!empty($_POST['moisn'])) // Test de l'existence de la variable moisn
      		{
      			$moisn = strip_tags($_POST['moisn']); // On supprime les éventuelles balises HTML saisies -> tout code HTML saisi ne sera pas interprété (faille xss)
      		} 
      		else{
      			$error['moisn']= '<span class="error">Le mois de naissance est obligatoire</span>';
      		}
          if (!empty($_POST['annee'])) // Test de l'existence de la variable annee
      		{
      			$annee = strip_tags($_POST['annee']); // On supprime les éventuelles balises HTML saisies -> tout code HTML saisi ne sera pas interprété (faille xss)
      		} 
      		else{
      			$error['annee']= '<span class="error">L&#39;annee est obligatoire</span>';
      		}
          if (!empty($_POST['email'])) // Test de l'existence de la variable email
      		{
      			$adresse = strip_tags($_POST['email']);
      			
      			if(VerifierAdresseMail($adresse)) // Test de la validité de l'adresse à l'aide de la fonction ligne 97
      			{
      				$email = $adresse; // On définit la variable définitive
      			}
      			else{
      				$error['format']= '<span class="error">L\'adresse email doit être valide</span>';
      			}		
      		}
          if(empty($error))
              {
                  try
                	{
                	// On se connecte à MySQL
                		$bdd = new PDO('mysql:host=localhost;dbname=sle', 'root', '');
                	}
                	catch (Exception $e)
                	{
                	// En cas d'erreur, on affiche un message et on arrête tout (page plantée)
                        die('Erreur : ' . $e->getMessage());
                	}
                  
                  // Etablir la communication entre PHP et Mysql en UTF-8 	
	                $bdd->query("SET NAMES 'utf8'"); 
                                              
                  $req = $bdd->prepare('INSERT INTO aix(nom, mandat, sle, fonction, profession, journ, moisn, annee, age, email) VALUES(:nom, :mandat, :sle, :fonction, [langue]rofession, :journ, :moisn, :annee, :age, :email)'); 
                  $req->execute(array(
                      'nom' => $nom,
                      'mandat' => $mandat,
                      'sle' => $sle,
                      'fonction' => $fonction,
                      'profession' => $profession,
                      'journ' => $journ,
                      'moisn' => $moisn,
                      'annee' => $annee,
                      'age' => $age,
                      'email' => $email
                      ));
                      
                  // Nous allons lire la table pour récupérer l'id de la dernière insertion, afin de créer une ancre
                  
            			$aix = $bdd->query("SELECT id FROM aix WHERE nom='".$nom."'")or die(print_r($bdd->errorInfo())); // Sélection du dernier enregistrement
                          
            			while ($donnees = $aix->fetch())
            			{
            				$ancre = $donnees['id'];
            			}
            
            			$aix->closeCursor();    
            			
            			header('Location: response_aix.php#'/*.$ancre*/); // Redirection automatique sur la page response_aix.php
                      
              }  
       
        }
               
        
?>



<!DOCTYPE html>

<html lang="fr">
<head>
  <meta charset="UTF-8">
  <meta name="author" content="Matthias BONDARKOFF" />

	<link href='http://fonts.googleapis.com/css?family=Open+Sans+Condensed:300' rel='stylesheet' type='text/css' />
	<link rel="stylesheet" media="all" href="css/style.css" type="text/css">
  <title>SLE Caisse d'épargne</title>
  <meta name="description" content="Accueil" />
</head>
<body>
    <div id="access">
			<?php include('include/inc_access_bis.php'); ?>		  
		</div><!-- #access -->
    
    <div id="global" role="main">
    
    <header id="entete">
			<?php include('include/inc_entete.php'); ?>
		</header><!-- #entete -->
       
    <div id="section3">  <!-- Interface de saisie de données du trombinoscope -->
      <h2>Formulaire de saisie</h2>
      <form id="form" onSubmit="afficher()" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
          <fieldset id="saisie">
            <p class="field_align">        
              <input name="avatar" type="file" id="fichier_a_uploader" />             
            </p>             
            
            <p class="field_align">
              <?php 
									if (isset($error) && array_key_exists('nom', $error))
									{
									    echo $error['nom'];
									}
								?>
              <input type="text" name="nom" id="nom" placeholder="NOM Prénom" required="required" size="34" maxlength="50" />
            </p>
            
            <p class="field_align">
              <?php 
									if (isset($error) && array_key_exists('mandat', $error))
									{
									    echo $error['mandat'];
									}
								?>
              <input type="text" name="mandat" id="mandat" placeholder="Mandat" size="34" maxlength="50" />
            </p>
    
            <p class="field_align">
              <?php 
									if (isset($error) && array_key_exists('sle', $error))
									{
									    echo $error['sle'];
									}
								?>
              <input type="text" name="sle" id="sle" placeholder="SLE" required="required" size="14" maxlength="50" />
            
              <?php 
									if (isset($error) && array_key_exists('fonction', $error))
									{
									    echo $error['fonction'];
									}
								?>
              <input type="text" name="fonction" id="fonction" placeholder="Fonction" required="required" size="15" maxlength="50" />
            </p>
            
            <p class="field_align">
              <?php 
									if (isset($error) && array_key_exists('profession', $error))
									{
									    echo $error['profession'];
									}
								?>
              <input type="text" name="profession" id="profession" placeholder="Profession" required="required" size="34" maxlength="50" />
            </p>
            
            <p class="field_align">
              <?php 
									if (isset($error) && array_key_exists('journ', $error))
									{
									    echo $error['journ'];
									}
								?>
              <input type="text" name="journ" id="journ" placeholder="Jour N" required="required" size="5" maxlength="50" />
            
              <?php 
									if (isset($error) && array_key_exists('moisn', $error))
									{
									    echo $error['moisn'];
									}
								?>
              <input type="text" name="moisn" id="moisn" placeholder="Mois N" required="required" size="5" maxlength="50" />

              <?php 
									if (isset($error) && array_key_exists('annee', $error))
									{
									    echo $error['annee'];
									}
								?>
              <input type="text" name="annee" id="annee" placeholder="Année" required="required" size="5" maxlength="50" />

            </p>
            
            <p class="field_align">
              <?php 
									if (isset($error))
									{
										if (array_key_exists('email', $error)) {echo $error['email'];}
										if (array_key_exists('format', $error)) {echo $error['format'];}
									}
								?>
              <input type="text" name="email" id="email" placeholder="Email" size="34" maxlength="50" />
            </p>
            
            <p class="button">
            <input type="reset" value="Annuler" class="bouton" />
            <input type="submit" value="Envoyer" name="valid" class="bouton" />
          </p>
          
          </fieldset>
      </form>  
    </div>  <!-- section2 -->
    
    <footer id="pied">
      <?php include('include/inc_pied.php'); ?>
  	</footer><!-- #pied -->
  	
    </div> <!-- #global -->

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">

   /* var section2 ="section2";
    document.getElementById('section2').style.display='none';

function afficher(){
    document.getElementById('section2').style.display='block';
}              */

</script>
</body>
</html>


Et le code de ma page réponse

<?php require('include/inc_bdd_aix.php'); ?>
<!DOCTYPE html>

<html lang="fr">
<head>
  <meta charset="UTF-8">
  <meta name="author" content="Matthias BONDARKOFF" />

	<link href='http://fonts.googleapis.com/css?family=Open+Sans+Condensed:300' rel='stylesheet' type='text/css' />
	<link rel="stylesheet" media="all" href="css/style.css" type="text/css">
  <title>SLE Caisse d'épargne</title>
  <meta name="description" content="Accueil" />
</head>
<body>
    <div id="access">
			<?php include('include/inc_access_bis.php'); ?>		  
		</div><!-- #access -->
    
    <div id="global" role="main">
    
    <header id="entete">
			<?php include('include/inc_entete.php'); ?>
		</header><!-- #entete -->
   
   <div id="section1">
    <div id="map">
        <img src="medias/aix.png" alt="SLE Aix Pertuis" title="SLE Aix Pertuis">
    </div>  <!-- map -->
    
    <div id="agences">
    <h1>Les Agences locales</h1>
    <ul>
      <li>PUY SAINTE REPARADE</li>
      <li>AIX SEXTIUS</li>
      <li>AIX ENCAGNANE</li>
      <li>AIX FONTAINE D ARGENT</li>
      <li>PEYROLLES</li>
      <li>JOUQUES</li>
      <li>MEYRARGUES</li>
      <li>PERTUIS</li>
      <li>CADENET</li>
      <li>LA TOUR D AIGUES</li>
      <li>AIX MIRABEAU</li>
      <li>VENELLES</li>
      <li>EGUILLES</li>
      <li>AIX JAS DE BOUFFAN</li>
      <li>AIX PIOLINE</li>
    </ul>
    </div>  <!-- agences -->
    </div>  <!-- section1 -->
    
    
    <?php

  	// On récupère tout le contenu de la table désirée
  	$aix = $bdd->query('SELECT * FROM `aix` ORDER BY `id` ASC');
  	
  	// On affiche chaque enregistrement de la requête
  	while ($donnees = $aix->fetch())
  		{
    ?>  
    
    
    <div class="section2" name="section2" id="<?php echo $donnees['id']; ?>">    <!-- Affichage des données saisies dans le formulaire -->
      <fieldset id="affichage">              
          <div id="photo">
         
            <?php
               
                if(!empty($avatar))
                {
                    echo '<img id="avatar" src="avatar/'.($_POST['sle']).'-'.($_POST['nom']).'.jpg" alt="avatar" />';
                }else{
                    echo '<img id="defaut" src="avatar/image_defaut.jpg" alt="defaut" />';
                }
                                  
            ?>
          
          </div>
          
          <div id="champs">
          <p class="field_align">
            <input type="text" name="nom" class="name" readonly="readonly" value="<?php echo $donnees['nom']; ?>" size="34" maxlength="50" />
          </p>
          
          <p class="field_align">
            <input type="text" name="mandat" class="mandat" readonly="readonly" value="<?php echo $donnees['mandat']; ?>" size="34" maxlength="50" />
          </p>
          
          <p class="field_align">
            <input type="text" name="sle" class="sle" readonly="readonly" value="<?php echo $donnees['sle']; ?>" size="14" maxlength="50" />
          
            <input type="text" name="fonction" class="fonction" readonly="readonly" value="<?php echo $donnees['fonction']; ?>" size="15" maxlength="50" />
          </p>
          
          <p class="field_align">
            <input type="text" name="profession" class="profession" readonly="readonly" value="<?php echo $donnees['profession']; ?>" size="34" maxlength="50" />
          </p>
          
          <p class="field_align">
            <input type="text" name="journ" class="journ" readonly="readonly" value="<?php echo $donnees['journ']; ?>" size="5" maxlength="50" />
            
            <input type="text" name="moisn" class="moisn" readonly="readonly" value="<?php echo $donnees['moisn']; ?>" size="5" maxlength="50" />
            
            <input type="text" name="annee" class="annee" readonly="readonly" value="<?php echo $donnees['annee']; ?>" size="5" maxlength="50" />
            
            <input type="text" name="age" class="age" readonly="readonly" value="<?php echo $donnees['age']; ?>" size="5" maxlength="50" />
          </p>
         
          <p class="field_align">
            <input type="text" name="email" class="email" readonly="readonly" value="<?php echo $donnees['email']; ?>" size="34" maxlength="50" />
          </p> 
          </div> <!-- #champs -->
          
      </fieldset>
    </div>
    
    <?php
		}
	
  	// Termine le traitement de la requête
  	$aix->closeCursor();
    ?>
   
   
    <div id="ajout">
      <a href="formulaire-aix.php" title="Ajouter une personne">Ajout d'une nouvelle personne</a>
    </div>     
    
    <footer id="pied">
      <?php include('include/inc_pied.php'); ?>
  	</footer><!-- #pied -->
  	
    </div> <!-- #global -->

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

</body>
</html>


Je sais le code fait peut être un peu peur à voir mais avec une pauvre semaine de PHP au cours de ma formation, je me suis basé sur ce que l'on avait fait et sur les quelques tutos que j'ai pu trouvé par-ci, par-là Smiley decu

Merci d'avance pour les alsanautes qui me répondront Smiley smile
Coucou tout le monde, c'est encore moi Smiley smile

Bon, j'ai réussi à comprendre d'où venais le problème de la non-insertion des données dans la base.

En effet, lorsque j'ai des champs de mon formulaire qui ne sont pas remplies (ex : la personne n'a pas de mandat), alors l'insertion ne se fait pas.

Mais je ne sais pas comment faire pour passer outre cela Smiley decu
Administrateur
Bonjour et bienvenue, Smiley smile

quelle est la structure de ta table ? Comment a-t-elle été créée, est-ce qu'il y a des NOT NULL qui forcément vont pas aimer recevoir des données vides ? Smiley cligne
Oui, effectivement, ça venait de la structure de la table.

Merci beaucoup d'y avoir pensé Felipe (je débute donc je n'ai pas tous les réflexes et n'y connaissant que peu de choses, cela n'aidait pas beaucoup)
Administrateur
Pas de souci, c'est le genre de problème par lequel on est tous passés lors de notre apprentissage (autodidacte en tout cas) et dont tu te rappelles ensuite Smiley cligne