pb de recuperation de données dans un formulaire -php-
Hors ligneKefren Le 05/05/2008 à 14:58 Profil de Kefren Configuration de Kefren

Bonjour

Voila lors de l'inscription sur mon site je souhaiterai ajouter des contrôle pour indiquer à l'utilisateur ce qu'il ne convient dans sa saisie.

Je souhaite donc ajouter faire des contrôle sur ses nom, prenom, adresse; cp ...

le problème est que je n'arrive pas à faire afficher un message d'erreur la ou je le souhaite car je n'arrive pas à récupérer la valeur des champs remplis ou pas ...

extrait de mon formulaire:


<?php
ob_start
();

session_start();

require 
'configmysql.php';

include(
"header.php");

echo 
$_POST['nom_clt']."<br>";

if(
$_POST['nom_clt'] != "")
{
     $nom $_POST['nom_clt'];
}else{
     $nom "nom";
}

echo 
'<td class="milieu">';

$erreur=0;

if(isset(
$_GET['action'],$_POST['mdp_clt'],$_POST['confirm_mdp_clt'],$_POST['mail_clt'],$_POST['nom_clt'],$_POST['prenom_clt'],$_POST['adr_clt'],$_POST['cp_clt'],$_POST['ville_clt']) AND $_POST['mdp_clt']===$_POST['confirm_mdp_clt'])
{
     if(get_magic_quotes_gpc()===1)
     {
          $mail          $_POST['mail_clt'];
          $mdp          $_POST['mdp_clt'];
          $nom_clt     $_POST['nom_clt'];
          $prenom_clt     $_POST['prenom_clt'];
          $adr_clt     $_POST['adr_clt'];
          $cp_clt          $_POST['cp_clt'];
          $ville_clt     $_POST['ville_clt'];
          $pays_clt     $_POST['pays_clt'];
          
     
}
     else
     {
          $pseudo=addslashes($_POST['mail_clt']);
          $passe=addslashes($_POST['mdp_clt']);
     }

     if(!trim($mail) OR !trim($mdp))
     {
          header('location:inscription.php');
          exit;
     }

     mysql_connect($serv_bdd,$user_bdd,$mdp_bdd) OR die('<p>Connexion impossible à la base de données. Réessayez plus tard.</p>');

     mysql_select_db($nom_bdd) OR die('<p>sélection impossible</p>');
     $requete=mysql_query('SELECT COUNT(*) FROM client WHERE mail_clt="'.$mail.'"') OR die(mysql_error());

     $r=mysql_fetch_row($requete);

     if($r[0]!=='0')
     {
          mysql_close();
          $erreur=1;
     }
     else
     {
          $_SESSION['inscription'] = "ok";
          mysql_query('INSERT INTO client VALUES("","","'.$nom_clt.'","'.$prenom_clt.'","'.$mail.'",md5("'.$mdp.'"),"'.$adr_clt.'","'.$cp_clt.'","'.$ville_clt.'","'.$pays_clt.'","","","","","","","","","","","","","","","","","","","")') OR die(mysql_error());
          $_SESSION['login']=$mail;

          mysql_close();
          
          header
('location:accueil.php');
          exit;
          
     
}

}

if(
$erreur===1)
     {
          echo '<p>Cet adresse mail est déjà utilisée. Veuillez en choisir une autre</p>';
     }



echo 
'<div align="center">';
echo   '<p><u>Inscription Client : </u></p>';
echo   '<p>&nbsp;</p>';
echo   '<p>&nbsp;  </p>';
echo 
'</div>';
echo 
'<div align="center">';
echo   '<table width="54%" border="0" cellspacing="0" cellpadding="0">';
echo     '<form method="post" class="forminscription" action="'.$wwwroot.'/inscription.php?action=ajout">';

