Tester l'existence des données dans sql javascript
Natio78 Messages postés 742 Statut Membre -
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.
- Tester l'existence des données dans sql javascript
- Flash drive tester - Télécharger - Divers Utilitaires
- Trier des données excel - Guide
- Tester les performances de son pc - Guide
- Logiciel sql - Télécharger - Bases de données
- Tester compatibilité windows 11 - Guide
60 réponses
- 1
- 2
- 3
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.
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));
?>
si tu as d'autres questions n'hésite pas
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questioncode 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>
SELECT * FROM parametre WHERE annee = "1993"
par exemple
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;
});
});
$(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
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!
<?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
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!
et pour la requête il m'affiche ça comme erreur : Undefined variable: lines in C:\wamp\www
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
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);
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
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
- 1
- 2
- 3