Passage variable javascrip à un php

Résolu/Fermé
ceda13 Messages postés 84 Date d'inscription samedi 6 avril 2013 Statut Membre Dernière intervention 4 août 2023 - 7 juin 2021 à 16:03
ceda13 Messages postés 84 Date d'inscription samedi 6 avril 2013 Statut Membre Dernière intervention 4 août 2023 - 8 juin 2021 à 21:41
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
A voir également:

6 réponses

jordane45 Messages postés 38429 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 février 2025 4 735
Modifié le 7 juin 2021 à 16:05
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});


0
ceda13 Messages postés 84 Date d'inscription samedi 6 avril 2013 Statut Membre Dernière intervention 4 août 2023
7 juin 2021 à 16:17
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é ?
0
jordane45 Messages postés 38429 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 février 2025 4 735
7 juin 2021 à 16:55
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'];
0
ceda13 Messages postés 84 Date d'inscription samedi 6 avril 2013 Statut Membre Dernière intervention 4 août 2023 > jordane45 Messages postés 38429 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 février 2025
7 juin 2021 à 17:49
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()
0
jordane45 Messages postés 38429 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 février 2025 4 735 > ceda13 Messages postés 84 Date d'inscription samedi 6 avril 2013 Statut Membre Dernière intervention 4 août 2023
7 juin 2021 à 18:02
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);
0
ceda13 Messages postés 84 Date d'inscription samedi 6 avril 2013 Statut Membre Dernière intervention 4 août 2023
Modifié le 7 juin 2021 à 17:10
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();
}
0
ceda13 Messages postés 84 Date d'inscription samedi 6 avril 2013 Statut Membre Dernière intervention 4 août 2023
Modifié le 7 juin 2021 à 18:22
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)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ceda13 Messages postés 84 Date d'inscription samedi 6 avril 2013 Statut Membre Dernière intervention 4 août 2023
8 juin 2021 à 10:25
Tu as supprimé mon doublon alors tu peux peut-être répondre à ma question ?
0
jordane45 Messages postés 38429 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 février 2025 4 735
8 juin 2021 à 10:37
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 !! )
0
ceda13 Messages postés 84 Date d'inscription samedi 6 avril 2013 Statut Membre Dernière intervention 4 août 2023
8 juin 2021 à 21:41
Ok merci c'est bon j'ai trouvé la solution en passant de paramètres en paramètres.
0