Partage
  • Partager sur Facebook
  • Partager sur Twitter

Formulaire PHP avec test champs vides

    25 mai 2011 à 14:19:26

    Bonjour à tous,

    alors je vous explique mon problème, j'avais réalisé un formulaire PHP qui testait les champs vides, ce formulaire était composé de deux scripts (un pour le formulaire et le "fichier action") ça marchait très bien sauf que s'il y avait un champ vide le fichier action indiquait l'erreur ainsi qu'un lien pour revenir au formulaire mais l'utilisateur perdait alors ce qu'il avait déjà tapé.
    On m'a parlé de session PHP mais j'ai pas trop réussi à mettre en place le truc, j'ai donc décidé de réaliser ce formulaire avec un seul fichier mais j'ai l'erreur suivante :

    Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\test_ajout.php:1) in C:\xampp\htdocs\test_ajout.php on line 50

    Voilà ci-dessous mon code en entier :

    <?php
    // Paramètres pour accéder à ta base MysQl
    $host = "localhost";
    $user = "root";
    $password = "";
    $bdd = "application";
    
    // Connection à la Base MySql
    mysql_connect($host, $user, $password) or die ("impossible de se connecter au serveur" );
    mysql_select_db($bdd) or die ("impossible de se connecter a la base de donnees" );
    
    // Déclaration des champs (vides ou récupération des $_POST)...
    
    $title = (isset($_POST['title'])) ? htmlspecialchars($_POST['title']) : '';
    $logiciel = (isset($_POST['prenom'])) ? htmlspecialchars($_POST['logiciel']) : '';
    $version = (isset($_POST['version'])) ? htmlspecialchars($_POST['version']) : '';
    $link = (isset($_POST['link'])) ? htmlspecialchars($_POST['link']) : '';
    $logiciel = (isset($_POST['description'])) ? htmlspecialchars($_POST['description']) : '';
    
    // Si le formulaire a été envoyé, on teste les champs...
    
    $erreur = false;
    
    if (!empty($_POST)) { 
    
    	// vérification dans l'ordre inverse pour que le dernier soit le premier  smile 
    
    	if (empty($title)) {
    
    		$erreur = true;
    
    		$errmsg = 'Merci de saisir le titre !';
    
    	}
    	
    	if (empty($logiciel)) {
    
    		$erreur = true;
    
    		$errmsg = 'Merci de saisir le logiciel/matériel !';
    
    	}
    
    		// Si tout est OK on exécute l'action (INSERT dans la base, envoi d'email, etc...)
    
    	if (!$erreur) {
    
    		mysql_query("INSERT INTO infolog (title,logiciel,version,link,description) VALUES('$title','$logiciel','$version','$link','$description')");
    
    		header("Location: ajout_info.php");
    
    		exit;
    
    	}
    
    }
    ?>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
      <head>
           <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <title>Ajouter nouvelle info</title>
        <link href="CSS/style.css" rel="stylesheet" type="text/css" media="screen" />
    	<style type="text/css">
    
    .alert {
    
    	color:#990000;
    
    }
    
    </style>
      </head>
    
    <BODY background="metal.jpg" style="background-repeat:no-repeat; background-attachment:fixed">
    <?php
    
    if ($erreur) {
    	echo '<p class="alert">'.$errmsg.'</p>';
    }
    
    ?>
    <br>
    <ul id="menu_dynamique">
    
        <li class="extend">Informations<ul>
    	<li><a href="traitement.php">Infos Logiciels</a></li>
    	<li class="sans"><a href="traitementmat.php">Infos Mat&eacute;riels</a></li>
    	<li><a href="traitementcontrat.php">Infos Contrats</a></li>
    	</ul>
    	</li>
    	
    	<li class="extend none"><a href="http://192.168.66.110/ouapi1.0">G&eacute;rer le parc Informatique</a></li>
    		
    	<li class="extend">Gestion des infos<ul>
    		
    		<li><a href="nouvelle_info.html">Ajouter une info</a></li>
    		<li class="sans"><a href="modifinfo.php">Modifier/Supprimer info</a></li>
    	    <li><a href="removerss.php">Supprimer document</a></li>
    		</ul>
    		
    	</li>
    		
    	<li class="extend none">Gestion des flux RSS
    		
    		<ul>
    		
    		<li><a href="actu_flux.php">Actualiser les flux</a></li>
    		<li class="sans"><a href="nouv_flux.html">Ajouter un flux</a></li>
    	    <li><a href="removeflux.php">Supprimer un flux</a></li>
    				
    		</ul>
    		
    	</li>
    	
    	<li class="extend"><a href="http://www.groupe-ocealis.com/ocealis-securite.html" title="Lien vers le site d'Ocealis S&eacute;curit&eacute;">Ocealis S&eacute;curit&eacute;</a></li>
    	
    </ul>
    <br><br><br><br>
    <table align="center" width="800" height="390" border="0" cellpadding="0" cellspacing="0">
       <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
          <tr>
            <!--<td width="6%">&nbsp;</td>-->
            <td colspan="5"><P ALIGN='center'><FONT SIZE=5 COLOR='#377693'><span style="font-variant: small-caps;"><B>Ajouter une nouvelle Information</B></SPAN></FONT><BR><BR><BR></P></td>
         </tr>
    	
    	  <tr>
    		<td><div><font size=4 COLOR='#377693'><span style="font-variant: small-caps;"><B><label for="title">Titre *</label></B></SPAN></font></div></td>
    	  </tr>
    	<tr>
          <td colspan="35"><input type="text" name="title" id="title" size="76" maxlength="500" value="<?php echo stripslashes($title); ?>" /></td>
    	</tr>
    
    <tr>
          <td><div><font size=4 COLOR='#377693'><span style="font-variant: small-caps;"><B><label for="logiciel">Logiciel / Mat&eacute;riel *</label></B></SPAN></font></div></td></tr>
    	  <tr>
          <td colspan="5"><input type="text" name="logiciel" id="logiciel" size="50" maxlength="50" value="<?php echo stripslashes($logiciel); ?>" /></td>
    </tr>
    
    <tr>
          <td><div><font size=4 COLOR='#377693'><span style="font-variant: small-caps;"><B><label for="version">Version</label></B></SPAN></font></div></td>
    	  </tr>
    <tr>
          <td colspan="5"><input type="text" name="version" id="version" size="50" maxlength="50" value="<?php echo stripslashes($version); ?>" /></td>
    </tr>
    
    <tr>
    <td><div><font size=4 COLOR='#377693'><span style="font-variant: small-caps;"><B><label for="link">Lien *</label></B></SPAN></font></div></td></tr>
    <tr>
    	<td colspan="5"><input type="text" name="link" id="link" size="50" maxlength="50" value="<?php echo stripslashes($link); ?>" /></td>
    </tr>
    
    <tr>       
          <td><BR><div><font size=4 COLOR='#377693'><B><span style="font-variant: small-caps;"><label for="description">Description *</label></SPAN></B></font></div></td>
    	  </tr>
    	  <tr>
          <td colspan='5'><textarea rows="5" cols="76" name="description" id="description" value="<?php echo stripslashes($description); ?>"></textarea></td>
    </tr>
    
    <tr>
      <td height="24"></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td height="14"></td>
      <td width="16%"><center><input type="reset" name="Submit2" value="Effacer"></center></td>
      <td width="28%"><left><input type="submit" name="Submit" value="Enregistrer l'info"></left></td>
    </tr>
    <tr>                
    <td height="20"></td>
         <td></td>
         <td></td>
    </tr>
    </form>
    </table></td></tr>
    </table>
    </div>
    <BR><BR><BR>
    <P align="right"><FONT COLOR='#377693' STYLE="font-family:trebuchet MS;">* indique un champ requis</FONT></P>
    </body>
    </html>
    


    Merci d'avance pour votre aide !
    • Partager sur Facebook
    • Partager sur Twitter
      25 mai 2011 à 14:36:21

      Ce que je fais dans ces cas la c'est que je fait un onsubmit sur le submit du formulaire qui va te permettre de tester la valeur de tes champs via JS ou ajax de ce fait la page ne se recharge pas tant que le onsubmit ne renvoit pas True. Donc en cas d'erreur les données saisies ne bougent pas !
      • Partager sur Facebook
      • Partager sur Twitter
        25 mai 2011 à 14:45:50

        Merci pour ta réponse Thehell mais comment faire un "onsubmit" ?
        • Partager sur Facebook
        • Partager sur Twitter
          25 mai 2011 à 15:03:33

          <FORM name="commande" action="action.php" onSubmit="<gras>return</gras> Verif()">
          


          Le return avant le nom de ta fonction est vraiment important !!! !!! !!!!

          Et après dans ton fichier de fonction JS tu fait :
          function Verif()
          {
               if(document.getElementById('caca').value == "")
               {
                    alert("Le champ caca n'est pas remplis");
                    return false;
               }
          }
          


          Je fais ca à la va vite pour te faire comprendre.
          Le mieux après c'est de trouver une technique pour passer tes champs en paramètres avec le type de données attendues comme ca du coup ca te fait qu'une seul fonction de vérification pour tout ton site :)
          • Partager sur Facebook
          • Partager sur Twitter

          Formulaire PHP avec test champs vides

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown