Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2862 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Formulaire PHP avec test champs vides

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Formulaire PHP avec test champs vides

n°2078092
boss183
Posté le 25-05-2011 à 14:18:47  profilanswer
 

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 :  
 

Code :
  1. <?php
  2. // Paramètres pour accéder à ta base MysQl
  3. $host = "localhost";
  4. $user = "root";
  5. $password = "";
  6. $bdd = "application";
  7. // Connection à la Base MySql
  8. mysql_connect($host, $user, $password) or die ("impossible de se connecter au serveur" );
  9. mysql_select_db($bdd) or die ("impossible de se connecter a la base de donnees" );
  10. // Déclaration des champs (vides ou récupération des $_POST)...
  11. $title = (isset($_POST['title'])) ? htmlspecialchars($_POST['title']) : '';
  12. $logiciel = (isset($_POST['prenom'])) ? htmlspecialchars($_POST['logiciel']) : '';
  13. $version = (isset($_POST['version'])) ? htmlspecialchars($_POST['version']) : '';
  14. $link = (isset($_POST['link'])) ? htmlspecialchars($_POST['link']) : '';
  15. $logiciel = (isset($_POST['description'])) ? htmlspecialchars($_POST['description']) : '';
  16. // Si le formulaire a été envoyé, on teste les champs...
  17. $erreur = false;
  18. if (!empty($_POST)) {
  19. // vérification dans l'ordre inverse pour que le dernier soit le premier  smile  
  20. if (empty($title)) {
  21.  $erreur = true;
  22.  $errmsg = 'Merci de saisir le titre !';
  23. }
  24. if (empty($logiciel)) {
  25.  $erreur = true;
  26.  $errmsg = 'Merci de saisir le logiciel/matériel !';
  27. }
  28.  // Si tout est OK on exécute l'action (INSERT dans la base, envoi d'email, etc...)
  29. if (!$erreur) {
  30.  mysql_query("INSERT INTO infolog (title,logiciel,version,link,description) VALUES('$title','$logiciel','$version','$link','$description')" );
  31.  header("Location: ajout_info.php" );
  32.  exit;
  33. }
  34. }
  35. ?>
  36. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  37. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
  38.   <head>
  39.        <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  40.     <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  41.     <title>Ajouter nouvelle info</title>
  42.     <link href="CSS/style.css" rel="stylesheet" type="text/css" media="screen" />
  43. <style type="text/css">
  44. .alert {
  45. color:#990000;
  46. }
  47. </style>
  48.   </head>
  49. <BODY background="metal.jpg" style="background-repeat:no-repeat; background-attachment:fixed">
  50. <?php
  51. if ($erreur) {
  52. echo '<p class="alert">'.$errmsg.'</p>';
  53. }
  54. ?>
  55. <br>
  56. <ul id="menu_dynamique">
  57.     <li class="extend">Informations<ul>
  58. <li><a href="traitement.php">Infos Logiciels</a></li>
  59. <li class="sans"><a href="traitementmat.php">Infos Mat&eacute;riels</a></li>
  60. <li><a href="traitementcontrat.php">Infos Contrats</a></li>
  61. </ul>
  62. </li>
  63. <li class="extend none"><a href="http://192.168.66.110/ouapi1.0">G&eacute;rer le parc Informatique</a></li>
  64. <li class="extend">Gestion des infos<ul>
  65.  <li><a href="nouvelle_info.html">Ajouter une info</a></li>
  66.  <li class="sans"><a href="modifinfo.php">Modifier/Supprimer info</a></li>
  67.     <li><a href="removerss.php">Supprimer document</a></li>
  68.  </ul>
  69. </li>
  70. <li class="extend none">Gestion des flux RSS
  71.  <ul>
  72.  <li><a href="actu_flux.php">Actualiser les flux</a></li>
  73.  <li class="sans"><a href="nouv_flux.html">Ajouter un flux</a></li>
  74.     <li><a href="removeflux.php">Supprimer un flux</a></li>
  75.  </ul>
  76. </li>
  77. <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>
  78. </ul>
  79. <br><br><br><br>
  80. <table align="center" width="800" height="390" border="0" cellpadding="0" cellspacing="0">
  81.    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  82.       <tr>
  83.         <!--<td width="6%">&nbsp;</td>-->
  84.         <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>
  85.      </tr>
  86.   <tr>
  87.  <td><div><font size=4 COLOR='#377693'><span style="font-variant: small-caps;"><B><label for="title">Titre *</label></B></SPAN></font></div></td>
  88.   </tr>
  89. <tr>
  90.       <td colspan="35"><input type="text" name="title" id="title" size="76" maxlength="500" value="<?php echo stripslashes($title); ?>" /></td>
  91. </tr>
  92. <tr>
  93.       <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>
  94.   <tr>
  95.       <td colspan="5"><input type="text" name="logiciel" id="logiciel" size="50" maxlength="50" value="<?php echo stripslashes($logiciel); ?>" /></td>
  96. </tr>
  97. <tr>
  98.       <td><div><font size=4 COLOR='#377693'><span style="font-variant: small-caps;"><B><label for="version">Version</label></B></SPAN></font></div></td>
  99.   </tr>
  100. <tr>
  101.       <td colspan="5"><input type="text" name="version" id="version" size="50" maxlength="50" value="<?php echo stripslashes($version); ?>" /></td>
  102. </tr>
  103. <tr>
  104. <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>
  105. <tr>
  106. <td colspan="5"><input type="text" name="link" id="link" size="50" maxlength="50" value="<?php echo stripslashes($link); ?>" /></td>
  107. </tr>
  108. <tr>     
  109.       <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>
  110.   </tr>
  111.   <tr>
  112.       <td colspan='5'><textarea rows="5" cols="76" name="description" id="description" value="<?php echo stripslashes($description); ?>"></textarea></td>
  113. </tr>
  114. <tr>
  115.   <td height="24"></td>
  116.   <td>&nbsp;</td>
  117.   <td>&nbsp;</td>
  118. </tr>
  119. <tr>
  120.   <td height="14"></td>
  121.   <td width="16%"><center><input type="reset" name="Submit2" value="Effacer"></center></td>
  122.   <td width="28%"><left><input type="submit" name="Submit" value="Enregistrer l'info"></left></td>
  123. </tr>
  124. <tr>               
  125. <td height="20"></td>
  126.      <td></td>
  127.      <td></td>
  128. </tr>
  129. </form>
  130. </table></td></tr>
  131. </table>
  132. </div>
  133. <BR><BR><BR>
  134. <P align="right"><FONT COLOR='#377693' STYLE="font-family:trebuchet MS;">* indique un champ requis</FONT></P>
  135. </body>
  136. </html>


