Passage variable javascrip à un php [Résolu]

Signaler
Messages postés
58
Date d'inscription
samedi 6 avril 2013
Statut
Membre
Dernière intervention
14 juin 2021
-
Messages postés
58
Date d'inscription
samedi 6 avril 2013
Statut
Membre
Dernière intervention
14 juin 2021
-
Bonjour,

Je n'arrive pas à passer une variable javascript à un php pour effectuer une recherche dans une base données.

Javascript :
var id=3;
$.post('php/fonctions_meteo.inc.php',{idsite: id});


php :
echo json_decode ($id = $_POST['idsite']);


Est-ce que selon vous ces lignes suffisent ou j'ai manqué quelque chose ? Ou alors le problème ne vient pas du transfert ni de la réception mais d'autre chose ?

Merci à vous


Configuration: Windows / Chrome 91.0.4472.77

6 réponses

Messages postés
33033
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 juin 2021
3 582
Bonjour,

Ne sachant pas d'où vient ta variable $_POST['idsite'] ni ce qu'elle contient.. difficile de te répondre avec précision.

mais on peut partir d'un truc du genre ( attention, code à garder dans un fichier .php pour que ça fonctionne )
var id= '<?php echo $_POST['idsite'];?>';
$.post('php/fonctions_meteo.inc.php',{idsite: id});


.
Cordialement,
Jordane
Messages postés
58
Date d'inscription
samedi 6 avril 2013
Statut
Membre
Dernière intervention
14 juin 2021

Pour moi $_POST['idsite'] c'était la réception de la variable envoyé en javascript. Je me trompe alors ?

Une autre question cette ligne je l'ai mise hors fonction dans mon php :
echo json_decode ($id = $_POST['idsite']);

Donc est-ce qu'ensuite après avoir reçu ma variable je peux faire appel à une fonction de mon php se servant de cette variable $id ou est-ce qu'elle aura été effacé ?
Messages postés
33033
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 juin 2021
3 582
Ah.. je n'avais pas compris
Donc; oui, tu fais de l'ajax

Donc, une fois les données envoyées depuis JS, tu peux récupérer dans le code php
$id = $_POST['idsite'];
Messages postés
58
Date d'inscription
samedi 6 avril 2013
Statut
Membre
Dernière intervention
14 juin 2021
>
Messages postés
33033
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 juin 2021

Peux-tu me répondre à la 2ème question please

J'ai oublíé de préciser aussi que pour la demande GETjson je passe par un autre php relais avec getAdr qui appelle getAdresse()
Messages postés
33033
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 juin 2021
3 582 >
Messages postés
58
Date d'inscription
samedi 6 avril 2013
Statut
Membre
Dernière intervention
14 juin 2021

echo sert à "afficher"
json_decode ..sert à décoder une string qui serait au format json
json_decode attend donc une string ..là .. tu y mets le résultat de l'assignation d'une variable ..

Donc, on reprend...
Si tu veux stocker le contenu de ta variable PSOT dans une variable, tu fais :
$id = $_POST['idsite'];


ensuite, cette variable .. tu en fais ce que tu veux...

si tu la déclares en dehors de tes fonctions, tu dois, soit passer cette variable en paramètre de cette fonction.... soit utiliser le mot clé "global" (je te recommande d'utiliser les paramètres !

donc

function getAdresse($id){



et donc, pour appeller ta fonction dans ton code :
$id = $_POST['idsite'];
$res =  getAdresse($id);
Messages postés
58
Date d'inscription
samedi 6 avril 2013
Statut
Membre
Dernière intervention
14 juin 2021

Voici les codes :

J'envoie avec la fonction site1 ma variable pour définir l'id de la ligne de la bdd à récupérer et ensuite la récupérer avec la variable resultat. La récupération fonctionne bien si je défini une constante dans le php dès le départ mais comment faire en récupérant la variable du js ?

function geolocalisation()
{

$.getJSON('php/controleur.php', {action: 'getAdr'})
.done(function (resultat, status, xhr) {
var lonlat = resultat;
marqueurDyna = L.marker([lonlat[1], lonlat[0]]).addTo(maCarte);
groupe.addLayer(marqueurDyna);
maCarte.fitBounds(groupe.getBounds()); // recentrer la carte
})
.fail(function (xhr, status, error) {
console.log(xhr);
console.log(status);
console.log(error);
});



}
$(window).on('load', initCarte);
  • / function site1() {var id=3;$.post('php/fonctions_meteo.inc.php',{idsite: id});$("#nomsite").empty(); $("#nomsite").append("Lycée Fourc"); geolocalisation(); }


<?php

define("SERVEURBD", "localhost");
define("LOGIN", "root");
define("MOTDEPASSE", "");
define("NOMDELABASE", "stations_meteo");

echo json_decode (const IDSITE = $_POST['idsite']);
function connexionBdd(){
try {
$pdoOptions = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);
$bdd = new PDO('mysql:host=' . SERVEURBD . ';dbname=' . NOMDELABASE, LOGIN, MOTDEPASSE, $pdoOptions);
$bdd->exec("set names utf8");
return $bdd;
} catch (PDOException $e) {
print "Erreur !: " . $e->getMessage() . "<br/>";
die();
}
}


function getAdresse(){


try {
// connexion à la base de données
$bdd = connexionBdd();
$requete = $bdd->prepare("SELECT longitude, latitude FROM site WHERE id=:id;");
$id = IDSITE; // on ne peut pas fournir une constante en 2nd parametre de bindParam, il faut donc définir une variable contenant la bonne valeur
$requete->bindParam(":id", $id);
// execution de la requete
$requete->execute() or die(print_r($requete->errorInfo()));
$ligne = $requete->fetch();
if ($requete->rowCount() == 1) {
$resultat = array($ligne["longitude"], $ligne["latitude"]);
}

// libération de la ressource
$requete->closeCursor();
//envoyer les données au format json
header('Content-Type: application/json');
echo json_encode($resultat);
} catch (PDOException $e) {
print "Erreur !: " . $e->getMessage() . "<br/>";
die();
}
Messages postés
58
Date d'inscription
samedi 6 avril 2013
Statut
Membre
Dernière intervention
14 juin 2021

Ou je peux aussi mettre mon
$id = $_POST['idsite'];
directement dans ma fonction aussi avant la requête de bdd ?

Sinon quoique je fasse j'ai toujours cette erreur. C'est quoi cette histoire de clé de tableau ? (ligne 8 c'est la ligne du $_POST)
Messages postés
58
Date d'inscription
samedi 6 avril 2013
Statut
Membre
Dernière intervention
14 juin 2021

Tu as supprimé mon doublon alors tu peux peut-être répondre à ma question ?
Messages postés
33033
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 juin 2021
3 582
A qui tu parles ?
A moi ?
Non, je n'ai pas supprimé ton "doublon"

Par contre... Ton script n'est pas clair du tout ....

Je ne comprend pas pourquoi tu fais un POST et un GET sur le même fichier .....


Soit tu fais un POST .... soit tu fais un GET.
Dans les deux cas, tu peux envoyer des données du javascript vers le PHP ... et dans les deux cas... tu peux recevoir les données provenant du script php et les utiliser ensuite dans le js...
tu n'as pas besoin ( d'ailleurs ça ne marche pas comme ça !! ) de faire le post pour envoyer l'id et le get pour lire le résultat... ( je ne sais pas où tu as trouvé ça.. mais non !! )
Messages postés
58
Date d'inscription
samedi 6 avril 2013
Statut
Membre
Dernière intervention
14 juin 2021

Ok merci c'est bon j'ai trouvé la solution en passant de paramètres en paramètres.