begin process at 2012 05 30 12:02:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Corrélation entre différente table


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Corrélation entre différente table

dimanche 17 janvier 2010 à 09:51:58 | Corrélation entre différente table

Rouk

Bonjour,

Je souhaiterai optimiser mon code, il fonctionne actuellement mais je sais qu'il n'est pas correct. En effet, je n'utilise pas de clé secondaire pour récupérer les informations d'une autre table.

Voici la structure de ma base:
Table : Plateforme
Champs 1 : ID_PlateForme
Champs 2 : Nom_PlateForme

Table : Pays
Champs 1 : ID_Pays
Champs 2 : Nom_Pays

Table : Mdp
Champs 1 : ID_Mdp
Champs 2 : Login_Mdp
Champs 3 : Mdp_Mdp
Champs 4 : Nom_PlateForme
Champs 5 : Nom_Pays

Le code:
Code PHP :
<p>- Outils d'administration</p>
			<table>
				<?php
				mysql_connect("localhost", "root", "");
				mysql_select_db("Test");
				?>

				<form action="admin_mdp.php" method="post">
				<p>
    				<select name="PlateForme">
					<?php
						$retour_plateforme = mysql_query("SELECT * FROM PlateForme ORDER BY Nom_PlateForme ASC");
						while($donnees_plateforme=mysql_fetch_array($retour_plateforme)) {
   						echo "<option>".$donnees_plateforme['Nom_PlateForme']."</option>\n";
						}
					?>
    				</select>
				<select name="Pays">
					<?php
						$retour_pays = mysql_query("SELECT * FROM Pays ORDER BY Nom_Pays ASC");
						while($donnees_pays=mysql_fetch_array($retour_pays)) {
   						echo "<option>".$donnees_pays['Nom_Pays']."</option>\n";
						}
					?>
    				</select>
					Login : <input type="text" size="15" name="Login" />
					Mdp : <input type="text" size="15" name="Mdp" />
    					<input type="submit" name="Ajouter" value="Ajouter" />
				</p>
				</form>

				<?php
				if (isset($_POST['Ajouter']))
				{
					$login_mdp = mysql_real_escape_string(htmlspecialchars($_POST['Login']));
					$mdp_mdp = mysql_real_escape_string(htmlspecialchars($_POST['Mdp']));
					$plateforme_mdp = mysql_real_escape_string(htmlspecialchars($_POST['PlateForme']));
					$pays_mdp = mysql_real_escape_string(htmlspecialchars($_POST['Pays']));
					mysql_query("INSERT INTO Mdp VALUES('', '". $login_mdp ."', '". $mdp_mdp ."', '". $plateforme_mdp ."', '". $pays_mdp ."')");

				}
				if (isset($_POST['Modifier']))
				{
					$id_mdp = mysql_real_escape_string(htmlspecialchars($_POST['id']));
					$login_mdp = mysql_real_escape_string(htmlspecialchars($_POST['Login']));
					$mdp_mdp = mysql_real_escape_string(htmlspecialchars($_POST['Mdp']));
					mysql_query("UPDATE Mdp SET Login_Mdp='" . $login_mdp . "', Mdp_Mdp='" . $mdp_mdp . "' WHERE ID_Mdp='" . $id_mdp . "' ");			
				}
				if (isset($_POST['Supprimer']))
				{
					$id_mdp = mysql_real_escape_string(htmlspecialchars($_POST['id']));
					$login_mdp = mysql_real_escape_string(htmlspecialchars($_POST['Login']));
					$mdp_mdp = mysql_real_escape_string(htmlspecialchars($_POST['Mdp']));
					mysql_query("DELETE FROM PlateForme WHERE ID_PlateForme='" . $ID_Mdp . "'");			
				}
				?>	
				<tr>							
					<td>PlateForme</td>
					<td>Pays</td>
					<td>Login</td>
					<td>Mot de Passe</td>
				<tr>
				<?php	
				$retour = mysql_query("SELECT * FROM Mdp ORDER BY Nom_PlateForme ASC");
				while ($donnees = mysql_fetch_array($retour))
				{
				?>
				<tr>

					<form action="admin_mdp.php" method="post">

					<td>
						<?php echo $donnees['Nom_PlateForme']; ?>
					</td>
					<td>
						<?php echo $donnees['Nom_Pays']; ?>
					</td>
					<td>

						<input type="text" size="15" name="Login" value="<?php echo $donnees['Login_Mdp']; ?>" />
						<input type="hidden" name="id" value="<?php echo $donnees['ID_Mdp']; ?>"/>
					</td>
					<td>

						<input type="text" size="15" name="Mdp" value="<?php echo $donnees['Mdp_Mdp']; ?>" />
						<input type="hidden" name="id" value="<?php echo $donnees['ID_Mdp']; ?>"/>
					</td>

					

					<td>

						<input type="submit" value="Modifier" name="Modifier" />

					</td>

					<td>

						<input type="submit" value="Supprimer" name="Supprimer" />

					</td></form>

				</tr>

				
				<?php
				}

				mysql_close();
			?>
			</table>


Ma problématique est que je ne sais pas comment récupérer l'ID_PlateForme et l'ID_Pays depuis la liste déroulante. Puis de chercher et afficher les noms via leur ID.