Merci d'avance pour votre aide !

mood
Publicité
Posté le 25-05-2011 à 14:18:47  profilanswer
 

n°2078103
rufo
Pas me confondre avec Lycos!
Posté le 25-05-2011 à 14:33:25  profilanswer
 

pb archi traité sur ce forum ou sur google :/
 
T'as des trucs écrits (ou juste un caractère espace) avant l'instruction header("Location: ajout_info.php" );


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2078108
boss183
Posté le 25-05-2011 à 14:44:34  profilanswer
 

alors en fait je n'ai plus la même erreur ça devait venir de l'encodage. Mais là le problème c'est qu'il ne fait pas les test correctement, il enregistre quand même dans la bdd si'il manque un champ il ne ré-affiche plus ce que l'utilisateur avait saisi.

n°2078141
rufo
Pas me confondre avec Lycos!
Posté le 25-05-2011 à 15:40:58  profilanswer
 

Ligne 18, y'a rien qui te choque? :D
 
par ailleurs, tu testes "empty" que 3 champs sur les 5...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2078162
boss183
Posté le 25-05-2011 à 16:05:35  profilanswer
 

oui oui j'ai corrigé mes erreurs !
ça marche à peu près, lorsqu'il y a une erreur ça conserve bien ce que l'utilisateur avait tapé sauf pour le champ description, peut être parce qu'il est de type textarea ?
Sinon, je voudrais savoir comment faire pour afficher, lorsque la requête a bien été prise en compte, un petit message qui dit que ça a marché avec un lien pour ajouter une nouvelle info plutôt que de rafficher la page telle qu'elle comme si rien ne s'était passé ?
 
Merci d'avance

n°2078183
boss183
Posté le 25-05-2011 à 16:26:26  profilanswer
 

C'est bon j'avais fait une erreur dans mon textarea !
Par contre, je ne sais pas comment afficher, lorsque la requête a bien été prise en compte, un petit message qui dit que ça a marché avec un lien pour ajouter une nouvelle info plutôt que de rafficher la page telle qu'elle comme si rien ne s'était passé ?

n°2078189
rufo
Pas me confondre avec Lycos!
Posté le 25-05-2011 à 16:37:56  profilanswer
 

boss183 a écrit :

oui oui j'ai corrigé mes erreurs !
ça marche à peu près, lorsqu'il y a une erreur ça conserve bien ce que l'utilisateur avait tapé sauf pour le champ description, peut être parce qu'il est de type textarea ?
Sinon, je voudrais savoir comment faire pour afficher, lorsque la requête a bien été prise en compte, un petit message qui dit que ça a marché avec un lien pour ajouter une nouvelle info plutôt que de rafficher la page telle qu'elle comme si rien ne s'était passé ?
 
Merci d'avance


 
ben tout simple :
if (OK){
    afficher le contenu de la page web avec le msg de confirmation + un lien
} else {
    réafficher le formulaire avec les msg d'erreur + valeurs déjà saisies
}
 
:/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2078193
boss183
Posté le 25-05-2011 à 17:07:10  profilanswer
 

Merci mais en fait je voudrais que ma page soit constitué :
 
- d'une partie en HTML : menu et fond (qui seront toujours présent)
 
- de mon formulaire qui s'affiche lorsqu'on arrive sur la page ou qui se ré-affiche avec les valeurs saisies avant si les champs sont vides
 
- d'un message qui confirme que l'info a bien été enregistré avec un lien si on désire remettre ajouter une nouvelle info
 
le truc c que je veux pas afficher en même temps le message de confirmation et le formulaire, c'est soit l'un soit l'autre avec toujours en fond la partie html pour le fond et le menu.

n°2078196
rufo
Pas me confondre avec Lycos!
Posté le 25-05-2011 à 17:20:56  profilanswer
 

d'où le test if que j'ai mis :/
 
Si tu regardes mon soft Astres (cf ma signature), c'est comme ça que je fais : y'a des parties de contenu de ma mage web qui varient suivant des tests...
 
Edit : mais le mieux c'est de faire un MVC (modèle vue contrôleur) -> y'a un gros topic sur ce forum à ce propos...


Message édité par rufo le 25-05-2011 à 17:22:11

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2078197
boss183
Posté le 25-05-2011 à 17:23:11  profilanswer
 

ça veut dire que ta partie en html qui représente le menu et le fond je la tape deux fois ?? et en plus faut que je me tape de mettre tous les echo pour transformer en php

mood
Publicité
Posté le 25-05-2011 à 17:23:11  profilanswer
 

n°2078212
rufo
Pas me confondre avec Lycos!
Posté le 25-05-2011 à 18:06:35  profilanswer
 

boss183 a écrit :

ça veut dire que ta partie en html qui représente le menu et le fond je la tape deux fois ?? et en plus faut que je me tape de mettre tous les echo pour transformer en php


 
Ben non, tu factorises (include par ex). Mais comme dit précédemment, le mieux est de faire un MVC...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Formulaire PHP avec test champs vides

 

Sujets relatifs
Schéma Conceptuel - Planning PHP[PHP] Expression regulière: supprimer les virgules entre parenthèses
PHP / JavaScriptPHP - Formulaire problème value
[??] Création dynamique de page sur Mediawiki (à partir de code PHP)Qui voudrait m'aider en Php pour mon forum ?
Formulaire vers une même page sans bouton "Submit"[RESOLU] Modification d'un fichier en PHP
Pb requête SQL - Syntaxe PHP 
Plus de sujets relatifs à : Formulaire PHP avec test champs vides


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR