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
2 mai 2013 à 10:53
avec un peu d'ajax tu dois pouvoir faire ça simplement.
Regarde sur jQuery ( https://api.jquery.com/jQuery.ajax/ ou https://api.jquery.com/jQuery.getJSON/

En gros ce que tu fais dans ton javascript en simplifié:
$("ton_champ_date").change(function() {
//envoi ta requête ajax

$.getJSON('mapage.php', {
		annee: ton_champ_date.val()
	}, function(data)
	{
	   if(data.exist)
	   {
			 monchamp1.val((data.values[0]['monchamp1']));
			 monchamp2.val((data.values[0]['monchamp2']));
		}
	   else
		  return false;
    });
});


et dans mapage.php tu fais ta requête sql pour récupérer les données et tu envoies la réponse en json

<?php
     $sql = ("SELECT blabla FROM blibli WHERE annee = $_GET['annee']);
      // Là tu fais ta requête
        ......
        ....
        ...

// retour en json

echo json_encode(array("exist"=>true, "values"=>$marequete));
?>
0
je vous remercie infiniment Natio78 , mais j'ai un souci j'ai jamais travailler en ajax est ce que vous pouvez me donner la requête ajax , j'ai bien compris le code que vous m'avez envoyé par contre la partie ajax non car je suis nulle en ajax , merci d'avance .
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 à 11:03
la requête ajax je te l'ai faite en gros via le $.getJSON c'est cette fonction en javascript qui va te permettre d'envoyer tes données à ta page (mapage.php). Tu récupères ensuite les données sous la forme $_GET['id']
si tu as d'autres questions n'hésite pas
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 à 11:04
Si tu veux un coup de main supplémentaire copie ici le code de ton formulaire (le html)
0

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

Posez votre question
d'accord je vous donne le code de ma page , merci beaucoup :
code php et html :
<?php
require_once('dbconnect.php');

?>
<html>
<head>
<title>ESPACE PRIVE </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="styles.css" rel="stylesheet" type="text/css">
<script type="text/javascript" >
//fonction qui permet de verifier que l'année a bien été sélectionnée
function verif_champs(){
var champ_annee = document.getElementById('annee');
if(champ_annee.value ==""){
alert("Vous devez choisir une année");
return false; //empeche l'envoi du formulaire
}
}
</script>
<style type="text/css">
.input_mois {
background-color:#A9AEAD;
text-align:center;
}

</style>
</head>
<body>
<p align="center" class="titre"><strong>- : : : Les paramètres du bases : : : -</strong></p>
<br>
<?php
//initialisation de l'array des mois
$array_list_mois=array("1"=>"Janvier","2"=>"Février","3"=>"Mars","4"=>"Avril","5"=>"Mai","6"=>"Juin","7"=>"Juillet","8"=>"Aout","9"=>"Septembre","10"=>"Octobre","11"=>"Novembre","12"=>"Décembre");

//On verifie que le formulaire a été envoye
if(isset( $_POST['envoi']))
{
//recup des valeurs postées
$annee = $_POST['annee'];
$arrayMois = $_POST['Mois'];
$arrayPrecipitation = $_POST['Precipitation'];
$arrayEvap_eau = $_POST['Evap_eau'];
//il faut faire autant de requette INSERT que de lignes remplies
//on parcours l'array $arrayMois
foreach($arrayMois as $mois=>$value){
//$mois = l'index qui va aussi servir dans les autres array
// ex: P1[5] contient la valeur saisie dasn P1 du mois 5
if(!empty($arrayPrecipitation[$mois]) && !empty($arrayEvap_eau[$mois] )){
//si les deux champs Precipitation et Evap_eau ont été remplis pour le mois considéré on enregistre dans la BDD
$sql='INSERT INTO parmetres( annee, Mois, Precipitation, Evap_eau ) VALUES ("'.$annee.'", "'.$mois.'", "'.$arrayPrecipitation[$mois].'","'.$arrayEvap_eau[$mois].'")';
$requete = $db->query($sql) ;

}

}

}

?>

<form action="parametre.php" method="post" name="formulaire" onsubmit="return verif_champs();" >
<table width="350" border="0" align="center" cellpadding="5" cellspacing="0" bgcolor="#eeeeee" class="tableaux">
<tr><th>Année</th><th>Mois</th><th>Precipitation</th><th>Evap_eau</th></tr>
<?php
//on va faire une boucle pour afficher tous les mois d'un coup
//et pour l'année dans la première colonne sur une seule ligne grace au rowspan="12"
for($n=1;$n<=12;$n++){
echo '<tr>';
//première colonne (année)

if($n==1){
//si première ligne on met la liste déroulante année dans la colonne 1
echo '<td rowspan="12">'; //colonne qui fait les 12 lignes
$annee=date("Y");
echo '<select name="annee" id="annee" >';
echo '<option value="">Choisir une année...</option>';

for($i=1993;$i<=$annee ;$i++){
echo '<option value="'.$i.'">'.$i.'</option>';
}
echo '</select>';
echo '</td>';
}
echo '<td>';
echo '<input type="text" name="Mois['.$n.']" value="'.$array_list_mois[$n].'" class="input_mois" readonly />';
echo '</td>';
echo '<td>'; //colonne Precipitation
echo '<input type="text" name="Precipitation['.$n.']" value="" />';
echo '</td>';
echo '<td>'; //colonne Evap_eau
echo '<input type="text" name="Evap_eau['.$n.']" value="" />';
echo '</td>';
echo '</tr>';
}
?>
<tr>
<td height="50" colspan="4" align="center">
<input type="submit" name="envoi" value="Envoyer">
</td>
</tr>
</table>
</form>

<div class="foot"><a href="accueil.php">Retour à l'accueil</a></div>

</body>
</html>
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 à 11:20
je regarde ton code rapidement. En attendant récupère jQuery (http://code.jquery.com/jquery-1.9.1.min.js pour le récupérer tu fais un copier coller de cette page dans un fichier que tu appeleras jquery.js sur ton serveur. C'est une bibliothèque de fonctions javascript qui va nous faciliter la vie pour la suite
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 à 11:24
pour bien t'aider j'ai besoin de savoir aussi ce que retourne ta requête à la base de données quand tu fais genre un
SELECT * FROM parametre WHERE annee = "1993"
par exemple
0
merci d'accord par contre est ce que je peux le mettre dans le dossier dans le quelle il y a mes pages que je travaille sur ?
pour la partie javascript que vous m'avez envoyé j'ai modifier juste le nom de quelque variable et j'ai l'enregistré sous une page test.js et j'ai ajouté la partie php dans ma page php que je l'ai envoyé mais je sais pas comment je vais appeler la page test.js ??
$("annee").change(function() {
//envoi ta requête ajax

$.getJSON('parametre.php', {
annee: annee.val()
}, function(data)
{
if(data.exist)
{
Percipitation.val((data.values[0]['Percipitation']));
Evap_eau.val((data.values[0]['Evap_eau']));
}
else
return false;
});
});
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 à 11:34
alors il va falloir changer un peu ce que je t'avais envoyé, pour le js ça devrait ressembler à ça:
$(function() {

	$("#annee").change(function() {
		$.getJSON('transactions/getInfos.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;
		});
	});
});


ne pas oublier d'ajouter ça en haut de ta page html:

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

et pour ce qui est du fichier jquery tu peux le mettre où tu veux. mais pour plus de propreté je te conseille de créer un dossier "js" dans lequel tu mettras tout tes fichiers javascript.

donc tu aurais:
js/jquery.js
js/parametre.js (ou test.js)

il faut aussi que tu ajoutes des id sur tes inputs dans ton tableau. exemple ligne 85 tu as echo '<input type="text" name="Precipitation['.$n.']" value="" />';
il faudrait mettre
echo '<input type="text" id="Precipitation['.$n.']" name="Precipitation['.$n.']" value="" />';

comme le name en fait. Il faut faire ça pour les precipitation et evap_eau
0
elle m'envoie les 12 mois et les valeurs : précipitation et Evap_eau de chaque moi
0
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 à 11:41
tu pourrais faire la requête en php et fait un print_r du resultat pour que je vois le format du tableau?

Par exemple:
<?php 
  require_once('dbconnect.php');  
  $sql = 'SELECT * FROM parametre WHERE annee ="1993"' ;
  $resultat = $db->query($sql) ;  

  print_r($resultat); 
?> 


suffit de mettre ce bout de code dans un fichier bidon (bidon.php) et d'aller sur la page pour voir ce qui est généré

Enjoy!
0
j'ai essayé de généré la requête:
<?php
require_once('dbconnect.php');
$sql = 'SELECT * FROM parametre WHERE annee ="1993"' ;
$resultat = $db->query($sql) ;

print_r($resultat);
?>

dans la page php elle m'a afficher ça comme résultat
mysqli_result Object ( [current_field] => 0 [field_count] => 4 [lengths] => [num_rows] => 13 [type] => 0 )
et quand j'ai généré la requête dans sql ça marche normal
0
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 à 11:58
fais ça plutôt alors:
require_once('dbconnect.php');    
$sql = 'SELECT * FROM parametre WHERE annee ="1993"' ;    
$result = $db->query($sql); 
$row = $result->fetch(PDO::FETCH_ASSOC); 
print_r($row); 





Enjoy!
0
D'accord, par contre pour la partie javascript et php que vous m'avez envoyé j'ai fait comme vous m'avez dit et quand je clique sur l'année par exemple 1993 ( qu'il y a déjà des valeurs dans sql )pour cette année elle m'affiche pas les formulaire remplit elle me laisse toujours sur la même page du coup le code ne fonctionne pas c'est quoi l'erreur .
et pour la requête il m'affiche ça comme erreur : Undefined variable: lines in 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 à 12:06
on en est au tout début! il va falloir ajouter encore des choses pour que ça fonctionne, ça serait trop beau!
je vais déjeuner on continue en début d'après midi. J'ai édité le bout de code php pour la requête SQL (je m'étais trompé).
à tout à l'heure
0
bon appétit à toute à l'heure :)
0
cc Natio78 vous êtes toujours là ?
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:40
oui je suis revenu.
As tu essayé ce que j'ai mis au dessus?

require_once('dbconnect.php');    
$sql = 'SELECT * FROM parametre WHERE annee ="1993"' ;    
$result = $db->query($sql); 
$row = $result->fetch(PDO::FETCH_ASSOC); 
print_r($row); 


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:45
quel navigateur utilises tu au fait? firefox, chrome, IE? car ça serait bien d'avoir un débug pour la partie ajax ça serait plus simple.
donc on récapitule.

Pour l'instant tu dois avoir la page que tu m'avais copié avec en haut dans la partie header ça en plus:
<script type="text/javascript" src="js/jquery.js" ></script>
<script type="text/javascript" src="js/test.js" ></script>


Tu dois avoir un dossier js créé avec dedans 2 fichiers:
- jquery.js (contenant le code de jquery)
- test.js (contenant le code que je t'ai mis au dessus).

tu dois aussi avoir un dossier transaction créé (à la racine de ton site) avec dedans:
- parametre.php (ce fichier servira à interroger la base de données et renvoyer les infos en json à test.js).

si tu as bien tout ça on va pouvoir continuer
0
j'ai essayé il m'afficher ça comme erreur :
Fatal error: Call to une fonction membre fetch () sur un non-objet dans C: \ wamp \ www
alors j'ai essayé avec ce lui là
$sql = 'SELECT * FROM parametre WHERE annee ="1993"' ;
$result = $db->query($sql);
$row = mysqli_fetch($result);
print_r($row);
Attention: mysqli_fetch () s'attend à ce paramètre 1 pour être mysqli_stmt, booléen donné dans C: \ wamp \ www \ Autentification \ parametre.php on line 69
0