Valeurs présente dans BDD dans champs input

Fermé
fromage2chevre Messages postés 3 Date d'inscription mardi 28 avril 2015 Statut Membre Dernière intervention 28 avril 2015 - 28 avril 2015 à 10:47
fromage2chevre Messages postés 3 Date d'inscription mardi 28 avril 2015 Statut Membre Dernière intervention 28 avril 2015 - 28 avril 2015 à 12:21
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

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
28 avril 2015 à 10:53
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.


0
fromage2chevre Messages postés 3 Date d'inscription mardi 28 avril 2015 Statut Membre Dernière intervention 28 avril 2015
28 avril 2015 à 11:04
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
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
Modifié par jordane45 le 28/04/2015 à 11:57
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);
?>

0
fromage2chevre Messages postés 3 Date d'inscription mardi 28 avril 2015 Statut Membre Dernière intervention 28 avril 2015
28 avril 2015 à 12:21
D'accord merci de ta réponse :)
0