echo     '<tr><td colspan="2"';
if(
$nom == "nom")
{
     echo "Vous n'avez pas saisi votre nom";
}
echo     '</td></tr>';
echo       '<tr>';
echo         '<td width="44%"><p>Nom (*) </p><p>&nbsp;</p></td>';
echo          '<td width="56%"><p><input type="text" size="50" name="nom_clt" value="'.$nom.'"></p><p>&nbsp; </p></td>';
echo        '</tr>';
echo       '<tr>';
echo         '<td colspan="2"><div align="center">';
echo           '<p>';
echo             '<input type="submit" value="Inscription" class="btinte" />';
echo             '</p>';
echo            '<p>&nbsp;          </p>';
echo          '</div></td>';
echo        '</tr>';
echo      '</form>';
echo    '</table>';
echo 
'</div>';
echo 
'<p align="center">&nbsp;</p>';
echo
'<blockquote>';
echo   "<p>* : Les champs not&eacute;s d'un * sont obligatoires</p>";
echo
'</blockquote> <p>&nbsp;</p>';
 
echo 
'</td>';

include(
"pied.php");
ob_end_flush()
?>


Donc comme vous pouvez le vois si le client n'a pas saisie son nom, je voudrai afficher le message "vous n'avez pas saisi votre nom "... Le problème est que meme si je saisi un nom il n'est pas retenu

Merci de votre aide Kef
--
Si les poules traversent juste devant les voitures ... c'est pour aller de l'autre coté de la route !!!
Hors ligneBrako Le 08/05/2008 à 12:02 Profil de Brako Configuration de Brako

Bonjour

je vois le problème, tu as essayé de le résoudre d'une manière astucieuse mais va falloir revoir l'organisation de ton code.

Le nom est-ce-le seul champ sur lequel tu veux appliquer un contrôle ?

Première étape l'enregistrement :

-vérifier si les variables $_POST existent,
-Si elles existent il faut contrôler le contenu : si elle sont vides il faut générer les messages d'erreurs
-si aucune erreur n'a été trouvé alors il faut préparer les variables en vue de l'enregistrement (la sécurité htmlentities, addslahes....)
-enregistrement en bd
-afficher la confirmation de l'enregistrement


2ème étape le formulaire :

-si l'enregistrement en db à été fait on n'affiche pas le formulaire.
-sinon on affiche le formulaire avec les messages d'erreurs si ils existent

cela donnerait à peu près cela :



<?php
ob_start
();

session_start();

require 
'configmysql.php';

include(
"header.php");

$erreur 0;
$enregistrelent_db 0;

