Bonjour,
Je suis en train d'essayer de faire un formulaire avec un autocomplete et un champs qui doit se remplir en fonction des données entrées dans le champ précédent, les données venant de la base de données et tout çà dans Worpdress...
Pour les autocomplete, pas de problème, çà marche avec Wordpress, j'ai juste ajouté un petit bout de code du type :
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $("#nomPersonne").autocomplete ({ source: 'wp-content/themes/hero-child/listePersone.php' });
Et une page listePersonne comme ceci :
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 <?php include_once 'connexion.php'; $term = $_GET['term']; $requete = $link->prepare("SELECT `wp_terms`.`name` FROM `wp_term_taxonomy` JOIN `wp_terms` ON `wp_terms`.`term_id`=`wp_term_taxonomy`.`term_id` WHERE `wp_term_taxonomy`.`taxonomy`='nomPersonne' AND `wp_terms`.`name` LIKE :term"); $requete->execute(array('term' => '%' . $term . '%')); $array = array(); // on créé le tableau while ($donnee = $requete->fetch()) { // on effectue une boucle pour obtenir les données array_push($array, $donnee['name']); // et on ajoute celles-ci à notre tableau } echo json_encode($array); // il n'y a plus qu'à convertir en JSON ?>
Donc, la liste des personnes apparait et lorsque l'on en sélectionne une personne (si on en trouve une qui convient), la liste des organisations qui suit devra ne lister que la(es) organisation(s) de la personne sélectionnée dans la liste ci-dessus.
Je me suis pris la tête avec Ajax avant de découvrir qu'il fallait utiliser une instruction propre à Wordpress :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part add_action('wp_ajax_do_ajax', 'notre_fonction_ajax');
Par contre, je ne parviens toujours pas à faire passer ma variable (valeur de nomPersonne) pour pouvoir faire ma reqête pour le champ suivant.
J'ai donc un fichier JS :
Code javascript : 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 jQuery(document).ready(function(){ jQuery('#nomPersonne').mouseleave(function(){ doAjaxRequest(); }); }); function doAjaxRequest(){ jQuery.ajax({ url: 'wp-admin/admin-ajax.php', data:{ 'action':'do_ajax', 'fn':'get_id_value' }, dataType: 'JSON', success:function(data){ jQuery("#nomOrgani").html(data); }, error: function(errorThrown){ alert('error'); console.log(errorThrown); } }); }
Ma fonction dans function.php :
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 function notre_fonction_ajax(){ // ce switch lancera les fonctions selon la valeur qu'aura notre variable 'fn' switch($_REQUEST['fn']){ case 'get_id_value': $output = ajax_get_id_value($_REQUEST['count']); break; default: $output = 'No function specified, check your jQuery.ajax() call'; break; } // Maintenant nous allons transformer notre résultat en JSON et l'afficher $output=json_encode($output); if(is_array($output)){ print_r($output); } else{ echo $output; } die; } function ajax_get_id_value(){ function ajax_get_id_value(){ include_once 'connexion.php'; $term = $_GET['term']; $requete = $link->prepare("SELECT `wp_postmeta`.`meta_value` FROM `wp_postmeta` JOIN `wp_term_relationships` ON `wp_postmeta`.`post_id` = `wp_term_relationships`.`object_id` JOIN `wp_term_taxonomy` ON `wp_term_relationships`.`term_taxonomy_id` = `wp_term_taxonomy`.`term_taxonomy_id` JOIN `wp_terms` ON `wp_terms`.`term_id` = `wp_term_taxonomy`.`term_id` WHERE `wp_terms`.`name` = 'Malaysia Airlines' AND `wp_postmeta`.`meta_key`='organization' AND `wp_postmeta`.`meta_value` LIKE :term "); $requete->execute(array('term' => '%' . $term . '%')); $array = array(); // on créé le tableau while ($donnee = $requete->fetch()) { // on effectue une boucle pour obtenir les données array_push($array, $donnee['meta_value']); // et on ajoute celles-ci à notre tableau } echo json_encode($array); // il n'y a plus qu'à convertir en JSON } }
Dans ce dernier fichier, j'ai "mis en du "Malaysia Airlines" mais c'est en fait cette variable que je devrais récupérer.
Quand je regarde dans Firebug, je vois bien la réponse : ["Malaysia Airlines"] sur la console mais je ne parviens pas à récupérer cette valeur pour l'utiliser dans ma requête ensuite
Bref, je viens de finir ma formation, je suis en stage et j'ai un peu de mal à mettre faire travailler ensemble tous les langages, CMS, etc...
Bref j'ai la cervelle en compote... Si quelqu'un a quelques lumières, je vous en serai éternellement reconnaissante !
Kaelig.
Partager