Problème sur mon formulaire d'identification.
Hors ligneSalva Le 29/12/2005 à 11:24 Profil de Salva Configuration de Salva

salut, c'est encore

Voilà mon nouveau problème.

J'ai un formulaire d'identification qui contient plusieurs champs.
Si le formulaire est correctement rempli, les valeurs des champs sont insérées dans une Bd.
Ce qui est très bizare (et en plus ca marchait avant !!!) c'est que toutes les valeurs de mes champs sont bien insérées sauf une !!! toujours le même.
C'est halucinant cette histoire !!!
tous mes champs sont renseignés de la même facon, le scrit INSERT est juste car lorsque je le fait directement dans phpMyAdmin ca marche, tous les champs sont rempli.

Et lorsque je met un ECHO devant le code INSERT sur ma page (merci webmaster pour cette petite astuce bien utile ) je vois bien que la valeur du champ n'est pas transmise.

Voici le résultat d'une requete avec ECHO :
"INSERT INTO clients (nom, prenom, adresse, ville, cp, tel, email, pass) VALUES ('xxx', 'xxx', 'xxx', '', 'xxx', 'xxx', 'xxx', 'xxx')";

On voit que la valeur 'ville' est nul alors que normalement il y a bien quelque chose dans ce champ.

voilà, je vais , j'espére que vous vous êtes patient !!!

@+
Hors ligneAnthony Le 29/12/2005 à 12:54 Profil de Anthony Configuration de Anthony

Admin
Salut :-)

quel est ton code PHP qui te permet de récupérer les valeurs du formulaire, et le code HTML de ton formulaire ?
--

Hors ligneSalva Le 29/12/2005 à 14:05 Profil de Salva Configuration de Salva

Salut,

Voici le code Php :

<?php require_once('Connections/connexionxxxxx.php'); ?>
<?php
session_start();
//.........................................................
if ($HTTP_POST_VARS['inscription_mairie_moselle']=="ok")
{//début du if
//.........................TESTE SI LE MAIL EXISTE
//sélection de la base de données
mysql_select_db($database_connexionxxxxx, $connexionxxxxx);

//vérifie si le mail existe déjà dans la base
$FORMemail=trim($FORMemail);
//trim() supprime les espaces éventuels
$query_rsClient="SELECT email FROM clients WHERE email='$FORMemail'";
$rsClient=mysql_query($query_rsClient, $connexionxxxxx);
$totalRows_rsClient=mysql_num_rows($rsClient);

//SI LE MAIL N'EXISTE PAS,
//INSERTION DES DONNEES DANS LA TABLE
//"clients"
if ($totalRows_rsClient==0)
{//début du if
//enregistrement dans la base du nouveau compte client
$insertSQL="INSERT INTO clients (nom, prenom, adresse, ville, cp, tel, email, pass) VALUES ('$nom', '$prenom', '$adresse', '$ville', '$cp', '$tel', '$FORMemail', '$FORMpass')";
$Result1=mysql_query($insertSQL, $connexionxxxxx);
$clientID=mysql_insert_id(); //récupère l'identifiant client attribué
//mémorisation des paramètres dans la session
$statut="client";
session_register("clientID");
session_register("statut");
header("Location:login_mairie_moselle.php");
//redirection vers la page commande
}//fin du if ($totalRows_rsClient==0)
//----SI LE MAIL EXISTE DEJA
//CREATION D'UN MESSAGE D'ERREUR
else
{//début du else
$erreur_mail=1;
}//fin du else
}//fin du if
?>

Voici le code html du formulaire :


<form name="form1" method="post" onsubmit="return test(this.ville,this.FORMemail,this.FORMpass)" action="inscription_mairie_moselle.php">
<script language="JavaScript">
// Teste le contenu des champs du form avant submit
function test(ville,FORMemail,FORMpass) {
         if(ville.value=="") {
            alert("Indiquez votre commune !"); ville.focus(); return false;
         } else if(FORMemail.value=="") {
            alert("Indiquez votre Email !"); FORMemail.focus(); return false;
         } else if(FORMpass.value=="") {
            alert("Indiquez votre mot de passe !"); FORMpass.focus(); return false;
           }     else {
          return true;}
      }
       
</script>        
          <table width="400" border="1" align="center">
          <tr>
            <th scope="col"><div align="right">Nom : </div></th>
            <td><input name="nom" type="text" id="nom" size="30">
              <span class="Style6">*</span></td>
          </tr>
          <tr>
            <th scope="row"><div align="right">Pr&eacute;nom : </div></th>
            <td><input name="prenom" type="text" id="prenom" size="30"></td>
          </tr>
          <tr>
            <th scope="row"><div align="right">Adresse : </div></th>
            <td><input name="adresse" type="text" id="adresse" size="50"></td>
          </tr>
          <tr>
            <th scope="row"><div align="right">Ville : </div></th>
            <td><input name="ville" type="text" id="ville" size="30">
              <span class="Style6">*</span></td>
          </tr>
          <tr>
            <th scope="row"><div align="right">CP : </div></th>
            <td><input name="cp" type="text" id="cp" size="5"></td>
          </tr>
          <tr>
            <th scope="row"><div align="right">T&eacute;l : </div></th>
            <td><input name="tel" type="text" id="tel" size="30"></td>
          </tr>
          <tr>
            <th scope="row"><div align="right">E-mail : </div></th>
            <td><input name="FORMemail" type="text" id="FORMemail" size="40">
              <span class="Style6">*</span></td>
          </tr>
          <tr>
            <th scope="row"><div align="right">Mot de passe : </div></th>
            <td><input name="FORMpass" type="password" id="FORMpass" size="30">
              <span class="Style6">*</span></td>
          </tr>
          <tr>
            <th scope="row">&nbsp;</th>
            <td><input name="inscription_mairie_moselle" type="hidden" id="inscription_mairie_moselle" value="ok"></td>
          </tr>
          <tr>
            <th scope="row">&nbsp;</th>
            <td><input type="submit" name="Submit" value="valider">
              (<span class="Style6">*</span> champ obligatoire) </td>
          </tr>
        </table>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
      </form>


