Bonjour,

Je continue ma gestion de Livres.

J'ai un script php qui crée le formulaire de création (partagé en 2 fieldsets):
. Le 1er fieldset comprend 3 champs:
Titre du livre (champ obligatoire), Année édition
et le N° du livre (en auto-increment en readonly)
et un bouton Validation.

. Le second fieldset (saisie des données chapitres) + bt validation

et comprend l'appel (en Ajax /retour JSON) à un script 'verifliv' qui vérifie si le liv existe déjà en BDD sinon il le crée.


Pour cela, j'ai d'abord un datalist sur le champ Titre (qui liste les titres existant en BDD).
Si le titre est présent dans la liste, je le sélectionne et après validation, je souhaite donc récupérer et afficher les données supplémentaires correspondantes dans les champs (Num et Année)
sinon je saisi le nouveau titre + (éventuellement l'année) puis après validation le créer en BDD.

Déjà dans le cas où le liv existe, je récupère bien les données complètes (retour JSON) mais mon pb (et j'y viens ;-)) :

1/, Je n'arrive pas à récupérer chaque élément ou valeurs du JSON afin de les afficher dans les champs correspondants

D'après ce que j'ai compris, le JSON est pourtant un objet et donc j'ai fait (différents essais):
data.Num ou data['Num'] (pour récupérer la valeur de 'Num' )
mais à chaque fois, il m'affiche: undefined valeur

OU doit on forcément utiliser le $.each(.....clé/valeur)....; j'ai essayé mais sans succès(surement mal codé ???)
(mais n'y t'il pas un moyen plus simple pour récupérer uniquement "3 malheureuses données..." :-)) )

2/ j'ai utilisé .val (pour tenter d'afficher les données ds les champs mais faut-il pas mieux utiliser .text ??)

3/ J'ai remarqué ds le JSON que les données étaient en double ???

4/ les commandes sur les fieldsets restent sans effet.... cad qu'une fois la validation faite sur le 1er ,
je souhaiterais le désactiver pour rendre actif le second.

En fait, dès que je valide, les champs se vident (réinitialisent ) et le fieldset reste actif et that's all!! :-((

Je vous ai joint:
-le script php (appel AJAX + formulaire)
-le script verifliv
-copie du JSON

Merci bcp pour vos remarques !

Code html : 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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
<!--  ***************  INSERTION des PARTIES (HEADER, MENU, FOOTER,...) ***** -->
 
        <?php include("menuPILO.php"); ?>   
 
<!--  ******************************************************** -->
 
 
<!DOCTYPE html>
<HTML>
 <head>
  <title> Gestion PILOTAGE </title>
      <meta charset="utf-8"/>
      <link rel="stylesheet" href="ajout1.css"/>
      <script src="jquery-3.4.1.js"></script>
 
         <script type="text/javascript">
 
/////     -------------------------------------------------------
/////             APPEL FONCTION VERIFLIV 
/////     -------------------------------------------------------
        
         $(document).ready(function(){
 
            $("#Valid1").click(function(e){
               e.preventDefault();
     
 
               $.ajax({
                      type: 'POST',
                      url:  'verifliv.php',
                      data:{
                            num      : $("#num").val(),
                            titre    : $("#titreliv").val(),
                            annee    : $("#annee").val()
                            },
                            datatype: 'json',   
 
                            success:function(data){
                                        
                            console.log("retour SUCCES fonction verifliv data :"+data);
 
                               
                     //     numLIV = data['Num'];
                     //     numTIT = data['Titre'];
                     //     annee  = data['Annee'];
                                      
 
                     //    console.log("numLIV :"+numLIV);
 
 
                     ///   Affectation nouvelles valeurs (issues du JSON) aux 3 champs formulaire
 
 
                      //     $("#num").val(numLIV);
                     //     $("#titreliv").val(numTIT);
                     //     $("#annee").val(annee);
 
                                                                   
 
                      /// BLOCAGE des CHAMPS du Fieldset LIV
 
                     document.getElementById("field1").style.disabled=true;  
 
 
                      /// ACTIVATION  des CHAMPS du Fieldset  CHAPITRE
 
                     document.getElementById("field2").style.disabled=false;  
 
                 
          
                      },
 
                   error:function(data)
                         { 
                          console.log("ERROR");
                         } 
                  
               });
 
            });
      
         
 
 
 ////////  ----------------------------------------------
 ////////     APPEL FONCTION  CREATION CHAPITRE  (A VENIR)
 ////////   ----------------------------------------------
 
 
 
 
          </script>
 
 
      <style>
         #msgfoot {
         visibility:hidden;  
         text-align: center; 
         left:100px;
         width: 400px;
         height: 25px;
         position:absolute;
         top: 0px; 
         background :green;
             }
      </style>      
 
 
 
 
 
 
 </head>
 
<!-- =========================================================  -->
<!-- =          APPEL  PHP                                        --> 
<!-- ===========================================================  -->
 
 
<body>
 
    <form class="formulaire" method="post" >
          <div>
            <fieldset id="field1">
               <legend>Livre</legend>
                 <label for="titreliv">.Titre du Livre :</label>
                 <input list="ttliv" type="text" id="titreliv" name="Titreliv" size="25" >
 
 
		  <datalist id="ttliv">
 
 
 <?php
              try
              {
              // On se connecte ? MySQL
                $bdd = new PDO('mysql:host=localhost;dbname=base2;charset=utf8','root','',array
              (PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); 
              }
 
             catch(Exception $e)
              {
               // En cas d'erreur on affiche un msg et on arr?te tout
               die('Erreur : '.$e->getmessage());
 
               }
 
      
              $reponse = $bdd->query('SELECT Titre FROM LIV ORDER BY Num');
 
              while ($donnees = $reponse->fetch())
              {
              ?>
                 <option value="<?php echo $donnees['Titre']; ?>"><?php echo $donnees['Titre']; ?>
                 </option>
 
              <?php
              }
               $reponse->closeCursor();
              ?>             
 
 
              </datalist>
 
 
 
 
 
                 <label for="num" style="padding-left:40px";>.Num : </label><input type="number" id="num" name="Num" size="3" readonly="readonly" >
                 <br/> 
                 <label for="annee">.Annee edition : </label>
                 <input type="number" id="annee" name="Annee" size="4" >
 
                <button id="Valid1" type="submit" name="Valid1" value="OKValid1" style="padding : 10px"> VALIDER1 </button>
 
 
                 <br/></br>
            </fieldset>
          </div>
 
           <div>
            <fieldset id="field2" disabled >
               <legend>Chapitres</legend>  
                 <label for="titrechap">.Chapitre : </label>
                 <input type="text" id="titrechap" name="Titrechap" size="50" required>
                 </br> </br>
 
                 <label for="avion" style="padding-right:6px";>.Avion(s) :</label>
                 <input type="text" id="avion" name="Avion" size="15" required>
                 <label for="cie" style="padding-left:30px";>.Cie : </label><input type="text" id="cie" name="Cie" size="20" >
                 </br>
 
                 <label for="date" style="padding-right:33px";>.Date : </label>
                 <input type="date" id="date" name="Date" size="8" >
                 <label for="pays" style="padding-left:30px";>.Pays      : </label><input type="text" id="pays" name="Pays" size="20" >
 
                 </br> </br>
 
                 <label for="comment">.Comment: </label>
                 <input type="text" id="comment" name="Comment" size="40" >
 
                 </br>
 
                <button id="Valid2" type="submit" name="Valid2" value="OKValid2" style="padding : 10px"> VALIDER2</button>
                 </br> 
            </fieldset>
 
 
 
      </form>
 
    	    <div id="msgfoot" > ENREG CREE </div> 
 
 
 
</body>
 
</html>

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
<?php
 
 
         //     echo " **** VERIFLIV.PHP VALID  ***** "; 
 
 
                $titliv=$_POST['titre'];
 
	//      echo "titre liv : $titliv "; 
 
 
      //  =========================================================
      //  =   VERIF SI LIV DEJA CREE 
      //  =========================================================
 
 
      $bdd = new PDO('mysql:host=localhost;dbname=base2;charset=utf8','root','',array
      (PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
 
       $reponse = $bdd->query("SELECT * FROM LIV where Titre = '$titliv' ");
 
       $resultat = $reponse->fetch();
 
 
        if ($resultat)   // Enr LIV existe deja
           {
 
              //  echo "*** LIV existe DEJA (verifliv.php)"; 
                  echo json_encode($resultat);
 
	   }
 
        else
            // ==============================================================
           ///                          CREATION ENR LIV 
           //   ==============================================================
           { 
 
 
                $resultat= $bdd->exec('INSERT INTO LIV  (Titre, Annee) VALUES
                         ("'.$_POST['titre'].'", "'.$_POST['annee'].'" ');
 
 
                 if ($resultat)
                    {
 
                    //  echo "=== ENR LIV CREE ==== "; 
 
                    //  RECUPERATION du NumLiv pour retour JSON 
                    //      --------------------------------------------------
 
                       $reponse = $bdd->query("SELECT * FROM LIV where Titre = '$titliv' ");
 
                       $resultat = $reponse->fetch();
 
                       echo json_encode($resultat);
 
                    }
                  else
                    {  
                      echo "error";
                    }
 
 
           }
 
 
?>

Nom : JSON.png
Affichages : 847
Taille : 249,7 Ko