//ON INITIALISE LES ERREURS
$erreur_mdp ""//erreur mot de passe
$erreur_confirm_mdp_clt ""//erreur mdp confirmation
$erreur_diff_mdp ""//erreur si mdp et confirm mdp sont differents
$erreur_mail_clt "";//erreur mail
$erreur_nom_clt "";
$erreur_prenom_clt "";
$erreur_adr_clt "";
$erreur_cp_clt "";
$erreur_ville_clt "";
     
     
//PREMIERE ETAPE SI LES VARIABLE $_POST EXISTENT
if(isset($_GET['action'],$_POST['mdp_clt'],$_POST['confirm_mdp_clt'],$_POST['mail_clt'],$_POST['nom_clt'],$_POST['prenom_clt'],$_POST['adr_clt'],$_POST['cp_clt'],$_POST['ville_clt']) AND $_POST['mdp_clt']===$_POST['confirm_mdp_clt'])
     {
     //SI L'UNE DES VARIABLES EST VIDE OU QUE LE CODE ET LA CONFIRMATION DU CODE NE SONT PAS IDENTIQUES
     if(empty($_POST['mdp_clt']) OR empty($_POST['confirm_mdp_clt']) OR empty($_POST['mail_clt']) OR empty($_POST['nom_clt']) OR empty($_POST['prenom_clt']) OR empty($_POST['adr_clt']) OR empty($_POST['cp_clt']) OR empty($_POST['ville_clt']) OR $_POST['mdp_clt'] != $_POST['confirm_mdp_clt'])
     {
     $erreur=1;//erreur vaut 1 car il y a une ou plusieures erreurs
     
     
//ON GENERE LES ERREURS
     if(empty($_POST['mdp_clt']))
          {
          $erreur_mdp "Vous devez choisir un mot de passe";
          }
     elseif(empty($_POST['mdp_clt']))
          {
          $erreur_confirm_mdp_clt "Vous n'avez pas confirmé votre mot de passe";
          }
     elseif($_POST['mdp_clt'] != $_POST['confirm_mdp_clt'])
          {
          $erreur_diff_mdp "Les mots de passe ne sont pas identiques";
          }
     if(empty($_POST['mail_clt']))
          {
          $erreur_mail_clt "Vous n'avez pas entré votre email";
          }
     //etc... pour toutes les erreurs
     
     
}
     else//SINON SI IL N'Y A PAS D'ERREUR
          {
          //SECURITE
          //ENREGISTREMENT EN DB
          
          
          $enregistrelent_db 
1;//vaut 1 si l'enregistrement à été effectué
          }
}
     
     
if($enregistrelent_db == 0)//si il n'y a pas eu d'enregistrement : soit il y a des erreurs soit c'est la premiere fois que la page est chargée
     {
     echo '<div align="center">';
     echo   '<p><u>Inscription Client : </u></p>';
     echo   '<p>&nbsp;</p>';
     echo   '<p>&nbsp;  </p>';
     echo '</div>';
     echo '<div align="center">';
     
     
if($erreur == 1)//il il exsiste des erreur on affiche la liste des erreurs
          {
          echo '<p>Les erreurs ci-dessous se sont produites :<br/>';
          echo '<ul>';
          if(!empty($erreur_mdp)){echo '<li>' $erreur_mdp '</li>';}
          if(!empty($erreur_confirm_mdp_clt)){echo '<li>' $erreur_confirm_mdp_clt '</li>';}
          //etc.... pour toutes les erreurs
          
          echo 
'</ul></p>';
          }
     
     echo   
'<table width="54%" border="0" cellspacing="0" cellpadding="0">';
     echo     '<form method="post" class="forminscription" action="'.$wwwroot.'/inscription.php?action=ajout">';
     echo     '</td></tr>';
     echo       '<tr>';
     echo         '<td width="44%"><p>Nom (*) </p><p>&nbsp;</p></td>';
     echo          '<td width="56%"><p><input type="text" size="50" name="nom_clt" value=""></p><p>&nbsp; </p></td>';
     echo        '</tr>';
     echo       '<tr>';
     echo         '<td colspan="2"><div align="center">';
     echo           '<p>';
     echo             '<input type="submit" value="Inscription" class="btinte" />';
     echo             '</p>';
     echo            '<p>&nbsp;          </p>';
     echo          '</div></td>';
     echo        '</tr>';
     echo      '</form>';
     echo    '</table>';
     echo '</div>';
     echo '<p align="center">&nbsp;</p>';
     echo'<blockquote>';
     echo   "<p>* : Les champs not&eacute;s d'un * sont obligatoires</p>";
     echo'</blockquote> <p>&nbsp;</p>';
 
     echo '</td>';
}
include(
"pied.php");
ob_end_flush()
?> 


Cet exemple est à adapter à tes besoins, car les champs ne sont pas tous obligatoires. En poussant le principe un peu plus loin, en cas d'erreur on pourrait très bien pré remplir les champs corrects afin que l'utilisateur ne doivent pas remplir à nouveau tout les champs.

Bon courage
--
Ce qui donne une éventuelle matière à suspecter une quelconque propagande ...
Hors ligneKefren Le 21/05/2008 à 15:25 Profil de Kefren Configuration de Kefren

Merci pour tout ce code !!! Trop nice jvais pouvoir finir le site maintenant que j'ai plus de temps !!!
--
Si les poules traversent juste devant les voitures ... c'est pour aller de l'autre coté de la route !!!
Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels