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

PHP & Base de données Discussion :

Double enregistrements en base avec mon formulaire


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut Double enregistrements en base avec mon formulaire
    Bonjour,
    Mon code ci-dessous fonctionne très bien, mais ma requête enregistre 2 fois mon utilisateur et j'ai beau chercher, je ne trouve pas mon erreur
    Une aide svp

    Code html : 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
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    <!DOCTYPE html>	
    <html>
     
    	<!-- Mise en couleur de fond -->
    		<body 
    			bgcolor='#34495e'> 
    		</body> 
       <div class="card-header">
    		<div style="float:left"><FONT color="#fffff" size="4"><strong>FICHE UTILISATEUR</strong></div>  <!-- Integre la mise en couleur des champs -->
    		<a href="user.php" style="float:right"><FONT size="4"><strong>✓   Retour</strong></a><br> 
        </div>
     
    <link rel="stylesheet" type="text/css" href="css/ficheuser.css" />
    <form action="UserFiche.php" method="post">
      <p><i>Complétez le formulaire. Les champs marqué par </i><em>*</em> sont <em>obligatoires</em></p>
     
     
      <fieldset>
        <legend>Contact</legend>
     
          <label for="name">Nom <em>*</em></label>
          <!-- placeholder: indication grisée 
          //required: il faut renseigner le champs sinon la validation est bloquée
          //autofocus: le curseur est positionné dans cette case au chargement de la page -->
          <input id="name" name="name" placeholder="Rynek" autofocus="" required="">
    	  <label for="prenom">Prénom</label>
          <input id="prenom" placeholder="Dominique" autofocus="" required=""><br>
          <label for="telephone">Portable</label>
          <!-- type="tel": bascule le clavier sur un smartphone
          // pattern: expression régulière à vérifier pour pouvoir valider -->
          <input id="telephone" type="tel" placeholder="06xxxxxxxx" pattern="06[0-9]{8}">
          <label for="email">Email</label>
          <input id="email" type="email" name="email" placeholder="prenom.nom@gmail.com" required="" pattern="[a-zA-Z]*.[a-zA-Z]*@gmail.com"><br>
    	  <label for="adresse">Adresse</label>
          <input id="adresse" placeholder="Rue de Paris" autofocus="" required="">
    	  <label for="zip">Code postal</label>
          <input id="zip" placeholder="92100" autofocus="" required=""><br>
    	  <label for="ville">Ville</label>
          <input id="ville" placeholder="Paris" autofocus="" required="">
    	  <label for="pays">Pays</label>
          <input id="paus" placeholder="France" autofocus="" required=""><br>
     
      </fieldset>
      <fieldset>
        <legend>Niveau d'accréditation</legend>
          <label for="niveau">Date de création</label>
          <!--type="number": bascule le clavier sur un smartphone-->
    	  <input type="Date" id="Cday" name="Cday"><br>
         <!-- <input id="niveau" type="number" placeholder="xx" pattern="[0-9]{2}" required=""><br>-->
          <label for="niveau">Niveau</label>
          <select id="niveau">
            <option value="1" name="L1">Consulation</option>
            <option value="2" name="L2">Modification</option>
    		<option value="3" name="L3">Suppression</option>
    		<option value="4" name="L4">Administrateur</option>
          </select><br>
          <label for="comments">Information complémentaire</label>
          <textarea id="comments"></textarea><br>
    	  <label for="niveau">Date de modification</label>
          <!--type="number": bascule le clavier sur un smartphone-->
    	  <input type="Date" id="Uday" name="Uday">
      </fieldset>
     
    	<div>
    	<input type="submit" value="Enregistrer"/>
     
    	<!--input type="submit" name="modifier" value="Modifier"/>
    	 <!-- <a><input type="submit" value="Remove"></a>-->
      </div>
     
    </form>
      <body>
     
    <?php
      //connection au serveur
      $cnx = mysql_connect( "localhost", "root", "mdp" ) ;
      //sélection de la base de données:
      $db  = mysql_select_db( "BDD" ) ;
     
      //récupération des valeurs des champs:
      //name:
      $name     = $_POST["name"] ;
      //email:
      $email = $_POST["email"] ; 
     
      //création de la requête SQL:
      $sql = "INSERT  INTO people (name,email) VALUES ( '$name', '$email') " ;
      //exécution de la requête SQL:
      $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
     
    ?>
    	</body>	
    </html>
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  2. #2
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Points : 3 965
    Points
    3 965
    Par défaut
    Hormis le fait que je ne vois pas de JavaScript dans ton code, tu n'aurais pas un bon potentiel d'injection SQL avec ce code ?
    Émotion
    Infantilisation
    Culpabilisation

    Christophe Alévèque - 18 Mars 2021

  3. #3
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Bonjour

    Merci beaucoup pour votre réponse, débutant en php, c'est la première fois que je suis confronté à cette remarque, est-ce la cause d'un double enregistrement ?
    Néanmoins, j'ai tenu de votre remarque et lu un article qui m'a permis d'ajouter une protéction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_real_escape_string()
    Je vous en remercie
    Bien à vous
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  4. #4
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Points : 3 965
    Points
    3 965
    Par défaut
    Échapper le contenu reçu ne fera pas grand chose pour ton salut et la sécurité de ton appli
    Par ailleurs la fonction que tu utilises pour échapper : http://php.net/manual/fr/function.my...ape-string.php est obsolète

    Il te faut absolument des requêtes préparées et paramétrées.

    Je n'y connais rien du tout en PHP à vrai dire mais je sais lire du code.
    Regarde cette page : https://www.owasp.org/index.php/SQL_...on_Cheat_Sheet
    Puisque tu débutes, autant adopter tout de suite les bonnes pratiques

    Pour le double post, je ne sais pas, ça ne m'a pas sauté aux yeux en lisant ton code, c'est plutôt l'injection qui m'a saisi
    Émotion
    Infantilisation
    Culpabilisation

    Christophe Alévèque - 18 Mars 2021

  5. #5
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Merci beaucoup.
    Je vais travailler selon tes conseils, et pour la requête, j'espère recevoir de l'aide car je ne vois pas mon erreur
    Encore merci
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  6. #6
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Bonjour

    Je crois avoir compris et modifié ma requête en fonction de vos remarques et penses avoir trouvé la solution quant à l'injection sql
    Par contre, je ne comprends toujours pas pourquoi ma requête enregistre avant que je clic sur "enregistrer", de fait quant je clic à nouveau, j'ai un deuxième enregistrement

    Help Please

    Code html : 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
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    <!DOCTYPE html>	
    <html>
     
    	<!-- Mise en couleur de fond -->
    		<body 
    			bgcolor='#34495e'> 
    		</body> 
       <div class="card-header">
    		<div style="float:left"><FONT color="#fffff" size="4"><strong>FICHE UTILISATEUR</strong></div>  <!-- Integre la mise en couleur des champs -->
    		<a href="user.php" style="float:right"><FONT size="4"><strong>✓   Retour</strong></a><br> 
        </div>
     
    <link rel="stylesheet" type="text/css" href="css/ficheuser.css" />
    <form action="UserFiche.php" method="post">
      <p><i>Complétez le formulaire. Les champs marqué par </i><em>*</em> sont <em>obligatoires</em></p>
     
     
      <fieldset>
        <legend>Contact</legend>
     
          <label for="name">Nom <em>*</em></label>
          <input id="name" name="name" placeholder="Rynek" autofocus="" required="">
    	  <label for="prenom">Prénom</label>
          <input id="prenom" placeholder="Dominique" autofocus="" required=""><br>
          <label for="telephone">Portable</label>
          <!-- type="tel": bascule le clavier sur un smartphone
          // pattern: expression régulière à vérifier pour pouvoir valider -->
          <input id="telephone" type="tel" placeholder="06xxxxxxxx" pattern="06[0-9]{8}">
          <label for="email">Email</label>
          <input id="email" type="email" name="email" placeholder="prenom.nom@gmail.com" required="" pattern="[a-zA-Z]*.[a-zA-Z]*@gmail.com"><br>
    	  <label for="adresse">Adresse</label>
          <input id="adresse" placeholder="Rue de Paris" autofocus="" required="">
    	  <label for="zip">Code postal</label>
          <input id="zip" placeholder="92100" autofocus="" required=""><br>
    	  <label for="ville">Ville</label>
          <input id="ville" placeholder="Paris" autofocus="" required="">
    	  <label for="pays">Pays</label>
          <input id="paus" placeholder="France" autofocus="" required=""><br>
     
      </fieldset>
      <fieldset>
        <legend>Niveau d'accréditation</legend>
          <label for="niveau">Date de création</label>
    	  <input type="Date" id="Cday" name="Cday"><br>
          <label for="niveau">Niveau</label>
          <select id="niveau">
            <option value="1" name="L1">Consulation</option>
            <option value="2" name="L2">Modification</option>
    		<option value="3" name="L3">Suppression</option>
    		<option value="4" name="L4">Administrateur</option>
          </select><br>
          <label for="comments">Information complémentaire</label>
          <textarea id="comments"></textarea><br>
    	  <label for="niveau">Date de modification</label>
    	  <input type="Date" id="Uday" name="Uday">
      </fieldset>
     
    	<div>
    	<input type="submit" value="Enregistrer"/>
     
    	<!--input type="submit" name="modifier" value="Modifier"/>
    	 <!-- <a><input type="submit" value="Remove"></a>-->
      </div>
     
    </form>
      <body>
     
    <?php
    $link = mysqli_connect("localhost", "root", "root", "simag_prod");
     
    /* Vérification de la connexion */
    if (mysqli_connect_errno()) {
        printf("Échec de la connexion : %s\n", mysqli_connect_error());
        exit();
    }
     
    $name = $_POST["name"] ;
    $email =$_POST["email"] ;
    $name = mysqli_real_escape_string($link, $name);
    $email = mysqli_real_escape_string($link, $email);
     
    /* Cette requête, par contre, réussira car nous avons échappé $city */
    if (mysqli_query($link, "INSERT into people (Name,email) VALUES ('$name','$email')")) {
        printf("%d ligne insérée OK.\n", mysqli_affected_rows($link));
    }
     
    mysqli_close($link);
    ?>
    	</body>	
    </html>
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    A mon avis ton formulaire conserve les données et vu que le code d'enregistrement est sur la même page que le form ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Bonjour

    Je pense en effet avoir trouvé, mais je bute sur un dernier souci quant à la déclaration de mes paramètres

    Code php : 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
    	<?php
    	if(!empty($_POST['Envoyer'])) // Si le formulaire est envoyé.          
    	{  
    	$link = mysqli_connect("localhost", "root", "root", "simag_prod");
     
    /* Vérification de la connexion */
    if (mysqli_connect_errno()) {
        printf("Échec de la connexion : %s\n", mysqli_connect_error());
        exit();
    }
    $name = $_POST["name"] ;
    $email =$_POST["email"] ;
    $name = mysqli_real_escape_string($link, $name);
    $email = mysqli_real_escape_string($link, $email);
     
    /* Cette requête, par contre, réussira car nous avons échappé $city */
    if (mysqli_query($link, "INSERT into people (Name,email) VALUES ('$name','$email')")) {
        printf("%d ligne insérée OK.\n", mysqli_affected_rows($link));
    }
     
    mysqli_close($link);
    	}
    	?>

    Je ne comprends pas le message

    ( ! ) Notice: Undefined index: name in C:\wamp\www\SimagProduction\Production\UserFiche.php on line 68
    Call Stack
    # Time Memory Function Location
    1 0.0015 253424 {main}( ) ...\UserFiche.php:0

    ( ! ) Notice: Undefined index: email in C:\wamp\www\SimagProduction\Production\UserFiche.php on line 69
    Call Stack
    # Time Memory Function Location
    1 0.0015 253424 {main}( ) ...\UserFiche.php:0
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 658
    Points
    66 658
    Billets dans le blog
    1
    Par défaut
    il faut "protéger" tes variable pour le premier chargement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( isset ($_POST['name'] ) {
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Bonjour

    Merci beaucoup, de ce côté là, je modifie

    Sur cette partie de code, je dois avoir un souci avec mes variables car j'ai une erreur sur les ligne en rouge
    Les champs ne s'enregistrent pas

    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
    	<?php
    		if(!empty($_POST['Envoyer'])) // Si le formulaire est envoyé.          
    		{  
    		$link = mysqli_connect("localhost", "root", "root", "simag_prod");
    
    		/* Vérification de la connexion */
    		if (mysqli_connect_errno()) {
    		printf("Échec de la connexion : %s\n", mysqli_connect_error());
    		exit();
    		}
    		
    		$name = $_POST["name"];
    		$email =$_POST["email"];
    		$name = mysqli_real_escape_string($link, $name);
    		$email = mysqli_real_escape_string($link, $email);
    		
    		/* Cette requête, par contre, réussira car nous avons échappé $city */
    		if (mysqli_query($link, "INSERT into people (Name,email) VALUES ('".$name."','".$email."')")) {
    		printf("%d ligne insérée OK.\n", mysqli_affected_rows($link));
    		}
    		mysqli_close($link);
    		}
    	?>
    Bien à vous
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  11. #11
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Il y a de droles de choses dans le code html que tu as posté dans tes premiers messages : je vois deux fois <body> et </body> dont un couple vide au début : <body bgcolor='#34495e'> </body> Si ton HTML est bancal, ton navigateur va essayer de compenser, et il peut se passer de drôles de choses. J'ai récemment lu l'anecdote d'un code qui chargeait deux fois une page à cause d'un attribut mal formé et qui donc incrémentait deux fois un compteur. Si ça se trouve, tu as le même genre de problème.

    Donc : D'abord tout le PHP qui n'impacte pas l'affichage à l'extérieur du HTML, avant le Doctype. Ensuite, le HTML qui s'affiche à l'intérieur des balises <body>, et on utilise que du HTML5 valide. L'attribut bgcolor par exemple est tellement obsolète que je ne suis pas sûre qu'il soit valide en HTML5. Donc soit on vire carrément l'attribut et on gère dans la feuille de style CSS, soit on utilise un attribut style : <body style="background-color:#34495e">.
    Et si tu as un message à afficher en provenance du PHP, tu le stockes dans une variable et tu fais un echo au bon endroit.

    @SpaceFfrog, @fredoche : c'est le monde à l'envers : vous, habitants du forum Web, donnez des conseils PHP, et quand le post arrive sur le forum PHP, moi je donne des conseils HTML
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  12. #12
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Bonjour

    J'ai modifié en effet cette partie (c-dessous 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
    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
    79
    80
    81
    82
    83
    84
    <!DOCTYPE html>	
    <html>
     
    	<!-- Mise en couleur de fond -->
    		<body bgcolor='#34495e'> 
     
       <div class="card-header">
    		<div style="float:left"><FONT color="#fffff" size="4"><strong>FICHE UTILISATEUR</strong></div>  <!-- Integre la mise en couleur des champs -->
    		<a href="user.php" style="float:right"><FONT size="4"><strong>✓   Retour</strong></a><br> 
        </div>
     
    <link rel="stylesheet" type="text/css" href="css/ficheuser.css" />
     
      <p><i>Complétez le formulaire. Les champs marqué par </i><em>*</em> sont <em>obligatoires</em></p>
     
     
      <fieldset>
        <legend>Contact</legend>
     
          <label for="name">Nom <em>*</em></label>
          <input id="name" name="name" placeholder="" autofocus="" required="">
    	  <label for="prenom">Prénom</label>
          <input id="prenom" placeholder="" autofocus="" required=""><br>
          <label for="telephone">Portable</label>
          <!-- type="tel": bascule le clavier sur un smartphone
          // pattern: expression régulière à vérifier pour pouvoir valider -->
          <input id="telephone" type="tel" placeholder="06xxxxxxxx" pattern="06[0-9]{8}">
          <label for="email">Email</label>
          <input id="email" type="email" name="email" placeholder="" required="" pattern="[a-zA-Z]*.[a-zA-Z]*@gmail.com"><br>
    	  <label for="adresse">Adresse</label>
          <input id="adresse" placeholder="Rue de Paris" autofocus="" required="">
    	  <label for="zip">Code postal</label>
          <input id="zip" placeholder="92100" autofocus="" required=""><br>
    	  <label for="ville">Ville</label>
          <input id="ville" placeholder="Paris" autofocus="" required="">
    	  <label for="pays">Pays</label>
          <input id="paus" placeholder="France" autofocus="" required=""><br>
     
      </fieldset>
      <fieldset>
        <legend>Niveau d'accréditation</legend>
          <label for="niveau">Date de création</label>
    	  <input type="Date" id="Cday" name="Cday"><br>
          <label for="niveau">Niveau</label>
          <select id="niveau">
            <option value="1" name="L1">Consulation</option>
            <option value="2" name="L2">Modification</option>
    		<option value="3" name="L3">Suppression</option>
    		<option value="4" name="L4">Administrateur</option>
          </select><br>
          <label for="comments">Information complémentaire</label>
          <textarea id="comments"></textarea><br>
    	  <label for="niveau">Date de modification</label>
    	  <input type="Date" id="Uday" name="Uday">
      </fieldset>
    	<?php
    		if(!empty($_POST['Envoyer'])) // Si le formulaire est envoyé.          
    		{  
    		$link = mysqli_connect("localhost", "root", "root", "simag_prod");
     
    		/* Vérification de la connexion */
    		if (mysqli_connect_errno()) {
    		printf("Échec de la connexion : %s\n", mysqli_connect_error());
    		exit();
    		}
     
    		$name = $_POST["name"];
    		$email =$_POST["email"];
    		$name = mysqli_real_escape_string($link, $name);
    		$email = mysqli_real_escape_string($link, $email);
     
    		/* Cette requête, par contre, réussira car nous avons échappé $city */
    		if (mysqli_query($link, "INSERT into people (Name,email) VALUES ('".$name."','".$email."')")) {
    		printf("%d ligne insérée OK.\n", mysqli_affected_rows($link));
    		}
    		mysqli_close($link);
    		}
    	?>
    	<form method="post" action="">               
     
    	<input type="submit" name="Envoyer" value="Envoyer" />
    	</form>  
     
    </html>
    Merci beaucoup pour votre aide
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  13. #13
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    C'est mieux :cccool: mais c'est pas tout à fait parfait. Il te reste :
    bgcolor : obsolète, à remplacer par un style css
    <FONT> : obsolète à remplacer par un style css
    un <link> dans le body : devrait être dans le head. Ce serait une bonne idée d'avoir également un <title> et un <meta charset="utf-8">

    Et si tu veux que ton bouton submit envoie effectivement des choses, il faudrait qu'il soit dans le même bloc <form> que les champs

    Affiches le source de ta page dans ton navigateur et colle-là dans un validateur HTML : https://validator.w3.org/nu/#textarea

    Et pour ton problème de double enregistrement, tu peux essayer de découper ton traitement en deux script : le formulaire html dans un fichier et le script php de traitement dans un autre fichier (et tu diriges l'action du formulaire vers le 2e script). Si tu n'as plus le problème de doublons, c'est vraiment que c'est ta page html qui a un problème.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  14. #14
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Avant d'apprendre le PHP, il faut maîtriser le HTML.

    Ton code HTML est ENCORE structurellement invalide.

  15. #15
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Celira bonsoir

    Vous êtes top, merci pour vos conseils que je vais suivre de ce pas, je reviendrais vous faire un compte rendu des actions
    Bien à vous
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  16. #16
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Bonjour

    Grace à vous, ma page HTML n'a plus d'erreur, mais j'enregistre toujours que l'ID et pas les champs, ce qui implique que cela vienne des variables je pense
    Comme vous e l'avez conseillé, j'ai mis la requête dans un autre fichier

    Voici la partie qui ne fonctionne pas:

    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
    		<?php
    		if(!empty($_POST['Envoyer'])) // Si le formulaire est envoyé.          
    		{  
    		$link = mysqli_connect("localhost", "root", "root", "simag_prod");
     
    		/* Vérification de la connexion */
    		if (mysqli_connect_errno()) {
    		printf("Échec de la connexion : %s\n", mysqli_connect_error());
    		exit();
    		}
     
    		$name = $_POST["nom"];
    		$email =$_POST["mail"];
    		$name = mysqli_real_escape_string($link, $name);
    		$email = mysqli_real_escape_string($link, $email);
    				   if (empty($_POST["nom"]&& $_POST["mail"]))  // !$resultat
                    {
                        echo 'problème de champs !';
                    }
                    else
                    {
     
    		/* Cette requête, par contre, réussira car nous avons échappé $city */
    		if (mysqli_query($link, "INSERT into people (name,email) VALUES ('".$name."','".$email."')")) {
    		printf("%d ligne insérée OK.\n", mysqli_affected_rows($link));
    		}
    				}
    		mysqli_close($link);
    		}	
    	?>
    Message:

    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
    ( ! ) Notice: Undefined index: nom in C:\wamp\www\SimagProduction\Production\UserReq.php on line 12
    Call Stack
    #	Time	Memory	Function	Location
    1	0.0014	246928	{main}( )	...\UserFiche.php:0
    2	0.0025	255744	require( 'C:\wamp\www\SimagProduction\Production\UserReq.php' )	...\UserFiche.php:60
     
    ( ! ) Notice: Undefined index: mail in C:\wamp\www\SimagProduction\Production\UserReq.php on line 13
    Call Stack
    #	Time	Memory	Function	Location
    1	0.0014	246928	{main}( )	...\UserFiche.php:0
    2	0.0025	255744	require( 'C:\wamp\www\SimagProduction\Production\UserReq.php' )	...\UserFiche.php:60
     
    ( ! ) Notice: Undefined index: nom in C:\wamp\www\SimagProduction\Production\UserReq.php on line 16
    Call Stack
    #	Time	Memory	Function	Location
    1	0.0014	246928	{main}( )	...\UserFiche.php:0
    2	0.0025	255744	require( 'C:\wamp\www\SimagProduction\Production\UserReq.php' )	...\UserFiche.php:6
    Et là je coince....
    Bien à vous
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  17. #17
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    si je me réfère à ton précédent code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	<form method="post" action="">               
     
    	<input type="submit" name="Envoyer" value="Envoyer" />
    	</form>
    Tous les autre <input> sont AVANT * la balise <form>....

    Je t'invite à LIRE ATTENTIVEMENT et IMPÉRATIVEMENT ce tuto :



    * J'explique : comme ils ne sont pas ENTRE les balises <form> et </form>, ils ne sont pas pris en compte... forcément.

  18. #18
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Cher ami bonjour

    Avant tout, je vous dois des excuses et des remerciements, ensuite je reconnais volontiers avoir été trop vite et ne pas avoir lu les bons articles
    J'ai compris et ai modifié en effet, cela fonctionne parfaitement
    Et force de constater que le respect de l’architecture et le contrôle via le site https://html5.validator.nu m'a beaucoup aidé à éliminer les cause, ajouter à cela vos conseils, cela à donner le résultat

    Mille merci et excellente journée
    Bien à vous
    Je clôture mon post
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  19. #19
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu peux éventuellement ajouter une extension dans ton navigateur pour éviter de devoir passer par un site annexe à chaque fois. Par exemple : Html Validator - Firefox Extensions et HTML Validator - Chrome Web Store

    La programmation c'est comme la cuisine : mieux vaut travailler proprement si tu veux éviter l'intoxication et mieux vaut commencer par petit simple : on ne se lance pas dans un menu en 5 plats pour 30 personnes tout de suite
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

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

Discussions similaires

  1. prob avec mon formulaire d'envoi de mail
    Par zorba49 dans le forum ASP
    Réponses: 12
    Dernier message: 06/02/2007, 11h52
  2. [PHP-JS] probleme avec mon formulaire contact
    Par gtraxx dans le forum Langage
    Réponses: 27
    Dernier message: 03/10/2006, 00h41
  3. php : probleme avec mon formulaire
    Par rane dans le forum Langage
    Réponses: 39
    Dernier message: 29/06/2006, 20h13
  4. Réponses: 3
    Dernier message: 21/06/2006, 19h48
  5. Réponses: 6
    Dernier message: 06/06/2006, 11h46

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