Valeurs présente dans BDD dans champs input

[Fermé]
Signaler
Messages postés
3
Date d'inscription
mardi 28 avril 2015
Statut
Membre
Dernière intervention
28 avril 2015
-
Messages postés
3
Date d'inscription
mardi 28 avril 2015
Statut
Membre
Dernière intervention
28 avril 2015
-
Bonjour à tous :)

Actuellement étudiant, j'ai pour projet de creer une application web permettant de modifier la valeurs d'indicateurs choisi dans une base de données.

J'ai Actuellement fini l'interface web et j'ai relié la base avec PDO. Jusqu'a la aucun problème, ça fonctionne :)

je vous joins une capture d'ecran pour appuyer mon explication :




Je souhaiterais maintenant, une fois l'indicateur choisi à l'aide de la liste deroulante, afficher les valeurs présente dans la basedirectement dans le champ input si celles-ci existent. J'ai cherché de l'aide sur internet, mais je n'ai pas trouvé comment faire sachant que ma liste déroulante est sur la même page que mes champs input.

Donc si quelqu'un à une idée ... ^^

Je vous joins également mes scripts, si ça peut vous permettre d'y voir plus clair :

code HTML:


<!DOCTYPE html>
<html>
<head>
<title>CDG - Indigo - Saisie</title>
<meta charset="utf-8"/>
<link rel="stylesheet" href="css/CDG.css"/>
<script type="text/javascript" src="scripts/script.js"></script>
</head>
<body>
<img src=images/banniereCDG.gif border="0" id="banniere" >

<h2> Saisie des données élémentaires</h2>

<form action="pdo.php" method="post" >
<div>
<fieldset>
<legend> Veuillez completer les informations : </legend>
<label>Code de la <B><U> Donnée élémentaire :</U></B></label>
<select name="DE" id="DE" onchange="Change()">
<option value="">Sélectionnez</option>
<option value="IF30301">IF30301</option>
<option value="IF30302">IF30302</option>
<option value="IF30303">IF30303</option>
<option value="IF30304">IF30304</option>
<option value="IF30305">IF30305</option>
<option value="IF30306">IF30306</option>
<option value="IF30307">IF30307</option>
<option value="IF30308">IF30308</option>
<option value="IF30309">IF30309</option>
<option value="IF30310">IF30310</option>
<option value="IF31201">IF31201</option>
<option value="IF31202">IF31202</option>
[...]

</select>

<div id="divM" style="display:none">
<table>
<tr class="titre">
<td>Janvier</td><td>Fevrier</td><td>Mars</td><td>Avril</td><td>Mai</td><td>Juin</td><td>Juillet</td><td>Aout</td><td>Septembre</td><td>Octobre</td><td>Novembre</td><td>Decembre</td>
</tr>
<tr>
<td><input type='number' step="0.01" min="0" name='M1' id="M1"></td>
<td><input type='number' step="0.01" min="0" name='M2' id="M2"></td>
<td><input type='number' step="0.01" min="0" name='M3' id="M3"></td>
<td><input type='number' step="0.01" min="0" name='M4' id="M4"></td>
<td><input type='number' step="0.01" min="0" name='M5' id="M5"></td>
<td><input type='number' step="0.01" min="0" name='M6' id="M6"></td>
<td><input type='number' step="0.01" min="0" name='M7' id="M7"></td>
<td><input type='number' step="0.01" min="0" name='M8' id="M8"></td>
<td><input type='number' step="0.01" min="0" name='M9' id="M9"></td>
<td><input type='number' step="0.01" min="0" name='M10' id="M10"></td>
<td><input type='number' step="0.01" min="0" name='M11' id="M11"></td>
<td><input type='number' step="0.01" min="0" name='M12' id="M12"></td>
</tr>
</table>
</div>

<div id="divT" style="display:none" align="center">
<table>
<tr class="titre"><td>1er Trimestre</td><td>2eme Trimestre</td><td>3eme Trimestre</td><td>4eme Trimestre</td></tr>
<tr>
<td><input type='number' step="0.01" min="0" name='T1' id="T1"></td>
<td><input type='number' step="0.01" min="0" name='T2' id="T2"></td>
<td><input type='number' step="0.01" min="0" name='T3' id="T3"></td>
<td><input type='number' step="0.01" min="0" name='T4' id="T4"></td>
</tr>
</table>
</div>

<div id="divS" style="display:none" align="center">
<table>
<tr class="titre"><td>1er Semestre</td><td>2eme Semestre</td></tr>
<tr>
<td><input type='number' step="0.01" min="0" name='S1' id="S1"></td>
<td><input type='number' step="0.01" min="0" name='S2' id="S2"></td>
</tr>
</table>
</div>

<div id="divA" style="display:none" align="center">
<table>
<tr class="titre"><td>Année</td></tr>
<tr>
<td><input type='number' step="0.01" min="0" name='A' id="A"></td>
</tr>
</table>
</div>
</fieldset>

<p>
<input type="submit" value="Envoyer" />
<li id="finir"><a href="index.php">FINIR</a></li>
<a href="listede.php">Voir les données élémentaires remplies</a>
</p>
</div>
</form>

</body>
</html>




Code PHP:


<?php
try
{
// Connexion
$bdd = new PDO('mysql:host=127.0.0.1;dbname=valeurs;charset=utf8', 'root', '');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}

