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 :

Lier des tables


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2012
    Messages : 66
    Par défaut Lier des tables
    bonjour,

    je code en ce moment le livre d'or d'un site pour le bac.
    J'aimerais que dans ma table message (pour le livre d'or donc) il y est un champ (clef étrangère) pour récupérer l'id du membre de la table (membres) qui a posté le message. Or, je ne sais pas comment faire pour créer des clefs étrangères sous phpmyadmin ni comment lier les tables

    voici le code du livre d'or :

    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
     
     
    <?php
    session_start(); ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    	   <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <link rel="stylesheet" href="livreor.css" /> 
      <title> Livre d'Or </title>
      </head>
      <body>
     
     
      <?php include("en_tete.html"); ?>
      <?php include("menu.html"); ?>
      <?php include("connect.php"); ?>
      <?php include("connect_bdd.php");?>
     
     
    	<h1> Livre d'Or </h1> <br/>
    	<div id="central">
     
    	<div class="connectlivreor">
    	<table>
    	<form method="post" action="livreor.php">
    	<tr>
    	<td><label for="idlivreor"> <span class="idformlivreor"> Identifiant </span></label> </td> <td> <input type="text" name="idlivreor" id="identifiant"/> </td>
    	</tr>
    	<tr>
    	<td><label for="titrelivreor"> <span class="idformlivreor"> Titre </span></label> </td> <td> <input type="text" name="titrelivreor" id="titrelivreor"/> </td>
    	</tr>
    	<tr>
    	<td><label for="msglivreor"> <span class="idformlivreor"> Message </span></label> </td> <td> <textarea type="text" name="msglivreor" id="msglivreor" rows="8" cols="70"> </textarea><br/>
    			<input style="margin-top:13px; margin-left: 485px" type="submit" value="Envoyer"/></td>
    	</tr>
     
    	</form>
    	</table>
     
     
    	</div>
    	<?php
    	$mbr = "SELECT * FROM membres";
    	$exe = mysql_query($mbr) or die ('erreur : '.mysql_error());
    	$ligne = mysql_fetch_array($exe);
    	$idbdd = $ligne['pseudo'];
    			if(isset($_POST['idlivreor']) AND $idbdd == $_POST['idlivreor']) {
    				$idlivreor = $_POST['idlivreor'];
    				$titrelivreor = $_POST['titrelivreor'];
    				$msglivreor = $_POST['msglivreor'];
     
    				$ajout_msg = "INSERT INTO message(titre, contenu, id_membre_msg) VALUES ('$titrelivreor', '$msglivreor', '$idlivreor')";
    				$ss = mysql_query($ajout_msg) or die ('erreur : '.mysql_error());
     
    			}
    ?>
     
    		<table border="2px">
    		<tr> 
    		<td style="width: 100px;" class="colaffichmsg"> 
    		<?php 
    			?> 
     
    		</td>
    		<td style="width: 300px;" class="colaffichmsg"> 
    		message 
    		</td>
    		</tr>
    		</table>
     
     
    	</div>
     
      <?php include("pied_de_page.html"); ?>
     
        </body>
    </html>
    merci

  2. #2
    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
    Je n'ai jamais utilisé de clef étrangère....

    Mais par rapport à ce que tu souhaite faire, pourquoi ne pas créer un champ supplémentaire dans ta table message qui serait "id_membre" et lorsque un message est ajouté en BDD, tu insère dans ce champ l'id de l'utilisateur courant...

    Je pense que ce serait plus simple non ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2012
    Messages : 66
    Par défaut
    merci

    j'ai fait ce que tu m'a dit, ça marche, mais qu'une seule fois. C'est à dire que quand je Veux poster plusieurs messages dans la livre d'or, dans la table, le premier s'ajoute bien avec le bon id du membre de la table membre, mais les autres ne s'ajoutent 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
    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
     
     
    <?php
    session_start(); ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    	   <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <link rel="stylesheet" href="livreor.css" /> 
      <title> Livre d'Or </title>
      </head>
      <body>
     
     
      <?php include("en_tete.html"); ?>
      <?php include("menu.html"); ?>
      <?php include("connect.php"); ?>
      <?php include("connect_bdd.php");?>
     
     
    	<h1> Livre d'Or </h1> <br/>
    	<div id="central">
     
    	<div class="connectlivreor">
    	<table>
    	<form method="post" action="livreor.php">
    	<tr>
    	<td><label for="idlivreor"> <span class="idformlivreor"> Identifiant </span></label> </td> <td> <input type="text" name="idlivreor" id="identifiant"/> </td>
    	</tr>
    	<tr>
    	<td><label for="titrelivreor"> <span class="idformlivreor"> Titre </span></label> </td> <td> <input type="text" name="titrelivreor" id="titrelivreor"/> </td>
    	</tr>
    	<tr>
    	<td><label for="msglivreor"> <span class="idformlivreor"> Message </span></label> </td> <td> <textarea type="text" name="msglivreor" id="msglivreor" rows="8" cols="70"> </textarea><br/>
    			<input style="margin-top:13px; margin-left: 485px" type="submit" value="Envoyer"/></td>
    	</tr>
     
    	</form>
    	</table>
     
     
    	</div>
    	<?php
    	$mbr = "SELECT * FROM membres";
    	$exe = mysql_query($mbr) or die ('erreur : '.mysql_error());
    	$ligne = mysql_fetch_array($exe);
    	$idbdd = $ligne['pseudo'];
    	$idm = $ligne['id'];
    			if(isset($_POST['idlivreor']) AND $idbdd == $_POST['idlivreor']) {
    				$idlivreor = $_POST['idlivreor'];
    				$titrelivreor = $_POST['titrelivreor'];
    				$msglivreor = $_POST['msglivreor'];
     
    				$ajout_msg = "INSERT INTO message VALUES ('', '$titrelivreor', '$msglivreor', '$idm')";
    				$ss = mysql_query($ajout_msg) or die ('erreur : '.mysql_error());
     
    			}
    ?>
     
    		<table border="2px">
    		<tr> 
    		<td style="width: 100px;" class="colaffichmsg"> 
    		<?php 
    			?> 
     
    		</td>
    		<td style="width: 300px;" class="colaffichmsg"> 
    		message 
    		</td>
    		</tr>
    		</table>
     
     
    	</div>
     
      <?php include("pied_de_page.html"); ?>
     
        </body>
    </html>

  4. #4
    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
    Tu affiches tes messages comment ?
    Là, je ne vois pas la SESSION de l'id de l'utilisateur courant, elle est où ?

  5. #5
    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
    Voici ce à quoi je pensais :

    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
    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
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    <?php session_start(); ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    	   <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <link rel="stylesheet" href="livreor.css" /> 
      <title> Livre d'Or </title>
      </head>
      <body>
     
     
      <?php include("en_tete.html"); ?>
      <?php include("menu.html"); ?>
      <?php include("connect.php"); ?>
      <?php include("connect_bdd.php");?>
     
     
    	<h1> Livre d'Or </h1> <br/>
    	<div id="central">
     
    		<?php
    		if (isset($_POST["ajouter"]) && $_POST["ajouter"] == "ok") {
     
    			// On définit les variables
    			$id_membre = intval($_POST["id_membre"]);
    			$identifiant = trim($_POST["idlivreor"]);
    			$titre = trim($_POST["titrelivreor"]);
    			$message = trim($_POST["msglivreor"]);
     
    			// Variable qui rescevra le message d'erreur
    			$alerte = "";
     
    			// On vérifie si l'id du membre à bien été récupéré
    			if (empty($id_membre))
    				$alerte .= "Erreur, l'id du membre n'a pas pu être récupéré<br />";
     
    			// On vérifie si les champs sont bien remplis
    			if (empty($identifiant) || empty($titre) || empty($message))
    				$alerte .= "Merci de ne pas laisser de champ vide<br />";
     
    			// On vérifie que l'identifiant correspond bien avec l'id du membre, bien qu'on est pas besoin de récupérer son identifiant....
    			$req = mysql_query("SELECT pseudo FROM membres WHERE id_membre = '".mysql_real_escape_string($id_membre)."'") or die (mysql_error());
    			$ligne = mysql_fetch_array($req);
     
    			if ($ligne["pseudo"] != $identifiant)
    				$alerte .= "L'identifiant renseigné ne correspond pas à l'id de l'utilisateur courant<br />";
     
    			if ($alert != "") {
    				// Message d'erreur + Fin de page
    				echo $alerte;
    				echo "</div>";
    				include("pied_de_page.html");
    				echo "</body>";
    				echo "</html>";
    			}
     
    			// Si tout est ok, alors on insère en bdd en protégeant les valeurs !!!
    			mysql_query("
    				INSERT INTO message 
    				VALUES (
    					'', 
    					'".mysql_real_escape_string($titrelivreor)."', 
    					'".mysql_real_escape_string($msglivreor)."', 
    					'".mysql_real_escape_string($id_membre)."'
    				)"
    			) or die (mysql_error());
    			header("Location: livreor.php"); // Redirection vers la page des messages
     
    		} else {
    		?>
     
    			<div class="connectlivreor">
    				<form method="post" action="livreor.php">
    					<input type="hidden" name="id_membre" value="<?php $_SESSION["IDMEMBRE"]; //ICI l'id courant de l'utilisateur ?>">
    					<input type="hidden" name="ajouter" value="ok">
    					<table>
    						<!-- Facultatif, car on va le récupérer avec la session de l'id de l'utilisateur courant --->
    						<tr>
    							<td><label for="idlivreor"> <span class="idformlivreor"> Identifiant </span></label> </td> <td> <input type="text" name="idlivreor" id="identifiant"/></td>
    						</tr>
    						<tr>
    							<td><label for="titrelivreor"> <span class="idformlivreor"> Titre </span></label> </td> <td> <input type="text" name="titrelivreor" id="titrelivreor"/></td>
    						</tr>
    						<tr>
    							<td>
    								<label for="msglivreor"> 
    									<span class="idformlivreor"> Message </span>
    								</label> 
    							</td> 
    							<td> 
    								<textarea type="text" name="msglivreor" id="msglivreor" rows="8" cols="70"></textarea>
    								<br/>
    								<input style="margin-top:13px; margin-left: 485px" type="submit" value="Envoyer"/>
    							</td>
    						</tr>
    					</table>
    				</form>
    			</div>
     
    			<!-- On affiche la fin de la page -->
    			</div>
    			<?php include("pied_de_page.html"); ?>
    			</body>
    			</html>
    		<?php
    		}
    		?>

    Tu as les commentaires afin de comprendre...
    En gros, tu affiches ton formulaire où tu aura 2 champs caché, 1 pour récupérer l'id de l'utilisateur courant, et le 2eme pour créer un interrupteur et donc savoir qu'elle partie du code est à activer.

    Si ajouter est égal à "ok" alors on vérifie les champs puis on insère en BDD si tout est correct

    ATTENTION -> quand tu fais un INSERT il est préférable que tu indiques les champs, car un jour, tu te feras avoir (exemple, ajout d'un champ dans la table... l'insertion échouera...)

    exemple :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO message (champs1, champs2, champs3) VALUES (...)

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2012
    Messages : 66
    Par défaut
    désolé, mais je suis un débutant, ton code est un peu trop compliqué pour moi.

    Mais en faite mon code marche bien mais que pour une ligne. Si je rentre plusieurs messages, il ne les prend pas en compte et n'ajoute rien à ma table.

    j'ai un autre petit souci, c'est la connection sur l'espace membre avec les $_SESSION, j'arrive à me connecter juste avec le premier membre de ma table membre. Avec les autres je n'arrive pas.

    Le code du livre d'or :

    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
     
     
    <?php
    session_start(); ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    	   <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <link rel="stylesheet" href="livreor.css" /> 
      <title> Livre d'Or </title>
      </head>
      <body>
     
     
      <?php include("en_tete.html"); ?>
      <?php include("menu.html"); ?>
      <?php include("connect.php"); ?>
      <?php include("connect_bdd.php");?>
     
     
    	<h1> Livre d'Or </h1> <br/>
    	<div id="central">
     
    	<div class="connectlivreor">
    	<table>
    	<form method="post" action="livreor.php">
    	<tr>
    	<td><label for="idlivreor"> <span class="idformlivreor"> Identifiant </span></label> </td> <td> <input type="text" name="idlivreor" id="identifiant"/> </td>
    	</tr>
    	<tr>
    	<td><label for="titrelivreor"> <span class="idformlivreor"> Titre </span></label> </td> <td> <input type="text" name="titrelivreor" id="titrelivreor"/> </td>
    	</tr>
    	<tr>
    	<td><label for="msglivreor"> <span class="idformlivreor"> Message </span></label> </td> <td> <textarea type="text" name="msglivreor" id="msglivreor" rows="8" cols="70"> </textarea><br/>
    			<input style="margin-top:13px; margin-left: 485px" type="submit" value="Envoyer"/></td>
    	</tr>
     
    	</form>
    	</table>
     
     
    	</div>
    	<?php
    	$mbr = "SELECT * FROM membres";
    	$exe = mysql_query($mbr) or die ('erreur : '.mysql_error());
    	$ligne = mysql_fetch_array($exe);
    	$idbdd = $ligne['pseudo'];
    	$idm = $ligne['id'];
    			if(isset($_POST['idlivreor']) AND $idbdd == $_POST['idlivreor']) {
    				$idlivreor = $_POST['idlivreor'];
    				$titrelivreor = $_POST['titrelivreor'];
    				$msglivreor = $_POST['msglivreor'];
     
    				$ajout_msg = "INSERT INTO message VALUES ('', '$titrelivreor', '$msglivreor', '$idm')";
    				$ss = mysql_query($ajout_msg) or die ('erreur : '.mysql_error());
     
    			}
    ?>
     
    		<table border="2px">
    		<tr> 
    		<td style="width: 100px;" class="colaffichmsg"> 
    		<?php 
    			?> 
     
    		</td>
    		<td style="width: 300px;" class="colaffichmsg"> 
    		message 
    		</td>
    		</tr>
    		</table>
     
     
    	</div>
     
      <?php include("pied_de_page.html"); ?>
     
        </body>
    </html>
    le code de la page d'initialisation des $_SESSION :

    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
     
     
    <?php
    	include("connect_bdd.php"); 
     
    	$mbr = "SELECT * FROM membres";
    	$exe = mysql_query($mbr) or die ('erreur : '.mysql_error());
    	$ligne = mysql_fetch_array($exe);
     
    	if (isset($_POST['identifiant'])) {
     
    		$id = $_POST['identifiant'];
    		$mdp = $_POST['mdp'];
    		$idbdd = $ligne['pseudo'];
    		$mdpbdd = $ligne['mdp'];
     
     
    		if ($id == $idbdd AND $mdp == $mdpbdd) {
    		$_SESSION['id'] = $idbdd;
    		$_SESSION['mdp'] = $mdpbdd;
    		}
     
     
    	}
     
     
    ?>
    le code de la page connect.php pour que les membres se connectent :

    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
     
     
      <?php
       include("session.php"); 
      if (isset($_SESSION['id']) AND isset($_SESSION['mdp'])){
     
      ?>
     
    	  <div id="boite_g">
    	<div class="ident">
    		<form method="post" action="deconnection.php">
    		Bonjour, <strong> <?php echo $_SESSION['id']; ?> </strong> vous êtes maintenant connecté
    		<input style="margin-top:13px; margin-left: 18px" type="submit" value="Se déconnecter"/>
    		</form>
    	</div>
      </div>
      <?php
      }
      else {
     
    	?>
     
      <div id="boite_g">
    	<div class="ident">
    		<form method="post" action="offres.php">
    			<label class="lien_connect" for="identifiant"> <span style="margin-left:13px"> Identifiant </span></label><br/>  <br/><input style="margin-bottom:13px" type="text" name="identifiant" id="identifiant"/><br/>
    			<label class="lien_connect" for="mdp"> Mot de Passe </label> <br/> <br/><input type="password" name="mdp" id="mdp"/><br/>
    			<input style="margin-top:13px; margin-left: 18px" type="submit" value="Se connecter"/>
    		  <a class="inscrire" href="inscription.php">s'inscrire</a>
    		</form>
    	</div>
      </div>
      <?php
      }
      ?>

    Merci beaucoup c'est hyper important, c'est pour le projet du bac

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/07/2006, 18h40
  2. Lier des tables MySQL / numérotation auto
    Par alfigor dans le forum Requêtes
    Réponses: 5
    Dernier message: 09/05/2006, 10h34
  3. lier des tables par le code
    Par karimspace dans le forum Contribuez
    Réponses: 5
    Dernier message: 20/03/2006, 12h28
  4. Lier des tables
    Par Al_Ameen dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 18/12/2005, 15h38
  5. Comment lier des tables Access ?
    Par po.lombard dans le forum Bases de données
    Réponses: 1
    Dernier message: 18/12/2005, 13h54

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