Pouvez-vous m'expliquer comment faire la corrélation entre les tables ?

Merci
dimanche 17 janvier 2010 à 11:54:59 | Re : Corrélation entre différente table

neigedhiver

Réponse acceptée !
Salut,

Ma problématique est que je ne sais pas comment récupérer l'ID_PlateForme et l'ID_Pays depuis la liste déroulante.


Deux raisons à ça :

  • La table Mdp ne contient pas les bonnes informations
  • Tu n'utilises pas la balise <option> correctement.


Avant tout, tu DOIS stocker dans la table Mdp l'ID du pays et de la plateforme. Pas leurs noms. Sinon, les tables Pays et Plateforme ne servent à rien.
Elle doit donc ressembler à ça :
Table : Mdp
Champs 1 : ID_Mdp
Champs 2 : Login_Mdp
Champs 3 : Mdp_Mdp
Champs 4 : ID_PlateForme
Champs 5 : ID_Pays

A partir de là, la requête :
Code :
SELECT * FROM Mdp ORDER BY Nom_PlateForme ASC

doit être modifiée de la sorte :
Code :
SELECT Mdp.*, Pays.Nom_Pays, Plateforme.Nom_PlateForme
FROM Mdp
LEFT JOIN Pays ON Mdp.ID_Pays=Pays.ID_Pays
LEFT JOIN Plateforme ON Mdp.ID_PlateForme=Plateforme.ID_PlateForme
ORDER BY Plateforme.Nom_PlateForme ASC;


Tu récupèreras ainsi les champs de la table Mdp ainsi que les champs Nom_Pays et Nom_PlateForme (issus respectivement des tables Pays et de Plateforme) correspondant aux ID stockés dans la table Mdp pour chaque enregistrement.

Tes listes <select>, plus précisément les balises <option>, doivent avoir l'attribut value défini pour que le formulaire puisse renvoyer leur valeur :

Code PHP :
    				<select name="PlateForme">
					<?php
						$retour_plateforme = mysql_query("SELECT * FROM PlateForme ORDER BY Nom_PlateForme ASC");
						while($donnees_plateforme=mysql_fetch_array($retour_plateforme)) {
   						echo '<option value="'.$donnees_plateforme['ID_PlateForme'].'">'.$donnees_plateforme['Nom_PlateForme']."</option>\n";
						}
					?>
    				</select>

Ce code tient compte de la modification de la table Mdp (indispensable, sinon on ne récupère pas ID_PlateForme ni ID_Pays).


Sinon, tu as deux champs qui portent le même nom (les champs de type hidden : name="id") : c'est "interdit" (c'est mal, très mal).



--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
dimanche 17 janvier 2010 à 12:27:43 | Re : Corrélation entre différente table

Rouk

Merci beaucoup !!! Cela fonctionne parfaitement !!!

Ps: J'ai modifié les champs de type hidden : name="id"


Cette discussion est classée dans : table, champs, id, pays, plateforme


Répondre à ce message

Sujets en rapport avec ce message

aide moi [ par snikersmaster ] bonjour, je suis debutant dans la programmation avec language PHP et je veux m'aider svp, j'ai une liste des donner dans une petit  table  mysql, nom Obtenir le nom des champs d'une table mySQL [ par durand2504 ] Bonjour,je voulais savoir s'il est possible d'obtenir par une instruction PHP l'intitulé d'une table mySQL que l'on a chargé.par exemple, j'ai la tabl Communiquer entre deux tables [ par VLN ] Bonjour, J'ai un souci de communication entre deux tables, je monte un site de petites annonces pour voitures, et sur chaque profil détailler du vehi Champs pouvant contenir que 4 valeurs... [ par obcstaff ] J'ai une table utilisateur, un champs num_droit ou je souhaiterais qu'il n'y ait que les valeurs 1, 2, 3, 4 que l'on puisse rentrer, donc interdire le Probleme creation cles primaires [ par Usual suspect ] Bonjour, comment creer une cle primaire d'une table en fonction d'un cle primaire d'une autre table (exigence du cahier des charges)? Exemple : table comment recupérer automatiquement dans les champs d'un formulaire, les donnees affichées aprés selection, dans une liste déroulante ? [ par schmoldu21 ] Bonjour, je debute en php, et j'ai un formulaire avec une liste deroulante qui est alimentée par une base de donnees mysql, dans ma liste deroulante, tableau dynamique sans repetition de champs [ par niko14 ] salut tout le monde! Je vous expose le probleme En fait je voudrais faire un tableau a partir d'un base de données! Sachant que je fais ca car les cha Obtenir une limite basse/haute dans une table [ par laubro ] Bonjourje crois que cette procedure existe, voilà, j'ai des champs dans une table qui comptiennent des chiffrej'ai un SUM qui calcul le total de ces c je sais pas comment faire ... [ par s studio ] Bonjour a tous !je suis en train de faire un système de vote pour des chansons et je sais pas comment faire pour regrouper deux resultats.J'ai une pre recuperer et inserer [ par snikersmaster ] bonjour, je veux un aide pour dans mon programme , je vais expliquer un peux j'ai 2 tables "partenaires" , " journal " partenaires            &


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,842 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales