IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème de codes


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 54
    Par défaut Problème de codes
    Bonjour à tous
    Alors le problème s'exécute dans une insertion de donné. Oui je sais, c'est un problème de sql alors mais je pense que cela vient d'une variable php. Bref... en créant un formulaire je rentre des données tels que $Pseudo ou bien $Mdp ect... Et j'envoie le formulaire sur la page de connexion avec le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?php $cnx = mysql_connect( "localhost", "root", "" ) ;
               $db  = mysql_select_db( "lifenet" ) ;
      $Pseudo  = $_POST["Pseudo"] ;
      $mail    = $_POST["mail"] ;
      $Mdp     = $_POST["password"] ;
      $Nom     = $_POST["Nom"] ;
      $Prénom  = $_POST["prénom"] ;
      $Sexe    = $_POST["Sexe"] ;
      $Adresse = $_POST["adresse"] ;
      $Numtel  = $_POST["numtel"] ;
      $Ddn     = $_POST["naissance"] ;
     
            $sql = "INSERT  INTO session (Pseudo, mail, Mdp, Nom, Prénom, Sexe, Adresse, Numtel, Ddn)
                    VALUES ( '$Pseudo', '$mail', '$Mdp', '$Nom', '$Prénom', '$Sexe', '$Adresse', '$Numtel', '$Ddn') " ;
     
      $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
     
      if($requete){echo("L'insertion a été correctement effectuée") ;}
      else{echo("L'insertion à échouée") ;}
    ?>
    Je décide donc de faire un test de mon formulaire et inscrit mes coordonnées dedans, j'appuie sur valider et sur la page de connexion : Notice: Undefined index: Pseudo in C:\wamp\www\Lifenet\Connexion.php on line 3

    Notice: Undefined index: mail in C:\wamp\www\Lifenet\Connexion.php on line 4

    Notice: Undefined index: password in C:\wamp\www\Lifenet\Connexion.php on line 5

    Notice: Undefined index: Nom in C:\wamp\www\Lifenet\Connexion.php on line 6

    Notice: Undefined index: prénom in C:\wamp\www\Lifenet\Connexion.php on line 7

    Notice: Undefined index: Sexe in C:\wamp\www\Lifenet\Connexion.php on line 8

    Notice: Undefined index: adresse in C:\wamp\www\Lifenet\Connexion.php on line 9

    Notice: Undefined index: numtel in C:\wamp\www\Lifenet\Connexion.php on line 10

    Notice: Undefined index: naissance in C:\wamp\www\Lifenet\Connexion.php on line 11
    L'insertion a été correctement effectuée.

    Je regarde dans Mysql et aucune coordonnées est affiché. Mais il y a eu une insertion et de plus vide. Double problème, l'erreur que je viens de vous présenter et si une personne rentre elle rentrera des données sans même être passée par le formulaire.
    Merci à tous

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2011
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Philippines

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2011
    Messages : 89
    Par défaut
    Déja remplaces prénom par prenom dans tout le code, je ne crois pas que l'on puisse utiliser d'accents dans les noms de variables (idem dans la BDD je pense).

    Essaie ça pour la requête
    :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $sql = "INSERT  INTO `session` (`Pseudo`, `mail`, `Mdp`, `Nom`, `Prenom`, `Sexe`, `Adresse`, `Numtel`, `Ddn`)
                    VALUES ( '" . $Pseudo . "', '" . $mail . "', '" . $Mdp . "', '" . $Nom . "', '" . $Prenom . "', '" . $Sexe . "', '" . $Adresse . "', '" . $Numtel . "', '" . $Ddn . "')";

  3. #3
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bonsoir,

    il faudrait poster le code du formulaire.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 54
    Par défaut
    @MrPringle : Merci pour votre réponse mais cela ne change rien. Et les accents ne sont pas un problème pour le code, ils marchent tout autant ^^
    Aussi, je ne comprends pas pourquoi vous remettez des guillemets suivi de points. Bien que j'ai changé, cela reste toujours pareil pour le problème.

    @rawsrc : Veuillez m'excuser, je l'avais oublier ^^"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    <div id="page">
       <?php if(isset($_POST['envoi'])) { $prenom    = isset($_POST['prenom'])    ? trim($_POST['prenom'])    : "";
                                          $nom       = isset($_POST['nom'])       ? trim($_POST['nom'])       : "";
                                          $telephone = isset($_POST['telephone']) ? trim($_POST['telephone']) : "";
                                          $email     = isset($_POST['email'])     ? trim($_POST['email'])     : "";
    									  $adresse   = isset($_POST['adresse'])   ? trim($_POST['adresse'])   : "";
    									  $naissance = isset($_POST['naissance']) ? trim($_POST['naissance']) : "";
    									  $Pseudo    = isset($_POST['Pseudo'])    ? trim($_POST['Pseudo'])    : "";
    									  $password  = isset($_POST['password'])  ? trim($_POST['password'])  : "";
    									  $Confirm_mail      = isset($_POST['Confirm_mail'])      ? trim($_POST['Confirm_mail'])      : "";
    									  $confirm_password  = isset($_POST['confirm_password'])  ? trim($_POST['confirm_password'])  : "";
                                          $valid = "#^[^-_\.][a-z0-9-_\.]+[^-_\.]@[^-_\.][a-z0-9-_\.]+[^-_\.]\.[a-z]{2,4}$#";
    									  $phone = "#^\d{6,10}$#";
    									  $validay = "#^([0-9]){2}/([0-9]){2}/([1-2])([0-9]){3}$#";
    									 if ($prenom == '' || $nom == '' || $email == '' || $telephone == '' || !(preg_match($phone,$telephone)) || $email == '' || !(preg_match($valid, $email)) || $naissance == '' || !(preg_match($validay, $naissance)) || $Pseudo == '' || $password == '' || $Confirm_mail != $email || $password != $confirm_password)
                                            { ?>
     
     
     
    <center><form id="inscription" action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post">
     <fieldset>
       <legend>Coordonneés</legend>
    			Nom :                  <input type="text" name="nom" size="30" style="margin-left: 126px"                 placeholder="<?php if ($nom == ''){print " !! Vous n'avez pas précisé votre nom !! ";} else{?>"                value="<?php echo $nom;} ?>" /></br>
    			Prénom :               <input type="text" name="prenom" size="30" style="margin-left: 105px"              placeholder="<?php if ($prenom == '') { print " !! Vous n'avez pas précisé votre prénom !! ";} else{?>"        value="<?php echo $prenom;} ?>"/></br>
    			<label class="Sexe">Sexe : </label>
    			<select name="Sexe" style="margin-left: 123px"/><option value="Homme">Homme</option>
                                                                <option value="Femme">Femme</option>
    			</select></br>
    			Adresse :               <input type="text" name="adresse" size="30" style="margin-left: 102px"            placeholder="<?php if ($adresse == ''){print " !! Vous n'avez pas précisé votre adresse !! ";} else{?>"        value="<?php echo $adresse;}?>"/></br> 
    			Numéro mobile :         <input type="tel" name="telephone" size="30" style="margin-left: 60px"           placeholder="<?php if ( ($telephone == '') || (($telephone) && !(preg_match($phone,$telephone)))) {print " !! Votre numéro de téléphone est invalide !! ";} else{?>"  value="<?php echo $telephone;}?>"/> </br>
    			Date de naissance :     <input type="date" name="naissance" size="30"style="margin-left: 36px"            placeholder="<?php if ( ($naissance == '') || (($naissance) && !(preg_match($validay,$naissance)))) {print " !! Votre date de naissance est invalide !! " ;} else{?>"  value="<?php echo $naissance;}?>"/> </br>
    	</fieldset>
    	<fieldset>
    		<legend>Connexion</legend>
    			Identifiant :           <input type="text" name="Pseudo" size="30" style="margin-left: 92px"              placeholder="<?php if ($Pseudo == ''){print " !! Vous devez avoir obligatoirement un pseudo !! ";} else{?>"  value="<?php echo $Pseudo;}?>"/> </br>
    			Adresse mail :          <input type="email" name="email" size="30" style="margin-left: 76px;"              placeholder="<?php if (($email == '') || (($email) && !(preg_match($valid, $email)))) {print " !! Votre adresse électronique est invalide !! ";}  else{?>"  value="<?php echo $email;}?>"/> </br> 
    			Confirmer Adresse :     <input type="email" name="Confirm_mail" size="30" style="margin-left: 35px"        placeholder="<?php if ($Confirm_mail != $email){print " !! Les deux adresses ne correspondent pas !!";} else{?>"  value="<?php echo $Confirm_mail;}?>"/> </br>
    			Mot de passe :          <input type="password" name="password" size="30" style="margin-left: 68px"        placeholder="<?php if ($password == ''){print " !! Le mot de passe est obligatoire pour votre sécurité !!";} else{?>"  value="<?php echo $password;}?>"/> </br>
    			Confirmer mot de passe :<input type="password" name="confirm_password" size="30" style="margin-left: 6px" placeholder="<?php if ($password != $confirm_password) {echo "!! Les deux mots de passe ne correspondent pas !!";} else{?>"  value="<?php echo $confirm_password;}?>"/> </br>
         <div class="c3">
         <input id="button" type="submit" class="verif" name="envoi" value="Envoyer" />
         </div>
     </fieldset>
    </form></center>
     
    <?php } else {$chemin = "..." ;
                  header("Location: $chemin");} }
            else {
    ?>
    <center><form id="inscription" action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post">
     
      <fieldset>
     
            <legend>Coordonneés</legend>
    			Nom :                   <input type="text" name="nom" id="nom" size="30" style="margin-left: 126px"/></br> 
    			Prénom :                <input type="text" name="prenom" id="Prénom" size="30" style="margin-left: 105px"/></br> 
    			<label class="Sexe">Sexe : </label>
    			<select name="Sexe" id="Sexe"style="margin-left: 123px"/><option value="Homme">Homme</option>
                                                                         <option value="Femme">Femme</option>
    			</select></br>
    			Adresse :               <input type="text" name="adresse" id="Adresse" size="30" style="margin-left: 102px"/></br> 
    			Numéro mobile :         <input type="tel" name="telephone" id="Numtel" size="30" style="margin-left: 64px"/></br> 
    			Date de naissance :     <input type="date" name="naissance" id="Date de naissance" size="30" style="margin-left: 40px"/></br>
    	</fieldset>
    	<fieldset>
    		<legend>Connexion</legend>
    			Identifiant :           <input type="text" name="Pseudo" id="Pseudo" size="30" style="margin-left: 92px"/></br> 
    			Adresse mail :          <input type="email" name="email" id="email" size="30" style="margin-left: 72px"/></br> 
    			Confirmer Adresse :     <input type="email" name="Confirm mail" id="Confirm mail" size="30" style="margin-left: 35px"/></br>
    			Mot de passe :          <input type="password" name="password" id="password" size="30" style="margin-left: 72px"/></br> 
    			Confirmer mot de passe :<input type="password" name="confirm password" id="confirm password" size="30" style="margin-left: 6px"/></br>
    	 <div class="c3">
          <input id="button" type="submit" class="verif" name="envoi" value="Envoyer" />
         </div>
     
      </fieldset>
    </form></center> <?php } ?>
       </div>
    Très long je me doute :$ Mais je pense que le problème réside dans la page cible (connexion.php)

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2011
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Philippines

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2011
    Messages : 89
    Par défaut
    En fait tu dois inclure $chemin (quel qu'il soit) plutôt que de rediriger sinon tu perds tes variables.

    PS. Si les deux formulaires sont identiques, tu devrais les mettre dans une fonction que tu peux appeler à plusieurs endroits de la page, ça rendrait la maintenance plus aisée.

    PS2. Concernant les accents, ça fonctionne peut-être mais je ne vois pas trop l'intérêt de les utiliser dans des noms de variables.

  6. #6
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Ou bien une autre alternative tu travailles avec le tableau de session.
    Tu stockes le retour POST en session et tu rediriges.
    Cela impliqueras que ton script final travaillera avec $_SESSION et non plus $_POST.

  7. #7
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 54
    Par défaut
    Citation Envoyé par MrPringle Voir le message
    En fait tu dois inclure $chemin (quel qu'il soit) plutôt que de rediriger sinon tu perds tes variables.
    Que veux-tu dire par inclure ?? Il faut d'abord que la page vérifie les champs pour l'envoyer, c'est l'unique moyen que j'ai trouvé...

    Citation Envoyé par MrPringle Voir le message
    PS2. Concernant les accents, ça fonctionne peut-être mais je ne vois pas trop l'intérêt de les utiliser dans des noms de variables.
    Je suis français ^^ c'est normal. Je ne pense pas que cela gênera le code (si je les mets à chaque fois)

    Citation Envoyé par transgohan
    Ou bien une autre alternative tu travailles avec le tableau de session.
    Tu stockes le retour POST en session et tu rediriges.
    Cela impliqueras que ton script final travaillera avec $_SESSION et non plus $_POST.
    En gros, rafraîchir la page avec une variable qui enregistrera les champs et ensuite je redirige !? Ta solution est intéressante (si c bien ça x) je vais tenter ^^

  8. #8
    Membre émérite Avatar de Atomya Rise
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Février 2009
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 443
    Par défaut
    Il faut bien vérifier aussi la casse de tes $_POST, car les variables que tu déclares ne sont pas forcément les mêmes que les "name" dans ton formulaire !

    Exemple : tu as écris ceci dans le premier code que tu as fournis :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $Numtel  = $_POST["numtel"] ;

    alors que dans ton formulaire, le name du numéro de téléphone est : telephone

    Je pense que tu confonds les "name" avec les "id"...

    Dans ton deuxième code, tu as bien modifié, mais par contre, tu as oublié de déclarer la variable "sexe"

    De plus : Les input de type "tel", "date"... n'existe pas ! Je te conseille de revoir les widgets html pour mieux comprendre tout ceci
    Un petit tour de ce côté : http://giminik.developpez.com/xhtml/input.html

  9. #9
    Membre émérite Avatar de Atomya Rise
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Février 2009
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 443
    Par défaut
    Citation Envoyé par ade-9774 Voir le message
    Je suis français ^^ c'est normal. Je ne pense pas que cela gênera le code (si je les mets à chaque fois)
    L'utilisation des accents ne gênes pas en effet, mais c'est très risquait de les utiliser aussi bien dans les $_POST ainsi que sur les champs en bdd !

    Exemple, si tu mets des accents ou espaces sur les champs en bdd, il te faudra écrire tes champs dans tes requêtes comme ceci : `le champ` (avec les backquotes)

    De plus, ce n'est pas portable, certaines base de données l'accepterons, mais pas toutes !

    Pour les $_POST, idem, problème de portabilité, et je pense même que c'est considéré comme une mauvaise pratique.

    Libre à toi de faire ce que tu souhaites, mais quand on développe quelque chose, il faut regarder dans l'avenir, et non, le moment présent. Non seulement pour la portabilité, mais aussi pour les personnes qui pourront reprendre ton code ou bien d'autre chose aussi...

    C'est juste un conseil

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème de code avec un tableau
    Par richard038 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/05/2006, 18h35
  2. problème de code javascript pour une vue 360°
    Par tomguiss dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/03/2006, 23h50
  3. [POO] Problème de code PHP avec Internet Explorer
    Par bzoler dans le forum Langage
    Réponses: 5
    Dernier message: 12/02/2006, 12h00
  4. Problème de code besoin d un petit depannage
    Par rakengoule dans le forum MFC
    Réponses: 3
    Dernier message: 10/10/2005, 17h25
  5. Probléme de code non portable
    Par Stany dans le forum Windows
    Réponses: 2
    Dernier message: 23/08/2005, 12h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo