1 pièce(s) jointe(s)
Récupérer les données du JSON ?
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:
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:
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";
}
}
?> |
Pièce jointe 564936