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 :

Formulaire dans fenetre modale - Injection MySQL


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Octobre 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2016
    Messages : 14
    Par défaut Formulaire dans fenetre modale - Injection MySQL
    Bonjour à tous,

    Sur une page de mon site, j'affiche un suivi pour l'utilisateur via lequel il peut ajouter une valeur (POI) si celle-ci n'est pas déjà présente.
    Cet ajout se fait via une fenêtre modale de la même page.
    L'affichage de la modale se passe bien et l'insertion dans la BDD également, mais le problème se trouve plutôt ou niveau de la référence de la ligne (num_etude).

    En effet j'affiche en mode Readonly la valeur de la ligne sélectionné dans mon formulaire et je laisse l'utilisateur saisir la valeur (POI).
    A l'affichage la référence de la ligne correspond toujours à la 1ère ligne de la page par contre dans le code généré je retrouve la bonne valeur.
    => Seulement lors de l'ajout dans la bdd, il prend la valeur affiché et donc la mauvaise.

    Fichier principale
    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
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
     <!-- Affichage des etudes en cours -->
     <?php
     
      	for ($nbligne=1;$nbligne <=7; $nbligne++)
    	{
    			if ($nbligne == 1) { $resultat = $req_simple; $title = "Etude Simple";} 
    	...
            ...
            ...
     
    		$nb = $resultat->rowcount();
    		if ($nb !=0)	
    		{
    				?>
    				<fieldset>
    				<legend> <?php echo $title ?> </legend>
     
    				<table>
    					<tr>
    						.....
    					</tr>
    					<?php
     
    						while ($donnees = $resultat ->fetch())
    						{
    						?>
    							<tr>
    								<td class="small1"><?php echo $donnees['num_etude'];?> </td>
    								<td class="small"><?php echo $donnees['type_etude'];?> </td>
    								<td><?php echo $donnees['nom_client'];?> </td>
    								<td><?php echo $donnees['ville_client'];?> </td>							
    								<td class="small"><?php echo $donnees['zone_etude'];?> </td>	  
    								<td><?php echo $donnees['demand_client'];?> </td>	
    								<?php 
    								$date1 = new DateTime($donnees['arriv_etude']);
    								$date2 = new Datetime(Date('Y-m-d'));
    								$diff = $date1->diff($date2); 
    								if (($diff->days) >= 14)
    								{
    									?>
    									<td class="medium_red"><?php echo date('d-m-Y', strtotime($donnees['arriv_etude']));?> </td>
    									<?php 
    								} 
    								else 
    									{ ?>
    									<td class="small"><?php echo date('d-m-Y', strtotime($donnees['arriv_etude']));?> </td>
    									<?php 
    								} 
    								if ($donnees['ui_etude'] == "")
    								{
    									?> <td class="medium_gray">
    											<div>
    												<label class="button" for="modalCheck">Ajout</label><input type="checkbox" id="modalCheck" />
    												<div class="modalLayer">
    												<div class="popup_block">
    												<label for="modalCheck">
    													<img alt="Fermer" title="Fermer la fenêtre" class="btn_close" src="./modal/close_pop.png"></a>
    												<form method="post" action="pilotage.php">
    												<Fieldset>
    													<legend> Ajout POI </legend>
    													<label for="num_etude"> Reference etude </label/>
    													<input type="text" name="num_etude" option value="<?php echo $donnees['num_etude'];?>" readonly />
    													<br />
    													<label for="num_poi"> N° POI</label>
    													<input type="text" name="num_poi" autoFocus /> <br/>
    													<input type="submit" name="valid" value="valider" />
    												</fieldset>
    												<form>
    												</div>
    												</div>
    											</div>
    										</td> <?php
    								}
    								else 
    								{
    									?> <td class="medium"><?php echo $donnees['ui_etude'];?> </td>
    									<?php 
    								} ?>
    								<td class="small"> <form method="post" action="pilotage.php" style="margin-bottom: 0">
    											<input type="hidden" name="lien_hidden" value="<?php echo $donnees['num_etude'];?>" />
    											<input type="submit" name="valid_etude" value="valider"/>
    									</form>	
    								</td>
    								<td class="large"><?php echo $donnees['num_etude'] ?> </td>
    							</tr>
    						<?php
    						}
    						?>		
    				</table>
    			   </fieldset>
    			   <br />
    	<?php }	
    	}
    	?>
    </body>
    </html>
    Code CSS
    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
    #modalCheck{
    			display: none;
    		}
    		.modalLayer{
    			display: none;
    			position: fixed;
    			top: 0;
    			bottom: 0;
    			left: 0;
    			right: 0;
    			background-color: rgba(0, 0, 0, 0.5);
    		}
    		#modalCheck:checked + .modalLayer, #modalContent:target{
    			display: block;
    		}
    		.popup_block{
    			background: #fff;
    			padding: 20px;
    			border: 20px solid #ddd;
    			position: relative;
    			margin: 10% auto;
    			width: 40%;
    			box-shadow: 0px 0px 20px #000;
    			border-radius: 10px;
    		}
    		img.btn_close {
    			float: right;
    			margin: -55px -55px 0 0;
    			cursor: pointer;
    		}
    		.button{
    			cursor: pointer;
    			color: blue;
    			text-decoration: underline;
    		}
    		.checkbox:checked{
               box-shadow: 0 0 10px 2px gold;
    		   }
    Exemple code généré :
    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
    <div>
    <label class="button" for="modalCheck">Ajout</label>
    <input id="modalCheck" type="checkbox">
    <div class="modalLayer">
    <div class="popup_block">
    <label for="modalCheck">
    <img class="btn_close" src="./modal/close_pop.png" title="Fermer la fenêtre" alt="Fermer">
    <form action="pilotage.php" method="post">
    <fieldset>
    <legend> Ajout POI </legend>
    <label for="num_etude"> Reference etude </label>
    <input type="text" readonly="" value="124597" option="" name="num_etude">
    <br>
    <label for="num_poi"> N° POI</label>
    <input type="text" autofocus="" name="num_poi">
    <br>
    <input type="submit" value="valider" name="valid">
    </fieldset>
    </form>
    </label>
    </div>
    </div>
    </div>
    Dans l'exemple, le code généré est bon, mais à l'affichage il m'affiche la 1ère ligne de ma page
    Par contre j'ai essayé, en laissant l'utilisateur saisir et la ça fonctionne.

    Merci d'avance pour votre aide

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 651
    Par défaut
    quel est le code qui affiche la fenêtre modale ?

    il y a peut-être un soucis avec id="modalCheck", puisque cela est dans une boucle, il faudrait que cette valeur change à chaque ligne pour que ça chaque "id" soit unique sur la page

  3. #3
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Octobre 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2016
    Messages : 14
    Par défaut
    Le code de la modale :
    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
     
    <div>
    <label class="button" for="modalCheck">Ajout</label><input type="checkbox" id="modalCheck" />
     <div class="modalLayer">
     <div class="popup_block">
     <label for="modalCheck">
    	<img alt="Fermer" title="Fermer la fenêtre" class="btn_close" src="./modal/close_pop.png"></a>
    	<form method="post" action="pilotage.php">
    	  <Fieldset>
    		<legend> Ajout POI </legend>
    		<label for="num_etude"> Reference etude </label/>
    		<input type="text" name="num_etude" option value="<?php echo $donnees['num_etude'];?>" readonly />
    		<br />
    		<label for="num_poi"> N° POI</label>
    		<input type="text" name="num_poi" autoFocus /> <br/>
    		<input type="submit" name="valid" value="valider" />
    	 </fieldset>
    	<form>
       </div>
     </div>
    </div>
    et le code CSS
    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
     
    #modalCheck{
    	display: none;
    		}
    		.modalLayer{
    			display: none;
    			position: fixed;
    			top: 0;
    			bottom: 0;
    			left: 0;
    			right: 0;
    			background-color: rgba(0, 0, 0, 0.5);
    		}
    		#modalCheck:checked + .modalLayer, #modalContent:target{
    			display: block;
    		}
    		.popup_block{
    			background: #fff;
    			padding: 20px;
    			border: 20px solid #ddd;
    			position: relative;
    			margin: 10% auto;
    			width: 40%;
    			box-shadow: 0px 0px 20px #000;
    			border-radius: 10px;
    		}
    		img.btn_close {
    			float: right;
    			margin: -55px -55px 0 0;
    			cursor: pointer;
    		}
    		.button{
    			cursor: pointer;
    			color: blue;
    			text-decoration: underline;
    		}
    		.checkbox:checked{
               box-shadow: 0 0 10px 2px gold;
    		   }

    Pour reprendre ton idée, j'ai essayé le code suivant, mais ça ne change rien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $modal .= "modalCheck_".$donnees['num_etude']
    ?> <td class="medium_gray">
       <div>
      <label class="button" for="modalCheck">Ajout</label><input type="checkbox" id=" <?php echo $modal ?>" />
    		<div class="modalLayer">
    		<div class="popup_block">
    		<label for=" <?php echo $modal ?>">

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Citation Envoyé par tom765 Voir le message
    En effet j'affiche en mode Readonly la valeur de la ligne sélectionné dans mon formulaire et je laisse l'utilisateur saisir la valeur (POI).
    A l'affichage la référence de la ligne correspond toujours à la 1ère ligne de la page par contre dans le code généré je retrouve la bonne valeur.
    => Seulement lors de l'ajout dans la bdd, il prend la valeur affiché et donc la mauvaise.
    ...
    Par contre j'ai essayé, en laissant l'utilisateur saisir et la ça fonctionne.
    Tu pourrais nous détailler ça un peu mieux ? Possible aussi qu'en cherchant à nous préciser ce problème, tu trouve la solution.

    Sinon d'une manière générale y'a pas à s'étonner que le formulaire envoie la valeur affichée dans un champ, c'est le contraire qui serait inquiétant. Vérifies ce que le formulaire contient (click droit puis "examiner l'élément" sous firefox ou "inspecter" sous chrome) avant de l'envoyer, cela t'aidera certainement à comprendre ce qui se passe.

  5. #5
    Membre averti
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Octobre 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2016
    Messages : 14
    Par défaut
    Bonjour,

    J'ai persévéré sur l'idée de Mathieu et ça fonctionne enfin (Enfin Presque )

    Voici le code :
    Affichage modal :
    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
     
    <div>
      <label class="button" for="modal-<?php echo $donnees['num_etude'];?>"></label>
      <input type="checkbox" id="modalCheck" />
    	<div class="modalLayer">
    	 <div class="popup_block">
    		<label for="modal-<?php echo $donnees['num_etude'];?>">
    		 <img alt="Fermer" title="Fermer la fenêtre" class="btn_close" src="./modal/close_pop.png"></a> </label>
    		<form method="post" action="pilotage.php">
    		 <Fieldset>
    			<legend> Ajout POI </legend>
    			 <label for="num_etude"> Reference etude </label/>
    			   <input type="text" name="num_etude" option value="<?php echo $donnees['num_etude'];?>" readonly />
    			    <br />
    			<label for="num_poi"> N° POI</label>
    		         <input type="text" name="num_poi" autoFocus /> <br/>
    			 <input type="submit" name="valid" value="valider" />
    		</fieldset>
    	     <form>
    	</div>
      </div>
     </div>
    et le CSS :
    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
    #modal{
    			display: none;
    		}
    		.modalLayer{
    			display: none;
    			position: fixed;
    			top: 0;
    			bottom: 0;
    			left: 0;
    			right: 0;
    			background-color: rgba(0, 0, 0, 0.5);
    		}
    		#modalCheck:checked + .modalLayer, #modalContent:target{
    			display: block;
    		}
    		.popup_block{
    			background: #fff;
    			padding: 20px;
    			border: 20px solid #ddd;
    			position: relative;
    			margin: 10% auto;
    			width: 40%;
    			box-shadow: 0px 0px 20px #000;
    			border-radius: 10px;
    		}
    		img.btn_close {
    			float: right;
    			margin: -55px -55px 0 0;
    			cursor: pointer;
    		}
    		.button{
    			cursor: pointer;
    			color: blue;
    			text-decoration: underline;
    		}
    		.checkbox:checked{
               box-shadow: 0 0 10px 2px gold;
    		   }
    Sauf que maintenant, j'ai le bouton "fermer" qui ne fonctionne plus. Le seul moyen de quitter la modale et de valider.

    Savez vous d'ou cela peut venir ?

Discussions similaires

  1. Réponses: 9
    Dernier message: 19/05/2016, 19h21
  2. Récupération de donnée avec formulaire dans bootStrap modal
    Par BOUHH37 dans le forum Bibliothèques & Frameworks
    Réponses: 10
    Dernier message: 28/06/2015, 11h53
  3. Script validate.js dans fenetre modal
    Par pascalea14 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 14/04/2015, 01h33
  4. Réponses: 7
    Dernier message: 08/03/2011, 22h14
  5. Affichage d'un PDF dans fenetre modale
    Par rico031 dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 28/09/2008, 22h06

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