//Recupération de la valeur du post
$DE=$_POST['DE'];
$M1=$_POST['M1'];
$M2=$_POST['M2'];
$M3=$_POST['M3'];
$M4=$_POST['M4'];
$M5=$_POST['M5'];
$M6=$_POST['M6'];
$M7=$_POST['M7'];
$M8=$_POST['M8'];
$M9=$_POST['M9'];
$M10=$_POST['M10'];
$M11=$_POST['M11'];
$M12=$_POST['M12'];
$T1=$_POST['T1'];
$T2=$_POST['T2'];
$T3=$_POST['T3'];
$T4=$_POST['T3'];
$S1=$_POST['S1'];
$S2=$_POST['S2'];
$A=$_POST['A'];

//preparation et envoi des requetes, plusieurs requete pour eviter l'envoie de 0 non voulu
$reqM = $bdd->prepare('UPDATE valeursde SET M1 = :M1, M2 = :M2, M3 = :M3, M4 = :M4, M5 = :M5, M6 = :M6, M7 = :M7, M8 = :M8, M9 = :M9, M10 = :M10, M11 = :M11, M12 = :M12 WHERE DE = :DE AND Periode = "M"');
$reqT = $bdd->prepare('UPDATE valeursde SET T1 = :T1, T2 = :T2, T3 = :T3, T4 = :T4 WHERE DE = :DE AND Periode = "T"');
$reqS = $bdd->prepare('UPDATE valeursde SET S1 = :S1, S2 = :S2 WHERE DE = :DE AND Periode = "S"');
$reqA = $bdd->prepare('UPDATE valeursde SET A = :A WHERE DE = :DE AND Periode = "A"');


$reqM->execute(array(
'M1' => $M1,
'M2' => $M2,
'M3' => $M3,
'M4' => $M4,
'M5' => $M5,
'M6' => $M6,
'M7' => $M7,
'M8' => $M8,
'M9' => $M9,
'M10' => $M10,
'M11' => $M11,
'M12' => $M12,
'DE' => $DE));

$reqT->execute(array(
'T1' => $T1,
'T2' => $T2,
'T3' => $T3,
'T4' => $T4,
'DE' => $DE));

$reqS->execute(array(
'S1' => $S1,
'S2' => $S2,
'DE' => $DE));

$reqA->execute(array(
'A' => $A,
'DE' => $DE));

header ("Location: $_SERVER[HTTP_REFERER]" );
die();
?>




Voila, merci d'avance pour ceux qui vont prendre la peine de lire ^^

2 réponses

Messages postés
33738
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 octobre 2021
3 773
Bonjour,

Deux possibilités :
Tu places ta liste entre des balises FORM et tu déclenches, lors d'une selection dans cette liste, un submit de la FORM (via javascript et l'attribut onchange).
A ce momment là.. tu peux récupérer via $_POST la valeur de ta liste.

Autre possibilité (plus propre selon moi) est de passer par de l'ajax.
(pour cela je t'invite à mettre le plugin JQUERY sur ton site).
Cela te permettra de mettre à jour ton input SANS avoir à recharger la page.
Tu trouveras un grand nombre de tutos sur le net au sujet de l'AJAX.


Messages postés
3
Date d'inscription
mardi 28 avril 2015
Statut
Membre
Dernière intervention
28 avril 2015

Merci de ta réponse Jordane45, effectivement je n'avais pas pensé à mettre ma liste déroulante dans une balise form

J'ai tenté de me renseigner sur l'AJAX suite à une réponse que j'ai eu sur un autre forum, mais je n'ai pas bien compris en quoi consisterais la manipulation ^^
et surtout en quoi cela serais plus "propre" que ta solution proposée précédemment, qui me semble plus facile à réaliser
Messages postés
33738
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 octobre 2021
3 773
Plus "propre" car tu n'as pas besoin de recharger la page (chose qui est faite lorsque tu submit un FORM )
par contre, oui, c'est moins facile à faire....


Pour l'AJAX ( en utilisant JQUERY ) tu peux faire un truc du gnre :

Dans ton select :
 <select name="DE" id="DE" onchange="Change(this.value)">



La partie Javascript :

function Change(valeur){
var urlAjx    = 'repertoire/page_php_contenant_les_donnees.php';
var data = {valeurcherchee:valeur};
 
   $.ajax({ 
     url:      urlAjx,
     dataType: "json",
     type:     "POST",
     data:     data,
     async:    false,
     success:  function(reponse){
               $("#id_de_ton_input").val(reponse);
               },
     error:    function(jqXHR, textStatus){
               var error = formatErrorMessage(jqXHR, textStatus);
               alert('error :' + error);
              }
    });
}

La partie PHP serait de la forme :

<?php
 $valeurcherchee= isset($_POST['valeurcherchee'])?$_POST['valeurcherchee']:'';


 // Ici un traitement quelconque (comme par exemple interroger ta base de données)
$result = "Bonjour ".$valeurcherchee


//Ici le retour du fichier AJAX (ce qui sera envoyé à la fonction javascript...)
echo json_encode($result);
?>

Messages postés
3
Date d'inscription
mardi 28 avril 2015
Statut
Membre
Dernière intervention
28 avril 2015

D'accord merci de ta réponse :)