[RESOLU] Input text résultat d'un choix dans menu déroulant

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Input text résultat d'un choix dans menu déroulant

Re: Input text résultat d'un choix dans menu déroulant

par L'@uvergnat » 10 févr. 2015, 17:55

Bonjour,
Après des heures et des heures de recherches, des centaines de pages consultées et autant de tests j'ai trouvé la solution.

Mieux qu'un lien vers une recherche google :wink: , voici ce que cela donne :

la base de donnée
j'ai 2 tables
l'une MaTableSelect qui contient 2 champs : ID et Description. c'est cette table qui alimente mon <select>
L'autre MaTableDeDonnees qui contient 3 champs : ID , Champ1, Champ2 . C'est la table qui va alimenter les <input>

Les fichiers
le fichier principal.php est le fichier principal
le fichier requete_sql.php est le fichier contenant la requete php qui va etre appelée par l'AJAX

Bon, ce n'est peut etre pas codé correctement mais cela fonctionne ! Les puristes y trouveront surement quelque chose à redire et je leur laisse le soin d’apporter toutes les subtilités possibles !

Voila en espérant que mes heures de recherche puissent servir à d'autres !


Voici les fichiers

principal.php

Code : Tout sélectionner

<?php require_once('../../Connections/connexionamabase.php'); // connexion à la BDD if (!function_exists("GetSQLValueString")) { function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") { if (PHP_VERSION < 6) { $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue; } $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue); switch ($theType) { case "text": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "long": case "int": $theValue = ($theValue != "") ? intval($theValue) : "NULL"; break; case "double": $theValue = ($theValue != "") ? doubleval($theValue) : "NULL"; break; case "date": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "defined": $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; break; } return $theValue; } } // requette sur la table MaTableSelect qui contient les datas du <select> mysql_select_db($database_Consult_ext, $Connect);// connexion à la BDD $query_Recordset_Code = "SELECT * FROM MaTableSelect "; $Recordset_Code = mysql_query($query_Recordset_Code, $Connect) or die(mysql_error()); $row_Recordset_Code = mysql_fetch_assoc($Recordset_Code); $totalRows_Recordset_Code = mysql_num_rows($Recordset_Code); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Document sans titre</title> <script src="../../lib/jquery/jquery-2.1.0.min.js"></script> <script> $(document).ready(function () { $("#MonSelect").change(function(){ var id=$('#MonSelect').val(); $.ajax({ type: "POST", data: {"ID" : id}, // c'est le $_POST['ID'] du fichier requete_sql.php url: "./requete_sql.php", // appel du fichier de traitement sur la table MaTableDeDonnees success:function(data){ var Text = JSON.parse(data); $("#input_text").val(Text.Champ1); $("#input_text2").val(Text.Champ2); } }); }); }); </script> </head> <body> <select name="MonSelect" id ="MonSelect" > <option value=""selected="selected"><-- Choix Code --> </option> <?php do { ?> <option value="<?php echo $row_Recordset_Code['ID']?>" ><?php echo $row_Recordset_Code['Description']?></option> <?php } while ($row_Recordset_Code = mysql_fetch_assoc($Recordset_Code)); $rows = mysql_num_rows($Recordset_Code); if($rows > 0) { mysql_data_seek($Recordset_Code, 0); $row_Recordset_Code = mysql_fetch_assoc($Recordset_Code); } ?> </select> <input name="input_text" type="text" id="input_text" value="" size="30" /> <input name="input_text2" type="text" id="input_text2" value="" size="10" /> </body> </html>
requete_SQL.php

Code : Tout sélectionner

<?php include('../../Connections/connexionamabase.php'); $ID = $_POST['ID']; mysql_select_db($database_Consult_ext, $Consult_ext); $query_Recordset_Code = "SELECT * FROM MaTableDeDonnees WHERE ID = '$ID'"; $Recordset_Code = mysql_query($query_Recordset_Code, $Consult_ext) or die(mysql_error()); $row_Recordset_Code = mysql_fetch_assoc($Recordset_Code); $totalRows_Recordset_Code = mysql_num_rows($Recordset_Code); echo json_encode($row_Recordset_Code); // le résultat de la requete est envoyé dans un JSON ?>

Re: Input text résultat d'un choix dans menu déroulant

par tof73 » 05 févr. 2015, 17:48

Re: Input text résultat d'un choix dans menu déroulant

par L'@uvergnat » 05 févr. 2015, 17:43

Oui, c'est cela, sans recharger la page.
Effectivement mon salut va venir d'AJAX et/ou JQUERY.

J'ai cherché (peut etre mal) un peu partout mais je n'ai rien trouvé de bien probant.

Re: Input text résultat d'un choix dans menu déroulant

par donkeykick » 05 févr. 2015, 15:01

Re l'@uvergnat :)

On est bien d'accord que tu veux la réponse à l'item sélectionné sans recharger la page ?

Si c'est ta problématique, la solution est du côté d'ajax.

do_ok

Input text résultat d'un choix dans menu déroulant

par L'@uvergnat » 05 févr. 2015, 13:18

Bonjour à tous,
je ne suis pas un expert en javascript et c’est pour cela que je me retourne vers vous.

Dans un formulaire, j’ai un menu déroulant alimenté par une table mysql.

Code : Tout sélectionner

<select name="CotationCode" id="CotationCode"> <?php do { ?> <option value="<?php echo $row_Recordset_Code['Code']?>"><?php echo $row_Recordset_Code['Code']?> | <?php echo $row_Recordset_Code['CodeText']; ?></option> <?php } while ($row_Recordset_Code = mysql_fetch_assoc($Recordset_Code)); $rows = mysql_num_rows($Recordset_Code); if($rows > 0) { mysql_data_seek($Recordset_Code, 0); $row_Recordset_Code = mysql_fetch_assoc($Recordset_Code); } ?> </select>
je souhaite que l'orque l'on sélectionne un des élément de la liste, le résultat d'une requête mysql soit affiché dans un input text du même formulaire. <input type="text" name="Text" value="résultat de la requête " />

La requête est du style : " SELECT * FROM ma_table WHERE MonCham = '$ValeurDuSelect' " nota $ValeurDuSelect = $row_Recordset_Code['Code']
Cette requête est présente dans fichier requete.php

d'avance merci de votre aide