Bonjour,

Après deux semaines de recherches et d'études de code en tout genre, je n'arrive pas à ce que je souhaite faire.

J'ai un formulaire principal qui contient des zones de texte et des zones de liste.

Ce que j'aimerais faire c'est ajouter un Auteur à la zone de liste Auteur et récupérer
son id dans la table principale à l'enregistrement du formulaire principal

J'ai une table MYSQL: Auteur, qui contient les champs: id_auteur,nom_auteur,abr_auteur
et une table principale qui contient le champ: id_auteur.

Dans mon formulaire principal, j'ai créé un bouton qui ouvre une fenêtre modal à partir de laquelle j'ajoute
le nom du nouvel Auteur. Après saisie et validation, le nom du nouvel Auteur s'ajoute à la zone de liste auteur,
la fenêtre modal se ferme, le focus est redonné au formulaire principal.

Et c'est là que je bute, lorsque j'enregistre le formulaire principal dans la table principale j'ai toutes
les valeurs saisies dans mes autres zones sauf id_auteur qui reste à zéro.

Je me suis aperçu que sur un rechargement de la page cette fois-ci j'obtenais l'id_auteur. Sauf que le formulaire se recharge en totalité
et que je suis donc obligé de ressaissir toute les valeurs.

Je m'en remet à vous pour m'aider à mettre en oeuvre une solution qui me permettra d'arriver au résultat souhaité.

Voilà les différents codes utilisés.

Merci.

