Tester l'existence des données dans sql javascript

Fermé
AMARI - 2 mai 2013 à 10:30
Natio78 Messages postés 719 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 27 mai 2013 - 2 mai 2013 à 17:12
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 719 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 27 mai 2013 96
Modifié par Natio78 le 2/05/2013 à 13:56
ok essai un dernier truc sinon on se débrouillera sans ça.

require_once('dbconnect.php');
$sth = $db->prepare('SELECT * FROM parametre WHERE annee ="1993"');
$sth->execute();
$result= $sth->fetchAll(PDO::FETCH_ASSOC);
print_r($result);


Enjoy!
0
oui j'en ai tout et j'utilise google chrome pour le moment mais après quand je termine et j'héberge le site ça sera à l'utilisateur de choisir le navigateur que lui plait
0
j'ai essayé avec le dernier code et aussi il m'a afficher cet erreur :
Attention: mysqli_stmt :: fetch () attend exactement 0, 1 paramètres donnés dans C: \ wamp \ www
0
Natio78 Messages postés 719 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 27 mai 2013 96
2 mai 2013 à 13:58
je viens de remodifier. C'est bizarre mysqli car c'est un fetchAll que ça fait normalement.
tu utilises bien PDO pour te connecter à ta bdd?
0
oui voilà ma page de connexion :
// Paramètres de connexion
$hostname = "localhost"; // nom ou ip de votre serveur
$database = "AMARI"; // nom de votre base de données
$username = "root"; // nom d'utilisateur (root par défaut) !!! ATTENTION, en utilisant root, vos visiteurs on tout les droits sur la base
$password = ""; // mot de passe (aucun par défaut mais il est fortement recommandé d'en mettre un ... sinon, à quoi bon la sécurité ?)
$db=new mysqli("$hostname","$username","","$database");
$db->query('SET CHARSET "UTF-8"');
$db->query('SET CHARACTER SET UTF8');
$db->query("SET NAMES 'utf8'");
$db->query('SET collation_connection = utf8_general_ci');
0
Natio78 Messages postés 719 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 27 mai 2013 96
2 mai 2013 à 14:05
aaaaah je croyais que tu le faisais via PDO. Je ne connais pas Mysqli enfin ce n'est pas grave on va quand même s'en sortir. C'est normal que ce que je t'ai demandé de faire ne fonctionne pas ^^. On va continuer sur le javascript et on fera le php sql après
0
d'accord merci
0
Natio78 Messages postés 719 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 27 mai 2013 96
2 mai 2013 à 13:57
ok cool avec chrome le debug est intégré directement ça sera plus simple.
Normalement si tu fais clique droit sur ta page tu as "inspecter l'élément" ça ouvre une fenêtre en bas de ta page. Sur cette fenêtre sur as un onglet 'console' c'est là que tu verras les erreurs javascript
0

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

Posez votre question
c'est bon pour la partie console je l'ai vu :)
0
Natio78 Messages postés 719 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 27 mai 2013 96
2 mai 2013 à 14:08
as tu bien tout ce que je t'avais récapitulé ici => https://forums.commentcamarche.net/forum/affich-27721909-tester-l-existence-des-donnees-dans-sql-javascript#19

si oui on va pouvoir commencer à tester des choses
0
oui c'est bon j'en ai tout :) on peut commencer
0
Natio78 Messages postés 719 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 27 mai 2013 96
2 mai 2013 à 14:17
il va falloir commencer par modifier un peu le js.
donc tu vas mettre ça dans le fichier test.js à la place de ce qu'il y a actuellement


$(function() {

	$("#annee").change(function() {
              //affichage dans la console javascript de chrome de la valeur de l'année sélectionnée
		console.log($('#annee').val());

		$.getJSON('transactions/parametre.php', {
			annee: $("#annee").val()
		}, function(data)
		{
		   if(data.exist)
		   {
				for(var i in data)
				{
					$("#Precipitation"+i).val(data.values[i]['Precipitation']);
					$("#Evap_eau"+i).val(data.values[i]['Evap_eau']);
				
				}
			
		   }
		   else
			  return false;
		});
	});
});




Normalement quand tu changeras de valeur dans ta liste déroulante tu devrais voir la valeur qui change dans la console de chrome.

tu vas aussi mettre ça dans ton fichier transaction/parametre.php

<?php
  print_r($_GET);

?>


