Ajax, récupération d'une valeur au clic

Petit nouveau ! | 9 Messages

01 sept. 2016, 16:09

Bonjour,
J'ai vraiment du mal à comprendre ce satané ajax...
Du coup je récapépete depuis le debut :

Le principe de mon application web c'est :

Une liste déroulante est créée en fonction des tables de la base de données postgres (ca c'est ok)

Quand on choisi un élément de cette liste un tableau avec les valeurs de cette table est affiché (ca c'est ok aussi :) )

Ensuite j'aimerai que quand on click sur un bouton (Voir) on affiche un résultat en fonction de l'élément sélectionné dans la liste déroulantes. (ca c'est pas ok :/)

Tout ça se passe bien sûr en ajax.

Voici mes codes :

L'ajax : (chargerCouches et chargerTableau fonctionnent très bien, ce qui ne fonctionne pas c'est chargerCouchesC et chargerC)

Code : Tout sélectionner

$(".button-collapse").sideNav(); $(document).ready(function(){ chargerCouches(); }); function chargerCouches(){ $.get("list.php",function(reponse){ $(".return").html(reponse); $("#list_other").change(function(){ chargerTableau($(this).val())}); }); } function chargerTableau(Na){ $.get("result.php?list_other="+Na,function(reponse){ $(".afficher").html(reponse); }); } function chargerCouchesC(){ $.get("map_list.php",function(reponse){ $(".return").html(reponse); $("#list_other").change(function(){ chargerC($(this).val())}); }); } function chargerC(Na){ $.get("map_list.php?list_other="+Na,function(reponse){ $(".afficher").html(reponse); }); }

La page map_list.php (qui récupère les données de la base de données et les transformes en geojson, j'ai testé ce script il fonctionne, le souci je pense que c'est vraiment le ajax avec encore l'erreur au clic du bouton : Notice: Undefined index: list_other in C:\Users\postgres\Documents\smiddest\map_list.php on line 8)

Code : Tout sélectionner

<?php require ("connect.php"); ?> <?php $name = $_GET['list_other']; $qry = $bdd->prepare("SELECT date, remarq, ST_ASGeoJSON(ST_Transform(geom,4326)) AS geojson FROM other_map.$name"); $qry->execute(); // Renvoit un chemin au format GeoJSON $geojson = array("type" => "FeatureCollection", "features" => array() ); // Ajouter un tronçon au tableau GeoJSON while($row=$qry->fetch()) { $feature = array( "type" => "Feature", "geometry" => json_decode($row["geojson"], true), "crs" => array( "type" => "EPSG", "properties" => array("code" => "2154") ), "properties" => array( "date" => $row["date"], "remarq" => $row["remarq"], ) ); // Ajouter un tableau d"éléments au tableau de collection d"éléments array_push($geojson["features"], $feature); } // Fermeture de la connexion $bdd = null; // Renvoyer le résultat echo json_encode($geojson); ?>
Et enfin un bout de la page où la liste s'affiche et où j'aimerai bien appeler le fichier map_list.php (avec la valeur de la liste déroulante ce qui ferai map_list.php?list_other=$name )

Code : Tout sélectionner

<input type="button" name="bout" value="Voir" onclick="chargerCouchesC();"/>
La où sont afficher les données :

Code : Tout sélectionner

<div id="map"></div> <div class="other"> <div> <div class='return'></div> </div> <div> <div class="afficher"></div> </div> </div>
Bon après en réel je voudrais afficher, suite au clic du bouton "voir", le geojson générer par map_list.php dans openslayers...

Merci pour votre aide et n'hésitez pas si je n'ai pas été assez clair :)

Eléphant du PHP | 176 Messages

01 sept. 2016, 18:59

Bonjour !

Code : Tout sélectionner

function chargerCouchesC(){ $.get("map_list.php",function(reponse){ $(".return").html(reponse); $("#list_other").change(function(){ chargerC($(this).val())}); }); }
Dans cette fonction tu fais un première appel à map_list.php sans aucun paramètre.
Du coup quand map_list.php va faire son traitement
$name = $_GET['list_other'];
list_other n'existe pas
Cordialement
Naroth

Petit nouveau ! | 9 Messages

01 sept. 2016, 19:16

Il ne faut pas que j'appel map_list.php dès le départ du coup ? :)

Eléphant du PHP | 176 Messages

02 sept. 2016, 00:09

Ca dépend, la fonction chargerCouchesC est sensé faire quoi ?
Cordialement
Naroth

Petit nouveau ! | 9 Messages

02 sept. 2016, 09:27

Elle est censé récupérer la valeur de la liste déroulante pour ensuite l'affecter à map_list.php. Dans le même temps il faut que je trouve une astuce pour que la fonction qui va afficher la tables dans "openlayers" s'active. J'ai déjà la fonction il faut juste que je trouve comment faire pour l'appeler...

Petit nouveau ! | 9 Messages

06 sept. 2016, 10:03

Personne ? :(

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 sept. 2016, 14:17

il faut appeler chargerCouchesC que lorsque tu clic que le bouton et la valeur a passer c'est ce qu'il y a dans $("#list_other")

au tes fonctions font toutes la même chose, faudrait factoriser un peu tout cela ;)

quoi qu'il arrive tu aura toujours ton erreur avec chargerCouchesC qui appel map_list.php sans paramètre.
A vu de nez tu as une fonction de trop (map_list).


@+
Il en faut peu pour être heureux ......