Tester l'existence des données dans sql javascript
j'ai un formulaire qui contient 4 champs : année , mois , V1 et V2 (valeurs), et pour les valeurs je le rentre selon l'année , je veux faire un test javascript quand je clique sur l'année s'il y a des données pour cette année il va m'afficher le formulaire remplit si il y a pas des données il va m'afficher le formulaire vide , quelqu'un peut m'aider , merci d'avance.
60 réponses
Le problème porte sur un formulaire à quatre champs (année, mois, V1 et V2) où un test JavaScript doit charger les données existantes pour une année et afficher le formulaire pré-rempli, sinon vide. Plusieurs réponses préconisent d’utiliser jQuery et AJAX: déclencher un appel PHP via GET lorsque l’année change, recevoir des données au format JSON et pré-remplir les champs du formulaire selon mois disponibles. En pratique, il est suggéré d’itérer sur les éléments retournés et d’assigner les valeurs aux champs identifiés par mois afin que V1 et V2 reflètent les données existantes. Par ailleurs, certaines contributions recommandent d’afficher la requête SQL côté serveur lors du débogage (echo $sql) pour vérifier que l’année utilisée correspond bien à l’entrée attendue.
-
est ce que vous avez reçu mon mail
-
merci pour votre adresse une minute et je vous envoie tous
-
fais moi une réponse avec un copier coller de chacun des 3 fichiers s'il te plait
Enjoy! -
ça change rien pour moi l'année toujours in définie et si je clique sur une année qu'a déjà de valeurs il me laisse toujours dans la même page sans rien changer :(:( :( ça va me rendre folle :(:(
-
j'ai supprimé les echo et les print_r , j'ai remplacé la ligne :
//$sql1 = 'SELECT * FROM parmetres WHERE annee = 1994'; par
$sql1 = "SELECT * FROM parmetres WHERE annee = '".$_GET['annee']."'";
alors il a rien fait comme teste il m'a affiché le même erreur annee indifinie :(
et pour le teste je veux si une année sélectionné a des valeurs dans la BD il m'affiche le formulaire remplit c'à adire le teste avec la partie ajax il vont récupérer les valeur si il y a pas de valeurs il va m'afficher le formulaire vide , pour le console et network il affiche l'année sélectionnée ça marche ça -
et pour finir, dans le fichier parametre.php il faut supprimer tous les "echo" et les print_r à part echo json_encode($myArray);
-
une dernière modification: dans ton fichier principal (index.php ?) tu vas devoir changer les id sur deux lignes:
echo '<input type="text" name="Precipitation['.$n.']" id="Precipitation'.$n.'" />'; echo '<input type="text" name="Evap_eau['.$n.']" id= "Evap_eau'.$n.'" value="" />';
-
il va falloir faire quelques modifications:
pour le fichier test.js tu as juste à le remplacer intégralement par ça:
$(function() { $("#annee").change(function() { console.log($('#annee').val()); $.getJSON('transactions/parametre.php', { annee: $("#annee").val() }, function(data) { if(data) { for(var i in data) { console.log("mois : "+data[i]['mois']+" - precipitation :"+data[i]['Precipitation']); $("#Precipitation"+data[i]['mois']).val(data[i]['Precipitation']); $("#Evap_eau"+data[i]['mois']).val(data[i]['Evap_eau']); } } else return false; }); }); });
-
ahhhhh cool! attends je vérifie quelque chose rapidement je te dis ce que tu vas devoir modifier
-
c'est bon ça marche pour l'année 1994 enfin voilà
Array ( ) SELECT * FROM parmetres WHERE annee = 1994[{"annee":"1994","Mois":"1","Precipitation":"1","Evap_eau":"1"},{"annee":"1994","Mois":"2","Precipitation":"1","Evap_eau":"7"},{"annee":"1994","Mois":"3","Precipitation":"2","Evap_eau":"3"},{"annee":"1994","Mois":"4","Precipitation":"4","Evap_eau":"4"},{"annee":"1994","Mois":"5","Precipitation":"5","Evap_eau":"5"},{"annee":"1994","Mois":"6","Precipitation":"6","Evap_eau":"6"},{"annee":"1994","Mois":"7","Precipitation":"7","Evap_eau":"7"},{"annee":"1994","Mois":"8","Precipitation":"8","Evap_eau":"8"},{"annee":"1994","Mois":"9","Precipitation":"9","Evap_eau":"9"},{"annee":"1994","Mois":"10","Precipitation":"10","Evap_eau":"10"},{"annee":"1994","Mois":"11","Precipitation":"11","Evap_eau":"11"},{"annee":"1994","Mois":"12","Precipitation":"12","Evap_eau":"12"}],
là on peut continuer -
j'arrive pas à comprendre pour chez moi ça marche pas pour il ne prend pas les valeurs insérées en considération :(:(
-
par contre j'ai essayé d'exécuter la requête dans sql il m'a affiché :
MySQL a retourné un résultat vide (aucune ligne) et il prend pas en fait les valeurs qui sont dans la bases il prend juste la première ligne et si je le fasse il va afficher rien même dans la page web . -
c'est bizarre là ça fonctionne O_o'
par contre une précision pourquoi il y a un mois à 0? c'est pas de 1 à 12 les mois?
peux tu me copier coller l'ensemble de ton fichier parametre.php ici que je vois bien tout?
merci
-
il m'a affiché ça sans erreur :
Array ( ) SELECT * FROM parmetres WHERE annee = "1993"[{"annee":"1993","Mois":"0","Precipitation":"0","Evap_eau":"0"},{"annee":"1993","Mois":"6","Precipitation":"2","Evap_eau":"2"}] -
me revoila.
Bon si on fait un select * from parametre WHERE annee = "1993" directement dans phpmyadmin ça donne quoi?
ajoute aussi un echo $sql; juste après la déclaration de la variable comme ça:
$sql = 'SELECT * FROM parametre WHERE annee = "'.$_GET['annee'].'"'; echo "la requête est: - " echo $sql;
il devrait y avoir dans le network de chrome la requête qui s'affiche -
d'accord je vous attends et au même temps je suis entrain de chercher d'ou vient l'erreur à tout de suite :)
-
ça change rien et aussi pour toutes les années il m'affiche les même valeurs même si l'année en question elle a pas des valeurs dans la base sql :
{"values":[{"annee":"0","Mois":"0","Precipitation":"1","Evap_eau":"0"},{"annee":"0","Mois":"6","Precipitation":"6","Evap_eau":"6"},{"annee":"0","Mois":"13","Precipitation":"2","Evap_eau":"13"}]}
j'arrive pas à comprendre pourquoi :(-
-
-
-
il m'a afficher ça
Array ( [0] => Array ( [annee] => 0 [Mois] => 0 [Precipitation] => 1 [Evap_eau] => 0 ) [1] => Array ( [annee] => 0 [Mois] => 6 [Precipitation] => 6 [Evap_eau] => 6 ) [2] => Array ( [annee] => 0 [Mois] => 13 [Precipitation] => 2 [Evap_eau] => 13 ) ) [{"annee":"0","Mois":"0","Precipitation":"1","Evap_eau":"0"},{"annee":"0","Mois":"6","Precipitation":"6","Evap_eau":"6"},{"annee":"0","Mois":"13","Precipitation":"2","Evap_eau":"13"}]
pour toute les années , par contre dans le network il affiche parametre.php=> année selectionée
-
-
c'est étonnant, parcequ'il fait quand même la requête. il faudrait savoir à quelle variable "annee" il fait référence.
sinon en attendant tu peux aussi modifier le fichier test.js comme ça:
$(function() { $("#annee").change(function() { console.log($('#annee').val()); $.getJSON('transactions/parametre.php', { annee: $("#annee").val() }, function(data) { if(data) { console.log(data); for(var i in data) { $("#Precipitation"+data[i]['mois']).val(data[i]['Precipitation']); $("#Evap_eau"+data[i]['mois']).val(data[i]['Evap_eau']); } } else return false; }); }); });
-
d'accord , après on fait quoi , le problème pour moi pourquoi il considère l'annee comme indifinie ??
-
ok ça marche quand même un peu ça avance ça retourne à peut près ce que j'espérais
-
c'est bizarre là il dit qu'il connait pas l'annee. bon on va quand même changer quelques trucs
ton fichier parametre.php doit ressembler à ça:$myArray = array(); $sql = "SELECT * FROM parametre WHERE annee = '".$_GET['annee']."'"; if ($result = $db->query($sql)) { while($row = $result->fetch_array(MYSQL_ASSOC)) { $myArray[] = $row; } echo json_encode($myArray); } $result->close(); $db->close(); ?> -
-
-
- 1
- 2
- 3