ce petit bout de php devrait nous montrer si ton js communique bien avec ton php et si la valeur reçue par php est la bonne. tu peux voir ça dans la console encore tu vas par contre dans l'onglet "network" quand tu changes de valeur dans ta liste déroulante ça devrait appeler le fichier transaction/parametre.php et il devrait s'afficher ici. clique dessus pour voir le contenu retourné. Demande moi si tu ne comprends pas bien quelque chose car je ne suis peut être pas très clair
0
j'ai suivi vos étapes pour les codes après j'ai choisi une année il a rien fait et dans le console il ne m'affiche pas l'année sélectionner :(
0
Natio78 Messages postés 719 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 27 mai 2013 96
2 mai 2013 à 14:27
Avant tout rafraichir la page au cas où (ctrl+r) car le javascript se passe côté client il faut donc recharger les fichiers


0
Natio78 Messages postés 719 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 27 mai 2013 96
2 mai 2013 à 14:30
j'ai reproduit le tout chez moi et ça fonctionne il doit manquer quelque chose alors.
tu as bien le fichier principal (index.php) avec en haut ça entre les balises <head> </head>

<script type="text/javascript" src="js/jquery.js" ></script>
<script type="text/javascript" src="js/test.js" ></script>

le dossier js avec dedans 2 fichiers: test.js et jquery.js
le dossier transactions avec dedans un fichier : parametre.php


un petit conseil:
affiche l'interface debug de chrome et fais un ctrl+r pour rafraichir. Si tu vas dans l'onglet network tu vois les fichiers qui sont chargés, tu devrais avoir style.css jquery.js et test.js, si l'un d'eux apparait en rouge c'est qu'il ne le trouve pas
0
alors vous avez raison il m'a afficher 3 erreurs :
GET http://localhost/Amari/css/style.css 404 (Not Found) parametre.php:9
Uncaught SyntaxError: Unexpected identifier jquery.js:1
Uncaught ReferenceError: $ is not defined
et j'en ai la page css dans le dossier
0
Natio78 Messages postés 719 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 27 mai 2013 96
2 mai 2013 à 14:37
bon il y a plusieurs erreurs on va les décrypter...
style.css not found à la rigueur ça on s'en fou ça concerne pas ce qu'on est entrain de faire.


Pour parametre.php:
vide le complètement et met juste ça dedans:
<?php
  print_r($_GET);
?>


c'est tout pour son contenu. on aura plus d'erreurs sur ce fichier là.

Il y a un problème sur le fichier jquery.js, as tu bien recopié tout le contenu de la page suivante : http://code.jquery.com/jquery-1.9.1.min.js (ctrl+a pour tout sélectionner puis copier et coller dans ton fichier jquery.js)

la dernière erreur vient du fait qu'il y a un prob sur la copie de jquery
0
voilà il affiche l'année mais il ya toujours 2 erreurs :
GET http://localhost/Amari/css/style.css 404 (Not Found) parametre.php:9
2010 Test.js:6
GET http://localhost/Amari/transactions/parametre.php?annee=2010 404 (Not Found) jquery.js:5
0
Natio78 Messages postés 719 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 27 mai 2013 96
2 mai 2013 à 14:48
le fichier parametre.php se trouve bien dans le dossier "transactions"? attention il est au pluriel. là il dit qu'il ne trouve pas le fichier parametre.php qu'il doit appeler à la ligne 6 du fichier test.js car effectivement ligne 6 on a bien:

$.getJSON('transactions/parametre.php', {


0
c'est bon je l'ai corrigé la dans le console il reste juste l'erreur de la page css et c'est pas important pour le moment, on peut continuer ?
0
Natio78 Messages postés 719 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 27 mai 2013 96
2 mai 2013 à 14:55
oui, donc on a bien les années qui s'affichent? et dans l'onglet network on a bien "parametre.php" qui doit s'afficher à chaque fois qu'on change de date dans la liste déroulante? lorsque tu cliques dessus il y a bien la même année que celle sélectionnée?
0
oui tout est bien
0
Natio78 Messages postés 719 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 27 mai 2013 96
2 mai 2013 à 15:06
ok on va ajouter un peu de php donc dans parametre.php, il va falloir maintenant effectuer la requête à la base de données en fonction de l'année pour renvoyer en json le contenu de la base.
C'est le seul point que je ne pourrai pas vraiment tester car je n'ai pas ta base de données. Donc j'espère que ça va fonctionner assez rapidement ^^

donc dans parametre.php tu mets:

<?php
require_once('../dbconnect.php'); 
$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(array("values"=>$myArray));
}

$result->close();
$db->close(); 

?>


après tu recharges ta page et tu changes de date dans la liste déroulante. tu regardes dans l'onglet "network" du debug pour voir ce que renvoi la page "parametre.php" (en espérant que ce ne soit pas une erreur!)
0
il m'affiche tout d'abord cet erreur
Notice: Undefined index: annee dans C: \ wamp \ www
avec ça
{"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"}]}
et vite fait ça s'enlève et il reste que ça la partie : Notice: Undefined index: annee dans C: \ wamp \ www ;
pour ma table en fait j'ai 4 champs ; annee , Mois , Percipitation , Eavap_eau
0