Partage
  • Partager sur Facebook
  • Partager sur Twitter

Insérer avec liste déroulante dans base de données

Insérer dans table à partir d'une liste déroulante d'une autre table

    17 juin 2019 à 14:13:47

    Bonjour, 

    Après avoir cherché dans des multiples forum je n'ai toujours pas trouvé de réponse.

    J'aimerai pouvoir insérer des données dans une table et utiliser une liste déroulante provenant d'une autre table de la base de données. Donc pour résumer pouvoir insérer dans une table à partir d'une liste déroulante.

    Merci de votre aide.

    Hugo.

    <?php
    session_start();
    
    	$basededonnees = mysqli_connect('127.0.0.1', 'root', '', 'application');
    	
    	if(isset($_POST['listeappliformulaire']))
    	{
    		$libelle_application=htmlspecialchars($_POST['libelle_application']);
    		$version_application=htmlspecialchars($_POST['version_application']);
    		$liste_id_editeur=($_POST['liste_id_editeur']);
    
    		if (!empty($_POST['libelle_application']) AND !empty($_POST['version_application']) AND !empty($_POST['liste_id_editeur']))
    		{
    			$libelle_applicationlenght=strlen($libelle_application);
    			$version_applicationlenght=strlen($version_application);
    
    			if ($libelle_applicationlenght <= 50 AND $version_applicationlenght <= 50) 
    			{
    				$libelle_applicationMin=strtolower($libelle_application);
    				$libelle_applicationMaj=ucwords($libelle_applicationMin);
    
    				$version_applicationMin=strtolower($version_application);
    				$version_applicationMaj=ucwords($version_applicationMin);
    
    				$requete_liste_applicationsexistant = ("SELECT * FROM r06_liste_applications_pilotage WHERE r06_libelle_application_pilotage ='$libelle_application' AND r06_version_application_pilotage ='$version_application'");
    				$resultat=mysqli_query($basededonnees,$requete_liste_applicationsexistant) or die(mysqli_error($basededonnees));
    				$row_cnt = mysqli_num_rows($resultat) or die(mysqli_error($basededonnees));
    				if($row_cnt == 0)
    				{
    					$requete_inserer_liste_application_pilotage = ("INSERT INTO r06_liste_applications_pilotage VALUES ('0', '$libelle_applicationMaj', '$version_applicationMaj', '$liste_id_editeur')");
    					mysqli_query($basededonnees,$requete_inserer_liste_application_pilotage) or die(mysqli_error($basededonnees));
    
    					$message = "La nouvelle liste a bien été créée";
    					
    				}
    				else
    				{
    					$erreur = "La liste existe déjà";
    				}
    			}
    			else
    			{
    				$erreur = "Le nombre de caractères maximum est 50 caractères";
    			}
    
    		}
    		else
    		{
    			$erreur = "Tous les champs doivent être complétés";
    		}
    	}
    ?>
    
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<link rel="stylesheet" type="text/css" href="http://127.0.0.1:8000/edsa-eds-www/TEST%20V1/Style/style.css">
    		<title>Ajouter Liste d'Applications Pilotage</title>
    	</head>
    	<body>
    		<div class="titre2">
    			<h3>Ajout d'une Liste d'Applications de Pilotage</h3>
    		</div>
    
    		<div class="forminscription">	
    			<form method="POST" action="">
    				<table>
    					<tr>
    						<td><label for="libelle_application">Libellé de Liste d'Applications de Pilotage:</label></td>
    						<td><input type="text" name="libelle_application" id="libelle_application" placeholder="Libellé de la Liste"></td>
    					</tr>
    					<tr>
    						<td><label for="version_application">Version de Liste d'Applications de Pilotage:</label></td>
    						<td><input type="text" name="version_application" id="version_application" placeholder="Version de la Liste"></td>
    					</tr>
    					<tr>
    						<td><label for="liste_id_editeur">Id de l'Editeur:</label></td>
    						<td>
    							<select name="liste_id_editeur" id="liste_id_editeur">
    								<?php 
    									$requete_liste_deroulante='SELECT * FROM r05_editeur'; 
    									$resultatliste = mysqli_query($basededonnees,$requete_liste_deroulante);
    									while ($LD = mysqli_fetch_assoc($resultatliste)) 
    										{
    											echo'<option id="'.$LD['r05_id'].'">'.$LD['r05_nom_editeur'].'</option>';
    										}
    									
    								?>
    							</select>
    						</td>
    					</tr>
    					<tr>
    						<td></td>
    						<td align="center"><input type="submit" name="listeappliformulaire" value="Créer la Nouvelle Liste d'Applications"></td>
    					</tr>
    				</table>
    			</form>
    		</div>
    		
    		<div class="instructionsform">
    			<?php
    			if (isset($erreur))
    			{
    				echo '<font color="red">'.$erreur.'</font>';
    			}
    
    			if (isset($message))
    			{
    				echo '<font color="green">'.$message.'</font><br />';
    			}
    			?>	
    		</div>
    
    		<ul class="menupage">
    		  <li><a href="AjouterListeApplications.php">RAFFRAICHIR LA PAGE</a></li>
    		  <li><a href="AjouterListeApplications.php">AJOUTER UNE NOUVELLE LISTE D'APPLICATIONS</a></li>
    		  <li><a href="ParametresListeApplications.php">AFFICHER LES AUTRES LISTE D'APPLICATIONS</a></li>
    		  <li><a href="Parametres.php">Retour Paramètres</a></li>
    		  <li><a href="..\MenuPrincipal\MenuPrincipal.php">Retour Menu Principal</a></li>
    		</ul>
    
    		<?php
    			/* Fermeture de la connexion */ 
    			mysqli_close($basededonnees);
    		?>
    	</body>
    </html>

    Le code annonce aucune erreur, mais il ne créé aucun contenu dans la table de la base de données.

    Je pense que le problème se situe ici:

    <tr>
       <td><label for="liste_id_editeur">Id de l'Editeur:</label></td>
       <td>
    	<select name="liste_id_editeur" id="liste_id_editeur">
    	<?php 
    	     $requete_liste_deroulante='SELECT * FROM r05_editeur'; 
    	     $resultatliste = mysqli_query($basededonnees,$requete_liste_deroulante);
    	     while ($LD = mysqli_fetch_assoc($resultatliste)) 
    		{
    		    echo'<option id="'.$LD['r05_id'].'">'.$LD['r05_nom_editeur'].'</option>';
    		}
    									
    	?>
    	</select>
        </td>
    </tr>

    Mais impossible de trouver comment le résoudre.

    Je l'impression que la liste ne renvoie rien, c'est-à-dire que lorsque j'active le bouton de validation du formulaire une autre page vide s'ouvre et ensuite plus rien ne se passe.

    -
    Edité par HugoJarry3 17 juin 2019 à 15:14:56

    • Partager sur Facebook
    • Partager sur Twitter
      20 juin 2019 à 15:38:43

      Bonjour,

      Mauvais forum

      Le sujet est déplacé de la section Do It Yourself vers la section PHP

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        20 juin 2019 à 15:40:40

        Salut,

        Tu as quoi comme erreur qui s'affiche ?

        • Partager sur Facebook
        • Partager sur Twitter
          20 juin 2019 à 22:55:59

          Salut !

          Mon cheval de bataille va ressortir de l'écurie…

          PAS DE htmlspecialchars() NI htmlentities() SUR DES DONNÉES QU'ON ENVOIE EN BASE

          Ces deux fonctions ne sont absolument pas prévues pour sécuriser des données dans ce contexte. Plus d'informations ici et .
          Donc enlever htmlspecialchars() aux lignes 8 et 9, d'autant qu'en l'état, cela ne sécurise absolument rien, si je mets un guillemet droit dans $_POST['libelle_application'] ou $_POST['version_application'], la requête va planter.

          D'autre part, où est définie la variable $liste_id_editeur utilisée ligne 30 et présente nulle part ailleurs dans le code fourni ?

          Tu dis que tu n'as aucune erreur de signalée, mais est-ce que tu as bien demandé à PHP de toutes les afficher ? Parce qu'une variable non définie, ça devrait être signalé si c'est bien le cas.

          • Partager sur Facebook
          • Partager sur Twitter

          Insérer avec liste déroulante dans base de données

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown