claude77260
Messages postés38Date d'inscriptiondimanche 8 août 2010StatutMembreDernière intervention13 janvier 2019
-
28 sept. 2016 à 10:44
claude77260
Messages postés38Date d'inscriptiondimanche 8 août 2010StatutMembreDernière intervention13 janvier 2019
-
8 oct. 2016 à 11:05
Bonjour,
j'avais trouvé sur le site une fonction permettant de construire une combo, malheureusement , elle ne fonctionne pas et je ne vois pas la solution, je récupéré bien les intitulés dans la combo, mais je n'arrive pas à récupérer en retour l'ID correspondant
//-------------------------------------------------------------------- //-----------Elements obligatoire à envoyer à la fonction------------- //-------------------------------------------------------------------- //genere_select ('nom', 'table', 'val', 'libelle_combo', '', '', '', 'valeur a selectionner', false, '', ''); $name='id_combo'; // nom de la combobox $table='statuts'; $libelle_combo='libelle_statut';// nom du champ à afficher dans la combo $id_combo= 'id_statut'; //nom du champ id
//-----------Elements facultatif à envoyer à la fonction-------------- $selected =''; //valeur de l'option sélectionnée $where =''; // condition optionnelle du select $style=''; //style html à appliquer à la combo $class=''; // class CSS à appliquer à la combo
//----------------- appel à la function ------------------------------ function_genere_select( $name,$table,$id_combo,$libelle_combo,$where,$selected,$class,$style); //Affiche id et libellé retournés
echo $val[$libelle_combo]; echo $val[$id_combo]; //Affiche id et libellé
//------------------- function -------------------------------------- function function_genere_select ($name, $table, $id_combo, $libelle_combo, $where, $origin=array(), $id='', $selected, $multiple=false, $class, $style) {
if(!isset($name) or !isset($table) or !isset($id_combo) or !isset($libelle_combo)) { return false; break; } echo '<select '; if ($multiple == true) {echo ' multiple ';} if ($class != '') {echo 'class="'.$class.'"';} if ($style != '') {echo 'style="'.$style.'"';} echo ' name="'.$name.'" '; if ($id != '') {echo 'id="'.$id.'"';} echo '>'."\n\r";
//si on a un tableau d'options préremplis on le génère foreach ($origin as $k => $v) { echo '<option value="'.$v.'"'; if($v == $selected) { echo ' selected="selected" '; } echo '>'; echo $k; echo '</option>'."\n\r"; }
//----------- REQUETE on sélectionne les données dans la bdd --------- $requete = 'select '.$id_combo.', '.$libelle_combo.' from '.$table.' '.$where; $result = mysql_query($requete);
//Affichage dans la combo
while ($val = mysql_fetch_array($result)) { echo '<option value="'.$val[$id_combo].'"'; if($val[$id_combo] == $selected) { echo ' selected="selected" '; } echo '>'; echo $val[$libelle_combo];// affiche les données dans la combo echo '</option>'."\n\r"; } echo '</select>'; return $val[$id_combo]; } //fin de la function
//Affiche id et libellé retournés echo $val[$libelle_combo]; echo $val[$id_combo]; //Affiche id et libellé
Ensuite... as tu bien créé la table en BDD correspondant à ce code ?
Puis.. lorsque tu dis ne pas parvenir à récupérer en retour l'ID correspondant.. c'est à dire ??? A quel moment ? Après que l'utilisateur est fais un choix ??
As tu placé ce select dans un FORM ou as tu essayé en Javascript ? (car sans ça... impossible ! )
1-oui je sais, je passerais en php 5.6 procédural après fonctionnement car à 70 ans je ne vais pas me mettre à PDO
2- oui puisque je reçois les intitulés dans ma combo
3- oui après, le choix-c'est ce que je recherche
4-non je n'ai pas de form effectivement, tu le mettrais ou le form ???
à+
jordane45
Messages postés38145Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention25 avril 2024344 28 sept. 2016 à 13:02
<?php /* description : fonction qui génère une combobox pour un formulaire La connexion doit être effective à la bdd mysql seuls les 4 premiers paramètres sont obligatoires ... donc elle peut s'utiliser avec juste 4 param $name : nom de la combobox $table : $table de la bdd concernée $id_combo : colonne de la table contenant l'ID $libelle_combo : colonne de la table à afficher dans le champ
/ ?><?phpinclude("connect4.php");//--------------------------------------------------------------------//-----------Elements obligatoire à envoyer à la fonction-------------//-------------------------------------------------------------------- $name='id_combo'; // nom de la combobox $table='statuts'; $id_combo= 'id_statut'; //nom du champ de la table id $libelle_combo='libelle_statut';// nom du champ de la table à afficher dans la combo //-----------Elements facultatif à envoyer à la fonction-------------- $where =''; // condition optionnelle du select $selected =''; //valeur de l'option sélectionnée $class=''; // class CSS à appliquer à la combo $style=''; //style html à appliquer à la combo //--------------------------------------------------------------------//----------- appel à la function dans la partie formulaire ----------//--------------------------------------------------------------------function_genere_select( $name,$table,$id_combo,$libelle_combo,$where,$selected,$class,$style);// retour de la function id_combo$id_combo = $_GET['id_combo'];echo $id_combo; //affiche pour traitement la valeur id_combo choisie dans la combobox//--------------------------------------------------------------------//------------------- function -------------------------------------- //--------------------------------------------------------------------function function_genere_select ($name, $table, $id_combo, $libelle_combo, $where,$selected,$class, $style ) { if(!isset($name) or !isset($table) or !isset($id_combo) or !isset($libelle_combo)) { return false; break; } //----------- REQUETE on sélectionne les données dans la bdd --------- $requete = 'select '.$id_combo.', '.$libelle_combo.' from '.$table.' '.$where; $result = mysql_query($requete); //----------------- Affichage dans la combo --------------------------echo"<center>";echo'<FORM method "GET" NAME="$id_combo" action"">'; echo'<SELECT NAME="id_combo" onchange="form.submit()">'; echo"<option>-- Votre choix ---</option>"; while ($val = mysql_fetch_array($result)) { echo '<option value="'.$val[$id_combo].'"'; if($val[$id_combo] == $selected) { echo ' selected="selected" '; } echo '>'; echo $val[$libelle_combo];// affiche les données dans la combo echo '</option>'."\n\r"; } echo '</select>'; echo"</form>"; echo"</center>"; return $val[$id_combo]; } //fin de la function?>
claude77260
Messages postés38Date d'inscriptiondimanche 8 août 2010StatutMembreDernière intervention13 janvier 2019 8 oct. 2016 à 11:05
le précédent post n'est pas passé ?? voici le code en php 6 à 7
<?php include("_connect7.php");
//-------------------------------------------------------------------- //-----------Elements obligatoire à envoyer à la fonction------------- //-------------------------------------------------------------------- $name='id_combo'; // nom de la combobox $table='Votre table'; $id_combo= 'votre ID'; //nom du champ de la table id $libelle_combo='Votre libelle';// nom du champ de la table à afficher dans la combo
//-----------Elements facultatif à envoyer à la fonction--------------
$where =''; // condition optionnelle du select $selected =''; //valeur de l'option sélectionnée $class=''; // class CSS à appliquer à la combo $style=''; //style html à appliquer à la combo
//-------------------------------------------------------------------- //----------- appel à la function dans la partie formulaire ---------- //--------------------------------------------------------------------
// retour de la function id_combo $id_combo = $_GET['id_combo']; $SESSION[id_combo] = $_GET['id_combo']; echo $SESSION[id_combo];
//-------------------------------------------------------------------- //------------------- function -------------------------------------- //--------------------------------------------------------------------
function function_genere_select ($name, $table, $id_combo, $libelle_combo, $where,$selected,$class, $style ) { if(!isset($name) or !isset($table) or !isset($id_combo) or !isset($libelle_combo)) { return false; break; }
//----------- REQUETE on sélectionne les données dans la bdd ---------