Re, re, re Merci

@+
Hors ligneAnthony Le 29/12/2005 à 19:52 Profil de Anthony Configuration de Anthony

Admin
Remplace le HTTP_POST_VARS par _POST :

if(isset($_POST['inscription_mairie_moselle']))
{

}

Ensuite pareil toutes tes variables portant le nom des champs il faut les remplacer par $_POST['nomduchamp']

tu ne dois pas utiliser $nomduchamp directement.

a +
--

Hors ligneSalva Le 29/12/2005 à 23:28 Profil de Salva Configuration de Salva

Salut,

Bon, ben encore une fois je ne peux que m'incliner devant tant de professionnalisme.
Chapeau bas. Monsieur.
Effectivement ca marche avec les modifs que tu m'as soumises.

Mais pour que j'entre dans la nouvelle année un peu moi bête que je ne quitte la précédente, peux-tu m'expliquer la différence entre le code que tu m'as donné et celui d'avant?
Surtout qu'avant il n'y avait que la valeur 'ville' qui n'était pas transmise mais le reste fonctionnait.

Merci encore.

@+
Hors ligneAnthony Le 30/12/2005 à 00:16 Profil de Anthony Configuration de Anthony

Admin
En fait te dire d'où venait le problème exactement, il se peut que t'ais écrasé la variable $ville ou alors je ne sais pas. Par contre le fait d'avoir remplacé les variables par $_POST['variable'] c'est pour coder plus proprement. En fait avec les nouvelles versions de PHP ce ne sera presque plus possible de coder avec le nom des champs directement, et la sécurité est moins bonne, car mettons que tu prennes la variable $variable, elle peut venir d'un cookie, d'une session, d'une url ou d'un formulaire... bref si le mec envoie deux données ayant un nom identique il peut très bien faire passer les données qu'il veut à la place des tiennes par exemple, te bouziller une session, etc...
alors qu'avec les register_globals à off, t'es obligé de dire dans le nom de la variable d'où elle provient :

$_GET['variable'] pour l'url, $_POST['variable'] pour les formulaires en méthode post, $_SESSION['variable'] pour les sessions et $_COOKIE['variable'] pour un cookie, comme ça même si un mec te met n'importe quoi dans l'url et que tu veux la variable de session, $_SESSION['variable'] n'ira pas chercher la variable dans l'url et donc la sécurité sera largement meilleure.

a +
--

Hors ligneSalva Le 30/12/2005 à 12:11 Profil de Salva Configuration de Salva

Salut,

Bon, ben là je sais pas comment le dire.
Mais ca remarche plus de nouveau!!!
J'ai juste changé le leint vers la BD, et du coup j'ai ni la ville, ni le nom qui s'inscrive dans la Bd.

Esct ce que mon Dreamweaver me joue des tour !!! je ne sais pas.

Petite précision pour le $_post['variable'] je ne l'avis pas changé partout car sinon ca planté :

là je l'ai remplacé :
if (isset($_POST['inscription_mairie_moselle2'])=="ok")
{
ici aussi
$_POST['FORMemail']=trim($_POST['FORMemail']);

par contre ici non, sinon j'ai une erreur parse error 'T_string' or .....

$insertSQL="INSERT INTO clients (user, prenom, adresse, ville, cp, tel, email, pass) VALUES ('$user', '$prenom', '$adresse', '$ville', '$cp', '$tel', '$FORMemail', '$FORMpass')";

j'aurais bien du remplacer '$user' par '$_POST['user']'

désolé.

@+ si tu en as encore la patiente.
Hors ligneAnthony Le 30/12/2005 à 13:41 Profil de Anthony Configuration de Anthony

Admin
oui tu aurais dû mais en fait fais ceci :

'$_POST[user]' dans le cas présent :-)

$insertSQL="INSERT INTO clients VALUES ('$_POST[user]', '$_POST[prenom]', '$_POST[adresse]',...
--

Hors ligneSalva Le 30/12/2005 à 15:18 Profil de Salva Configuration de Salva

salut,

dure, dure cette fin d'année.

J'ai mis cela :

$insertSQL="INSERT INTO clients VALUES ('$_POST[user]', '$_POST[prenom]', '$_POST[adresse]', '$_POST[ville]', '$_POST[cp]', '$_POST[tel]', '$_POST[FORMemail]', '$_POST[FORMpass]')";

Mais du coup je n'ai aucune erreur lorsque je valide le formulaire mais aucun champ ne s'inscrit dans ma Bd!!!

Ne faut-il rien modifier au niveau du formulaire dans le code :

<input name="user" type="text" id="user" size="30">

@+
Hors ligneAnthony Le 30/12/2005 à 15:26 Profil de Anthony Configuration de Anthony

Admin
Si tu veux respecter le XHTML c'est <input ... />

<input name="user" type="text" id="user" size="30" />

sinon rien à modifier non. Je ne vois pas d'où pourrait venir ton erreur, c'est le genre de problème bidon qu'on ne voit jamais et au bout d'une heure on trouve en disant "ah ouais, c'était ça ..."

a +
--

Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels