8791 sujets

Développement web côté serveur, CMS

Bonjour chers Alsacréateurs, Alsacréatrices !

J'ai un formulaire d'inscription tout ce qu'il y a de banal qui transmet les données fournies à une base MySQL. Une fois que les données sont parties vers la DB une page de vérification des données s'ouvre et récapitule les valeurs saisies par l'utilisateur (la page de vérification ne récupère pas les données directement de la DB mais du formulaire précédent qui lui envoie à l'aide d'un POST)

Mais j'ai un petit problème d'affichage que je vais tenter de vous expliquer:

Dans mon formulaire j'ai un SELECT dont certaines valeurs ont des accents (employé, retraité, etc...) ces valeurs viennent de ma DB où ils sont inscrits de la manière suivante : 'employé', 'retraité' et du coup ils apparaissent correctement dans la liste déroulante de mon formulaire.

Par contre sur ma page de vérification je récupère directement les valeurs de la page de formulaire et j'obtiens : 'employ?' et 'retrait?'.

exemple :
<?php echo($_POST['input_nom']); ?>

Si 'input_nom' = retraitr&eacute;, sur mon formulaire il affiche bien retraité, mais par contre il affiche retrait? sur ma page de vérification.

Sauriez vous comment faire pour afficher correctement ces données sans faire de requête pour les récupérer directement de la base de données?
Modifié par LordBatoon (18 Nov 2009 - 13:22)
Peut-être qu'un peu de code peut vous aider à mieux comprendre?
<form action="recap.php" method="post">
    	<div id="conteneurForm">
            <div class="wrapperLabel">
              <ol>
               <li>
                 <span class="labelColor">Prénom : </span>
               </li>
               <li>                 
                 <span class="labelColor">Nom : </span>
               </li>
               <li>
                 <span class="labelColor">Pseudo : </span>
               </li>
               <li>
                 <span class="labelColor">Mot de passe : </span>
               </li>
              </ol>
            
            </div>
                  
            <div class="wrapperInput">                
                <input id="regPrenom" type="text" name="input_prenom" class="inputStyle" /><br />
                <input id="regNom" type="text" name="input_nom" class="inputStyle" /><br />
                <input id="regPseudo" type="text" name="input_pseudo" class="inputStyle" /><br />
                <input id="regMdp" type="password" name="input_mdp" class="inputStyle" /><br />
            </div>
        </div>
        <div id="wrapperSubForm">        
            <div class="wrapperRadioLabel">
            <ol>
               <li>
                 <span class="labelColor">Civilité : </span>
               </li>
            </ol>
            </div>
            <div class="wrapperRadioInput">
<?php
	mysql_connect("localhost","root","");  //connexion a MySQL
	mysql_select_db("restaurant");   //connexion à la base "restaurant"
	$choixCivilite="SELECT IdCivilite,LibCivilite FROM civilite"; // requête à executer pour la civilite
	$rs=mysql_query($choixCivilite) or die(mysql_error()); //execution de la requete (ou affiche l'erreur)
	while($row=mysql_Fetch_array($rs)) //boucle tant que les données sont extraites
	{
		echo("<input class=\"droiteToute\" type=\"radio\" name=\"btnCiv\" alt=\"civilite\" value=".$row['IdCivilite']." />".$row['LibCivilite']."<br />\n<input type=\"hidden\" name=\"".$row['IdCivilite']."\" value=\"".$row['LibCivilite']."\" />\n");
	}
?>
            </div>
        </div>
        <div id="conteneurFormBis">
            <div class="wrapperLabel">
            	<ol>
               <li>
                 <span class="labelColor">CSP : </span>
               </li>
            </ol>
            </div>
            <div class="wrapperInput">
            	
<?php
	echo("<select title=\"Classe Socio-Professionnelle\" name=\"CSP\">\n");
	$choixCSP="SELECT LibCsp, IdCsp FROM csp";  //requete à effectuer pour la CSP
	$rs=mysql_query($choixCSP) or die(mysql_error());  //execution de la requete (ou affiche l'erreur)
	while($row=mysql_Fetch_array($rs))  //boucle tant que des données sont extraites
	{
	echo("<option value=\"".$row['IdCsp']."|".$row['LibCsp']."\">".$row['LibCsp']."</option>\n");
	}
	echo("</select>");
?>
				
            </div>
        </div>
        <div class="notaBene">
        <div class="fontMini">(<strong>C</strong>lasse <strong>S</strong>ocio-<strong>P</strong>rofessionnelle)</div><br />
        </div>
    <p class="horinzontalCenter">
    	<input type="submit" name="Valider" value="Valider" />
    </p>
    </form>

Ca c'est ma page de formulaire (enfin la partie qui nous intéresse).

Voici ma page de vérification:
<html>
<head></head>
<body>
<?php
	mysql_connect("localhost","root","");  //connexion a MySQL
	mysql_select_db("restaurant");   //connexion à la base "restaurant"
	$maPhrase = "d5HxQ02r Hd6zLm";
	$extractIdCsp = preg_replace('#(.+)\|(.+)#i', '$1', $_POST['CSP']);
	$extractLibCsp = preg_replace('#(.+)\|(.+)#i', '$2', $_POST['CSP']);
	$maRequete="INSERT INTO membre(NomMembre, PrenomMembre, PseudoMembre, MdpMembre, IdCsp, IdCivilite) VALUES('".$_POST['input_nom']."','"
		.$_POST['input_prenom']."','"
		.$_POST['input_pseudo']."','"
		.md5 ($maPhrase.$_POST['input_mdp'])."',"	
		// nombre entier pas besoin de la simple cote' md5 fonction de hachage pour protéger le mot de passe
		.$extractIdCsp.","
		.$_POST['btnCiv'].")";		
	mysql_query($maRequete) or die(mysql_error());
	
	echo($maRequete);
?>
<table border="0">          
                <tr>
                  <td>Prénom :</td>
                  <td><input class="inputStyle" type="text" name="prenom" value="<?php echo($_POST['input_prenom']); ?>" readonly="readonly" /></td>
                </tr>
                <tr>
                  <td>Nom :</td>
                  <td><input class="inputStyle" type="text" name="nom" value="<?php echo($_POST['input_nom']); ?>" readonly="readonly" /></td>
                </tr>
                <tr>
                  <td>Pseudo :</td>
                  <td><input class="inputStyle" type="text" name="pseudo" value="<?php echo($_POST['input_pseudo']); ?>" readonly="readonly" /></td>
                </tr>
                <tr>
                  <td>Civilité :</td>
                  <td><input class="inputStyle" type="text" name="civilite" value="<?php echo($_POST[$_POST['btnCiv']]); ?>" readonly="readonly" /></td>
                </tr>
                <tr>
                  <td>CSP :</td>
                  <td><input class="inputStyle" type="text" name="CSP" value="<?php echo($extractLibCsp); ?>" readonly="readonly" /></td>
                </tr>
              </table>
</body>
</html>


Alors je sais que ma page de formulaire est en <div> (j'essaie le full css) et que ma page est en <table> toute pas belle, mais ça sera modifié plus tard.

Je ne sais pas trop si ça va vous aider.
Quel est l'encodage de ta page et de ta base de donnée ? Ce doit être le même bien évidement.

Ensuite si l'ont prend le cas d'un encodage en utf8 par exemple, utilise la requête SQL suivant après ta connexion à la base de donnée :
SET NAMES UTF8