Bonjour tout le monde !
Je me tourne vers vous parce que j'ai un petit problème pour mettre à jour un champ texte en fonction du choix d'une liste déroulante.
Mes données sont enregistrées dans une base de données (jdr)
Pour commencer, je vous met un bout de html
l'idée c'est de mettre à jour le champ expérience en fonction de la liste classe. J'ai réussit cette partie là. Je vous met mes script php et js
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 Choix de la classe <select class="separator_ligne" name="classe" id="classe_select" size="1"> <option value="sloop" checked="checked">Sloop</option> <option value="caravelle">Caravelle</option> <option value="galere">Galère</option> <option value="cuirasse">Cuirassé</option> <option value="fregate">Frégate</option> <option value="gallion">Gallion</option> </select> Expériences <input id="exp" class="separator_ligne size-input" type="text" value="" /> Type de canon <select class="separator_ligne" name="type" id="type_canon" size="1"> <option value="leger" checked="checked">Léger</option> <option value="naval">Naval</option> <option value="lourd">Lourd</option> </select> Dégats : <input id="DD_degat" class="separator_ligne size-input" type="text" value="" />
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 <?php // init bdd $bdd = mysqli_connect ( 'localhost:3306', 'root', 'root' ); mysqli_select_db ( $bdd, 'jdr' ); // if(isset($_POST['classe'])) { $query = 'SELECT exp,classe FROM bateau WHERE classe ="' . $_POST['classe'] . '";'; $result = mysqli_query ( $bdd, $query ); $query_result = array(); while($row = mysqli_fetch_assoc ( $result )){ $query_result[]['exp']= $row['exp']; } echo json_encode(array('experience' => $query_result[0]['exp'])); } // fermeture bdd mysqli_close($bdd); ?>J'ai donc voulu adapter ma syntaxe au champ dégats qui se met à jour avec la liste type de canon. Et là.... ça ne fonctionne pas du tout : j'obtient le message parse error.
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 // Fonction de mise à jour $(document).ready(function() { get_experience(); $('#classe_select').on('change', function() { get_experience(); }); }); $(document).ready(function(){ get_degat(); /*$('#type_canon').on('change',function() { get_degat(); });*/ }); // Récupération des données dans la base de données function get_experience(){ var ajaxData = { classe: $('#classe_select').val() }; $.ajax({ method: "POST", url: "includes/mon_ajax.php", data: ajaxData, dataType: 'json' }).done(function( jsonResult ) { $('#exp').val(jsonResult.experience); }).fail(function( jqXHR, textStatus ) { alert( "Request failed: " + textStatus ); }); } function get_degat(){ var ajaxData = { classe: $('#type_canon').val() }; console.log($('#type_canon').val()); $.ajax({ method: "POST", url: "includes/mon_ajax_degat.php", data: ajaxData, dataType: 'json' }).done(function( jsonResult ) { $('#DD_degat').val(jsonResult.valeur_degat); }).fail(function( jqXHR, textStatus ) { alert( "Request failed: " + textStatus ); }); }
voilà le code php associée au type de canon :
Visiblement, lorsque la fonction get_degat est appelée, la condition $_POST['type'])==0 est validée. Je ne comprend absolument pas pourquoi...
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 <?php // init bdd $bdd = mysqli_connect ( 'localhost:3306', 'root', 'root' ); mysqli_select_db ( $bdd, 'jdr' ); // if(isset($_POST['type'])==0){ echo 'aucune entrée'; } if(isset($_POST['type'])){ $query = 'SELECT type,degat FROM canon WHERE type ="' . $_POST['type'] . '";'; $result = mysqli_query ( $bdd, $query ); $query_result = array(); while($row = mysqli_fetch_assoc ( $result )){ $query_result[]['DD_degat']= $row['DD_degat']; } echo json_encode(array('valeur_degat' => $query_result[0]['DD_degat'])); } // fermeture bdd mysqli_close($bdd); ?>
Je vous remercie d'avance
Partager