Formulaire_principal.php (J'ai mis juste la partie concernée)

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
 
<SCRIPT LANGUAGE="JavaScript" type="text/javascript">
//Popup centré
function PopupCentrer(page,largeur,hauteur,options) {
  var top=(screen.height-hauteur)/2;
  var left=(screen.width-largeur)/2;
  window.open(page,"","top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options);
}
 
// Ajouter données popup dans zone de liste
function doc(nom)  {
	return document.getElementById(nom);		 
	}
 
</SCRIPT>
 
 
  <div id="Auteur">
  <!-- Auteur -->	
      <!-- libellé -->
      <strong>Auteur:</strong>
      <!-- zone de liste auteur -->
 
      <select name="auteur" id="auteur" style="width:200px">
 
	<?php
		//---------------------------------------------------------------
		// Réalisation d'une zone de liste avec une base de données
		//---------------------------------------------------------------
		// Requete pour la récupération des données
		$sql_auteur = "SELECT id_auteur,nom_auteur FROM auteur ORDER BY nom_auteur";
		$req_auteur = mysql_query($sql_auteur) or die('Erreur SQL !<br>' .$sql_auteur. '<br>' .mysql_error());
		while ($data_auteur = mysql_fetch_array($req_auteur))
		{
		echo '<option value="'.$data_auteur['id_auteur'].'">'.$data_auteur['nom_auteur'].'</option>';
		}
		mysql_free_result($req_auteur);
	?>
 
      </select>
 
<!-- bouton Ajouter un auteur -->
<!-- onClick ouvre une fenetre popup qui permet de créer le nouvel auteur -->
<input type="button" onClick=	"PopupCentrer('modal/modal_Nouvelauteur.php',500,70,'modal=yes,directories=0,menubar=0,titlebar=0,toolbar=0,width=500,height=250');" alt="Créer un nouvel auteur" title="Créer un nouvel auteur">
 
 
</div>
 <p>
    <!-- *************************************************************************** -->            
    <!-- ****************** Bouton de pied de formulaire *************************** -->
    <!-- *************************************************************************** -->
 
    <!-- bouton Enregistrer -->
  </p>
  <p>
    <input type="submit" value="Enregistrer" name="Enregistrer"/>
 
    <!-- bouton Annuler -->
    <input type="reset" value="Annuler" onclick="return confirm('Confirmez-vous annulation des éléments saisies?');"/>
 
    <!-- bouton Revenir à la page accueil -->
    <input type="reset" value="Accueil" a href="http://localhost/AAA%20Test/Accueil.php" onclick="return confirm('En cliquant sur OK vous allez retourner à la page d\'\accueil et perdre les données saisies!');"/>
 
 
    </p>
</center>
 
<?php
//On commence par récupérer les champs
 
if(isset($_POST['auteur']))	$secteur=$_POST['auteur'];
else	$auteur="";
 
//On vérifie si les champs sont vides
if(empty($reference) OR empty($designation))
	{
	echo'<font color="red">Attention, seul le champ <b>ICQ</b> peut rester vide !</font>';
	}
 
//Aucun champ n'est vide
else
	{
	$db = mysql_connect('localhost','XXXXXXXXXx','XXXXXXXXXX');
	mysql_select_db('Test',$db);
 
	$sql = "INSERT INTO principal(Id_principal,Ref_principal,Des_principal,id_auteur,id_XX,id_XXXX,id_XXXXX)VALUES('','$reference','$designation','$auteu','$XX','$XXXX','$XXXXX')";
 
	//On insère les informations du formulaire dans la table
	mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
 
	//On affiche un message de réussite
	echo "alert('Saisie enregistrée');";
	}
 
?>
</body>
</html>
modal_Nouvelauteur.php

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
 
<title>Créer un nouvel auteur</title>
 
<SCRIPT LANGUAGE="JavaScript">
// Centrage de la fenetre popup
	function PopupCentrer(page,largeur,hauteur,options) {
  		var top=(screen.height-hauteur)/2;
  		var left=(screen.width-largeur)/2;
  		window.open(page,"","top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options);
}
 
function doc(nom)  
	{
	return document.getElementById(nom);
	}
 
function valid()  
	{
	value = doc('value').nom_auteur;
	text = doc('text').value;
	opener.ajouter('auteur', value, text);
	}
 
</SCRIPT>
 
	<!-- *************************************************************************** -->            
	<!-- ****************************** Lien CSS *********************************** -->
	<!-- *************************************************************************** -->
		<link href="../css/modal_NouvelAuteur.css" rel="stylesheet" type="text/css">
</head>
<form action="" method="POST" onsubmit="valid();"/> 
<body>
 
 
    <!-- ************* Recherche du prochain identifiant *************************** -->
		<?php
                // requete pour chercher le prochain idenfiant
                $requete="SELECT MAX(nom_auteur) AS nb FROM auteur WHERE nom_auteur IN (SELECT nom_auteur FROM auteur) ;";
                $result=mysql_query($requete);
                $ligne=mysql_fetch_array($result);
                $value = $ligne['nb'];
                $value = $value + 1;
                ?>
 
		<p>
	<!-- *********** Zone de texte cachée qui reçoit et renvoie la saisie ********* -->
		<?php
                echo '<input type="hidden" name="nom_auteur" id="value" value"'.$ligne.'"/>';
                ?>
	<!-- *********************** Texte en tete ************************************* -->
		<div>Voulez-vous vraiment créer un nouvel auteur? Sinon cliquez sur "Fermer"</div>
		<br />
		<p><strong>Saisissez le nom du nouvel auteur :</strong></p>
	<!-- ***************** Zone de saisie du nouvel auteur ************************* -->
		<p><input type="text"  name="text" id="text" ></p>
	<!-- *************** Boutons "Enregistrer" et "Annuler" ************************ -->
		<input type="submit" value="Enregistrer" name="Enregistrer" />
		<input type="reset" value="Annuler" name="Annuler" onclick="window.close()"/>
 
        <br /> <!-- *************************** Saut de ligne ************************** -->
 
	<!-- *************************************************************************** -->            
	<!-- ************* PHP Insertion dans la BDD du nouveau secteur ****************** -->
	<!-- *************************************************************************** -->
		<?php
		// on teste si les variables du formulaire sont bien déclarées
		if ((isset($_POST['text'])) AND (isset($_POST['nom_auteur'])))
		{  
		// on insère le tuple (mysql_query) et au cas où, on écrira un petit message d'erreur si la requête ne se passe pas bien (or die)
		$text=htmlentities(trim(ucfirst($_POST['text'])));
		$sql = sprintf("INSERT INTO auteur (nom_auteur) VALUES ('$text')"); 
 
		// on insère le tuple (mysql_query) et au cas où, on écrira un petit message d'erreur si la requête ne se passe pas bien (or die)
		$result = mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
 
		// on ferme la connection à la base
		mysql_close(); 
 
		// affichage d'un message de création ou d'échec selon le cas   
		echo 'Nous venons de créer un nouvel auteur : '.$_POST['text'];  
		}  
		else { 
      	echo '';  
		}
		?>
 
	<br /><!-- *************************** Saut de ligne ************************** -->
	<br />
 
	<!-- ****************************** Bouton "Fermer" *************************** -->
	<input type="button" value="Fermer" name="Fermer" onclick="window.close()"/>
 
</body>
</html>