Valeur JavaScript dans requete SQL
Résolu
Sinistrus
Messages postés
1010
Date d'inscription
Statut
Membre
Dernière intervention
-
Sinistrus Messages postés 1010 Date d'inscription Statut Membre Dernière intervention -
Sinistrus Messages postés 1010 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Sql javascript
- Telecharger javascript - Télécharger - Langages
- Logiciel sql - Télécharger - Bases de données
- Sql lister les tables ✓ - Forum Programmation
- Requête sql pix - Forum Python
- Javascript echo ✓ - Forum PHP
6 réponses
Bonjour,
A quoi correspond le code que tu viens de nous poster ?
Il n'y a aucun AJAX à l'intérieur... ne serait-ce pas le code APPELÉ par ton code ajax justement ?
Si oui... le javascript n'y a pas sa place !
Il serait bien que tu nous montres ton code ajax (en indiquant le nom de chaque fichier)
Aussi bien le Javascript... que côté PHP.
Ensuite, explique ce que tu désires réaliser.
là on pourra peut-être t'aider....
A quoi correspond le code que tu viens de nous poster ?
Il n'y a aucun AJAX à l'intérieur... ne serait-ce pas le code APPELÉ par ton code ajax justement ?
Si oui... le javascript n'y a pas sa place !
Il serait bien que tu nous montres ton code ajax (en indiquant le nom de chaque fichier)
Aussi bien le Javascript... que côté PHP.
Ensuite, explique ce que tu désires réaliser.
là on pourra peut-être t'aider....
Le Javascript s'exécute côté utilisateur (dans le navigateur) alors que le php s'exécute côté SERVEUR.
Tes variables JS ne peuvent pas être récupérées comme tu le fais dans un script php !
Ne mélange pas non plus le quotes et les backquotes ( 'table' n'est pas pareil que `table`)
Voici à quoi devrait ressembler ton code avec les corrections nécéssaires :
Tes variables JS ne peuvent pas être récupérées comme tu le fais dans un script php !
Ne mélange pas non plus le quotes et les backquotes ( 'table' n'est pas pareil que `table`)
Voici à quoi devrait ressembler ton code avec les corrections nécéssaires :
//recupération des variables de ton formulaire var c_Weig = $('#VAL_Weight').val(); var c_Deli = $('#VAL_Dlvry').val(); var c_Zone = $('#VAL_Zones').val(); var c_Table = c_Deli == "POSTE" ? "tb_laposte" : null; var c_Table = c_Deli == "DHL" ? "tb_dhl" : null; //on stocke les variables au format JSON pour les envoyer en ajax var data = {c_Weig:c_Weig, c_Deli:c_Deli, c_Table:c_Table,c_Zone:c_Zone }; //appel Ajax $.ajax({ type: "POST", url: "_calcul.php", cache: false, data: data, async: true, dataType: "json" }) .done(function(reponse){ var erreur = typeof(reponse.Error)!='undefined' ? reponse.Error : null; var result = typeof(reponse.result)!='undefined' ? reponse.result : null; if(!erreur){ if(result!=null){ console.log('Resultat',result);//affiche le résultat dans la console du navigateur //traitement du resultat //par exemple : var v=""; $.each(result,function(i,vx){ v += vx; } $("#VAL_Amunt").val(v); } }else{ alert('Erreur ajax !'); console.log('Erreur',erreur);//affiche l'erreur dans la console du navigateur } }) .fail(function(jqXHR, textStatus){ console.log('Ajax error :',jqXHR, textStatus); alert('Erreur AJAX !'); }); }
//ici tu placeras la connexion à ta bdd // par exemple: // require_once 'cnxBdd.php'; //récupération propre des variables avant de les utiliser $c_table = !empty($_POST['c_Table']) ? $_POST['c_Table']: NULL; $c_Weig = !empty($_POST['c_Weig']) ? $_POST['c_Weig']: NULL; $c_Deli = !empty($_POST['c_Deli']) ? $_POST['c_Deli']: NULL; $c_Zone = !empty($_POST['c_Zone']) ? $_POST['c_Zone']: NULL; $result = array(); if($c_table){ $sql = "SELECT * FROM `".$c_table."` WHERE `".$c_Weig."` >= Poids_min AND `".$c_Weig."` <= Poids_max AND(`".$c_Zone."` = 'ZoneA' OR `".$c_Zone."` = 'ZoneB' OR `".$c_Zone."` = 'Zone1' OR `".$c_Zone."` = 'Zone2' OR `".$c_Zone."` = 'Zone3' OR `".$c_Zone."` = 'Zone4' OR `".$c_Zone."` = 'Zone5' OR `".$c_Zone."` = 'Zone6' OR `".$c_Zone."` = 'Zone7' OR `".$c_Zone."` = 'Zone8'"; try{ $Stat = $pdo->prepare($sql); $Stat->execute(); $result['success'] = $Stat->fetchAll(PDO::FETCH_ASSOC)) }catch(PDOException $e){ $result['Error'] = "<div class='alert alert-danger'>".$e->getMessage()."</div>"; } } //on renvoi les données au javascript au format json echo json_encode($result); exit();
O_O !! Jordan !! je suis mort ! et dire que je comptais me débrouiller pour faire ça tout seul au début !!!
En tout cas merci pour ton aide !
Il y avait quelques erreurs de syntaxes que j'ai corrigé.
Je n'ai plus d'erreurs en tant que tels, mais la console me dit sur cette ligne :
Aussi, j'ai changé la requête en mettant ceci à sa place :
Malgré ça je n'ai pas de résultats dans mon input,
En tout cas merci pour ton aide !
Il y avait quelques erreurs de syntaxes que j'ai corrigé.
Je n'ai plus d'erreurs en tant que tels, mais la console me dit sur cette ligne :
$.each(result,function(i,vx)) {v += vx;}et me dit :
Uncaught SyntaxError: Unexpected token ).
Aussi, j'ai changé la requête en mettant ceci à sa place :
$sql = "SELECT `".$c_Zone."` FROM `".$c_table."` WHERE $c_Weig BETWEEN Poids_min AND Poids_max ";
Malgré ça je n'ai pas de résultats dans mon input,
Merci Jordan.
Dans un input, je récupère le poids total des produits.
Ensuite, je dois aller faire une comparaison dans une table afin d'avoir le prix selon le poids et la zone de livraison.
Je me suis dis que je dois utiliser Ajax pour rafraichir la page appelée toutes les X secondes et (oui tu as raison, c'est la page appelée)...
J'ai des valeurs dans des inputs qui s'actualise quand l'utilisateur choisis un service ou autre :
Le service : poste, dhl
La zone : A, B, 1 à 8 :
Le poids :
Voici ce que j'essaie de faire depuis quelques jours mais j'y arrive pas parce que je ne sais pas comment récupérer ces valeurs et les mettre dans ma requête.
J'ai essayé de ne pas me compliquer la vie avec des
Dans un input, je récupère le poids total des produits.
Ensuite, je dois aller faire une comparaison dans une table afin d'avoir le prix selon le poids et la zone de livraison.
Je me suis dis que je dois utiliser Ajax pour rafraichir la page appelée toutes les X secondes et (oui tu as raison, c'est la page appelée)...
J'ai des valeurs dans des inputs qui s'actualise quand l'utilisateur choisis un service ou autre :
Le service : poste, dhl
id="VAL_Delivery"
La zone : A, B, 1 à 8 :
id="VAL_Zone"
Le poids :
id="VAL_Weight"
Si le service est égale à poste, alors la table sql est tb_poste, sinon tb_dhl
Ensuite, une comparaison du poids doit se faire :
Si VAL_Weight >= tb_poste.poids_min ET VAL_Weight <= tb_poste.poids_max, affiche le prix selon la Zone
Voici ce que j'essaie de faire depuis quelques jours mais j'y arrive pas parce que je ne sais pas comment récupérer ces valeurs et les mettre dans ma requête.
J'ai essayé de ne pas me compliquer la vie avec des
GET['VAL_Delivery']mais j'y arrive toujours pas...
je ne sais pas comment récupérer ces valeurs et les mettre dans ma requête.
Ca se passe côté Javascript DANS la page qui fait l'appel AJAX. (que tu ne nous as toujours pas montré ! )
Au passage, (encore une fois....) merci de poster ton code en utilisant CORRECTEMENT les balises de code (pour que l'on ait la coloration syntaxique )
Explications sur l'utilisation des balises de code disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Désolé Jordan, JavaScript et Ajax... j'y connais rien encore, prends moi au niveau de mon ignorance :$
Lorsque l'utilisateur sélectionne ses services, ces zones de textes sont automatiquement renseignées comme suite :
index.php (page ajax) :
Dans cette même page, j'ai mon ajax qui rafraîchit une autre page où je souhaite faire ma requête :
Et donc insérer le montant du transport selon sa zone choisie dans
Ensuite donc dans mon _calcul.php :
Il y a certainement plus simple, mais j'avoue que j'ai une constipation cérébrale en ce moment... :\
Lorsque l'utilisateur sélectionne ses services, ces zones de textes sont automatiquement renseignées comme suite :
index.php (page ajax) :
Zone : <input name="VAL_Zones" id="VAL_Zones" value="A"> Delivery : <input name="VAL_Dlvry" id="VAL_Dlvry" value="POSTE"> Money : <input name="VAL_Money" id="VAL_Money" value="ORANGE"> Total weight : <input name="VAL_Weight" id="VAL_Weight" value="4.30142"> Amount weight : <input name="VAL_Amount" id="VAL_Amount" value="0">
Dans cette même page, j'ai mon ajax qui rafraîchit une autre page où je souhaite faire ma requête :
<script> function loadLog() { $.ajax({ url: "_calcul.php", cache: false, success: function(v) { $("#VAL_Amunt").val(v); }, }); } setInterval(loadLog, 1000); </script>
Et donc insérer le montant du transport selon sa zone choisie dans
id="VAL_Amount".
Ensuite donc dans mon _calcul.php :
<script> var c_Weig = $('#VAL_Weight').val(); var c_Deli = $('#VAL_Dlvry').val(); if(c_Deli == "POSTE") {var c_Table = "tb_laposte";} if(c_Deli == "DHL") {var c_Table = "tb_dhl";} </script> try{$Stat = $pdo->query("SELECT * FROM '".c_table."' WHERE '".$c_Weig."' >= Poids_min AND '".$c_Weig."' <= Poids_max AND '".$c_Zone."' = ZoneA OR '".$c_Zone."' = ZoneB OR '".$c_Zone."' = Zone1 OR '".$c_Zone."' = Zone2 OR '".$c_Zone."' = Zone3 OR '".$c_Zone."' = Zone4 OR '".$c_Zone."' = Zone5 OR '".$c_Zone."' = Zone6 OR '".$c_Zone."' = Zone7 OR '".$c_Zone."' = Zone8 "); while($data = $Stat->fetch(PDO::FETCH_ASSOC)) { $Montant = $data["ZoneA"].$data["ZoneB"].$data["Zone1"].$data["Zone2"].$data["Zone3"].$data["Zone4"].$data["Zone5"].$data["Zone6"].$data["Zone7"].$data["Zone8"]; }}catch(PDOException $e){echo "<div class='alert alert-danger'>".$e->getMessage()."</div>";}
Il y a certainement plus simple, mais j'avoue que j'ai une constipation cérébrale en ce moment... :\
Ligne corrigée, coquilles et valeurs nettoyées, aucune erreur console mais pas de résultats.
Penses-tu que j'ai oublié quelque chose ?
Voici le script de ma page d'accueil ;
Et celui de ma page calcul :
Penses-tu que j'ai oublié quelque chose ?
Voici le script de ma page d'accueil ;
//recupération des variables de ton formulaire var c_Weig = $('#VAL_Weigt').val(); var c_Deli = $('#VAL_Dlvry').val(); var c_Zone = $('#VAL_Zones').val(); var c_Table = c_Deli == "POSTE" ? "tb_shop_prices_laposte" : null; var c_Table = c_Deli == "DHL" ? "tb_shop_prices_dhl" : null; //on stocke les variables au format JSON pour les envoyer en ajax var data = { c_Weig: c_Weig, c_Deli: c_Deli, c_Table: c_Table, c_Zone: c_Zone }; //appel Ajax $.ajax({ type: "POST", url: "_shop-calcul.php", cache: false, data: data, async: true, dataType: "json" }) .done(function(reponse) { var erreur = typeof(reponse.Error) != 'undefined' ? reponse.Error : null; var result = typeof(reponse.result) != 'undefined' ? reponse.result : null; if (!erreur) { if (result != null) { console.log('Resultat', result); //affiche le résultat dans la console du navigateur //traitement du resultat //par exemple : var v = ""; $.each(result, function(i, vx) { v += vx; }); $("#VAL_Amunt").val(v); } } else { alert('Erreur ajax !'); console.log('Erreur', erreur); } }) .fail(function(jqXHR, textStatus) { console.log('Ajax error :', jqXHR, textStatus); alert('Erreur AJAX !'); });
Et celui de ma page calcul :
<?php $c_Table = !empty($_POST['c_Table']) ? $_POST['c_Table']: NULL; $c_Weig = !empty($_POST['c_Weig']) ? $_POST['c_Weig']: NULL; $c_Deli = !empty($_POST['c_Deli']) ? $_POST['c_Deli']: NULL; $c_Zone = !empty($_POST['c_Zone']) ? $_POST['c_Zone']: NULL; $result = array(); if($c_Table){ $sql = "SELECT `".$c_Zone."` FROM `".$c_Table."` WHERE `".$c_Weig."` BETWEEN Poids_min AND Poids_max "; try{ $Stat = $pdo->prepare($sql); $Stat->execute(); $result['success'] = $Stat->fetchAll(PDO::FETCH_ASSOC); } catch(PDOException $e) {$result['Error'] = "<div class='alert alert-danger'>".$e->getMessage()."</div>";} } echo json_encode($result); exit(); ?>
Tu nous as collé le code complet la ??
Car si oui... tu as légèrement oublié de mettre le code de connexion à la bdd..... (alors que c'était quand même marqué dans les commentaires du code que je t'ai donné !!! )
N'oublies pas non plus de regarder dans la CONSOLE de ton navigateur afin de voir ce que retourne l'appel ajax.
(de préférence utilise Firefox ou sinon installe le plugin ajax debuger pour chrome )
Car si oui... tu as légèrement oublié de mettre le code de connexion à la bdd..... (alors que c'était quand même marqué dans les commentaires du code que je t'ai donné !!! )
N'oublies pas non plus de regarder dans la CONSOLE de ton navigateur afin de voir ce que retourne l'appel ajax.
(de préférence utilise Firefox ou sinon installe le plugin ajax debuger pour chrome )
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Tu as bien placé le code javascript dans la fonction loadLog() ?
Cette fonction est appellée par quel moyen ?
Il serait bien que tu nous montres le code html COMPLET de ta page....
Pense aussi que tu peux ajouter, dans ton code JS des console.log() et/ou des alerte() pour essayer de voir si tu entres bien dedans....
Pense aussi à regarder (comme dans ma capture écran....) dans l'onglet "network"
Cette fonction est appellée par quel moyen ?
Il serait bien que tu nous montres le code html COMPLET de ta page....
Pense aussi que tu peux ajouter, dans ton code JS des console.log() et/ou des alerte() pour essayer de voir si tu entres bien dedans....
Pense aussi à regarder (comme dans ma capture écran....) dans l'onglet "network"
Il faudrait regarder dans l'onglet paramètres.
Je pense que cela vient de la variable c_Table
modifie le code JS comme ceci :
A remplacer par
Je pense que cela vient de la variable c_Table
modifie le code JS comme ceci :
var c_Table = c_Deli == "POSTE" ? "tb_shop_prices_laposte" : null; var c_Table = c_Deli == "DHL" ? "tb_shop_prices_dhl" : null;
A remplacer par
var c_Table; switch(c_Deli){ case "POSTE": c_Table = "tb_shop_prices_laposte"; break; case "DHL" : c_Table = "tb_shop_prices_dhl"; break; default: c_Table = null; break; }
Le code a été modifié comme tu as demandé.
La console n'affiche aucune erreur.
J'ai changé le nom de la table en attribuant une table inexistante, il affiche une erreur comme quoi cette table n'existe pas. Ce qui dit qu'il récupère bien le nom de la table... mais pourquoi il n'affiche rien ?
J'ai changé ma requête de
en
sachant que $c_Weig es un float, mais pareil.
La console n'affiche aucune erreur.
J'ai changé le nom de la table en attribuant une table inexistante, il affiche une erreur comme quoi cette table n'existe pas. Ce qui dit qu'il récupère bien le nom de la table... mais pourquoi il n'affiche rien ?
J'ai changé ma requête de
SELECT `".$c_Zone."` FROM `".$c_Table."` WHERE `".$c_Weig."` BETWEEN Poids_min AND Poids_max
en
SELECT $c_Zone FROM $c_Table WHERE $c_Weig BETWEEN Poids_min AND Poids_max
sachant que $c_Weig es un float, mais pareil.