Tester l'existence des données dans sql javascript

AMARI -  
Natio78 Messages postés 742 Statut Membre -
Bonjour,
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.
A voir également:

60 réponses

Natio78 Messages postés 742 Statut Membre 96
 
ok ça marche quand même un peu ça avance ça retourne à peut près ce que j'espérais
0
Natio78 Messages postés 742 Statut Membre 96
 
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(); 
?>
0
AMARI
 
j'ai fait copier coller et il m'affiche que l'annee est indifinie ???
0
Natio78 Messages postés 742 Statut Membre 96
 
ajoute en haut du fichier php:

<?php
  print_r($_GET);
?>


et regarde dans l'onglet network du debug de chrome sur le fichier parametre.php si tu as bien un truc du genre : annee => 1993 (enfin l'année sur laquelle tu auras cliqué).
0
AMARI
 
d'accord , après on fait quoi , le problème pour moi pourquoi il considère l'annee comme indifinie ??
0
Natio78 Messages postés 742 Statut Membre 96
 
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;
		});
	});
});

0
AMARI
 
ç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 :(
0
Natio78 Messages postés 742 Statut Membre 96
 
avec le nouveau code php que je t'ai donné tu ne devrais pas avoir ça comme retour ("values":[ ne devrait plus être là).
ajoute un print_r($myArray) juste avant le echo json_encode($myArray); et dit moi ce que ça donne
0
Natio78 Messages postés 742 Statut Membre 96
 
tiens et tu peux remplacer la ligne $sql = ...... ; par ça :
$sql = 'SELECT * FROM parametre WHERE annee = "'.$_GET['annee'].'"';
0
Natio78 Messages postés 742 Statut Membre 96
 
rassure toi on touche au but, une fois que ça fonctionnera on sera bien, chez moi tout fonctionne déjà. il manque plus que la requête se fasse bien à la bdd.
Je vais fumer une cigarette je reviens dans 10/15 minutes. essaie de trouver une solution ^^
0
AMARI
 
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
0

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

Posez votre question
AMARI
 
d'accord je vous attends et au même temps je suis entrain de chercher d'ou vient l'erreur à tout de suite :)
0
Natio78 Messages postés 742 Statut Membre 96
 
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
0
AMARI
 
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"}]
0
Natio78 Messages postés 742 Statut Membre 96
 
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
0
AMARI
 
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 .
0
Natio78 Messages postés 742 Statut Membre 96
 
de quel type est le champ annee? int? float? varchar?
0
AMARI
 
l'annee de type Year , en fait j'ai presque 3 ou bien 4 année qui ont des valeurs dans BD mais la requête ne le prends pas en considération c'est pour ça il m'affiche le mois 0 , même si j'efface la 1ére ligne de BD il va afficher tout en 0 . :(
0
Natio78 Messages postés 742 Statut Membre 96
 
et si tu fais SELECT * FROM paramatre WHERE annee = 1993

sans les guillemets
0
AMARI
 
même problème :(:(:(:(
0
Natio78 Messages postés 742 Statut Membre 96
 
je viens de faire un test chez moi en créant une base de données, directement dans phpmyadmin quand je fais
SELECT * FROM parametre WHERE annee = 1993
ça fonctionne

SELECT * FROM 'parametre' WHERE annee = "1993"

ça fonctionne aussi
0
AMARI
 
j'arrive pas à comprendre pour chez moi ça marche pas pour il ne prend pas les valeurs insérées en considération :(:(
0
AMARI
 
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
0
Natio78 Messages postés 742 Statut Membre 96
 
c'est parfait
on va pouvoir bientôt finir je pense je te fais un message pour ce qu'il te reste à modifier un dernier effort
0
AMARI
 
j'ai pas compris il faut que je modifie quoi ? par contre est ce que dans les codes qu'on va le faire si l'utilisateur il va choisir une année dans laquelle il existe des valeurs dans la BD on va avoir le formulaire comme le mien juste il doit être rempli avec ses valeurs selon l'année ?
0
Natio78 Messages postés 742 Statut Membre 96
 
ahhhhh cool! attends je vérifie quelque chose rapidement je te dis ce que tu vas devoir modifier

0
AMARI
 
d'accord je vous attends :)
0
Natio78 Messages postés 742 Statut Membre 96
 
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;
		});
	});
});



0
Natio78 Messages postés 742 Statut Membre 96
 
il y a une erreur attention ! il faut mettre mois avec un M soit Mois partout sinon ça ne fonctionnera pas!
$("#Precipitation"+data[i]['Mois']).val(data[i]['Precipitation']);
$("#Evap_eau"+data[i]['Mois']).val(data[i]['Evap_eau']);
0
Natio78 Messages postés 742 Statut Membre 96
 
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="" />'; 

0
Natio78 Messages postés 742 Statut Membre 96
 
en gros il faut supprimer les [ ] sur les id, tu peux les laisser sur le name si tu veux.
ligne 87 et 90 normalement
0
AMARI
 
oui j'ai tout modifié mais ça change rien si j'ai clique sur l'année il fait pas le test , et il me renvoi pas un formulaire remplit :(
0
Natio78 Messages postés 742 Statut Membre 96
 
j'ai ajouté une autre réponse en dessous. normalement si tu prends l'année 1994 ça devrait fonctionner
0
Natio78 Messages postés 742 Statut Membre 96
 
après dis moi ce que tu vois dans la console debug de chrome dans l'onglet "console" et dans l'onglet "network" sur le fichier parametre.php
0
Natio78 Messages postés 742 Statut Membre 96
 
et pour finir, dans le fichier parametre.php il faut supprimer tous les "echo" et les print_r à part echo json_encode($myArray);
0
AMARI
 
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 :(
0
AMARI
 
par contre est ce que dans les codes qu'on va le faire si l'utilisateur il va choisir une année dans laquelle il existe des valeurs dans la BD on va avoir le formulaire comme le mien juste il doit être rempli avec ses valeurs selon l'année??
0
Natio78 Messages postés 742 Statut Membre 96
 
met ça :

$sql1 = 'SELECT * FROM parametre WHERE annee = '.$_GET['annee'];

pour la deuxième question oui, si l'utilisateur choisit une année pour laquelle il y a des valeurs ça va juste remplir les inputs avec les valeurs de la base de données
0
AMARI
 
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
0
Natio78 Messages postés 742 Statut Membre 96
 
c'est pas normal que ça ne fonctionne pas, j'aimerai bien que tu m'envoies ton code par mail que je puisse le voir bien proprement
0
AMARI
 
donnez moi votre adresse mail comme ça je le vous envoie
0
AMARI
 
ç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 :(:(
0
Natio78 Messages postés 742 Statut Membre 96
 
fais moi une réponse avec un copier coller de chacun des 3 fichiers s'il te plait

Enjoy!
0
AMARI
 
je voudrais votre adresse mail comme ça je vous envoie tous
0
Natio78 Messages postés 742 Statut Membre 96
 
ebertin@bieng.fr
0
Natio78 Messages postés 742 Statut Membre 96
 
je viens de monter une base de données sur mon ordi avec la même structure, requête en mysqli etc.. ça fonctionne chez moi :(
0
AMARI
 
merci pour votre adresse une minute et je vous envoie tous
0
AMARI
 
est ce que vous avez reçu mon mail
0
Natio78 Messages postés 742 Statut Membre 96
 
oui j'en ai envoyé un autre en réponse.
attention il faut copier le fichier dbconnect.php à la racine du dossier, j'ai oublié de le mettre
0