Post id et nom dans liste déroulante

Eléphanteau du PHP | 12 Messages

10 févr. 2015, 11:20

Bonjour,

J'aurais voulu avoir la méthode pour récupérer l'id et le nom de la valeur sélectionnées dans une liste déroulante. J'arrive très bien à récupérer l'id mais je ne vois pas comment récupérer aussi le nom. Actuellement ma liste ressemble à çà :

Code : Tout sélectionner

<form action="accueil.php" method="post" id="chgclient"> <select name="client" id="client" onchange="document.forms['chgclient'].submit();"> <option value="-1" selected>- Choisissez un client -</option> <?php for($i = 0; $i < $nbclient; $i++){ ?> <option value="<?php echo($code_client[$i]); ?>"<?php echo((isset($id_client) && $id_client == $code_client[$i])?" selected=\"selected\"":null); ?>><?php echo($client[$i]); ?></option> <?php } ?> </select> </form>
Et en début de page j'ai ma variable de session :

Code : Tout sélectionner

session_start();         $id_client = isset($_SESSION['id_client'])?$_SESSION['id_client']:""; if (isset($_POST['client'])) {             $id_client = $_POST['client'];             $_SESSION['id_client'] = $id_client;             $ecran = "client";         }
Je suis pas du tout développeur à la base et j'avoue ne pas voir comment récupérer aussi le nom du client en POST.
Merci d'avance pour l'aide

Mammouth du PHP | 737 Messages

10 févr. 2015, 12:20

Bonjour,

Ce qui est posté là apparemment c'est l'ID du client donc ensuite on récupère cet ID dans la requête d'affichage et on appelle la colonne nom du client (selon le terme en base)

Mega
;)
Dyslexics are teople poo

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

10 févr. 2015, 12:26

Les options d'un select sont constituées de deux éléments :
- la valeur (attribut value) qui est transmise par le navigateur lorsque le formulaire est soumit
- le libellé (placé entre les balises <option>) qui n'est pas transmit par le navigateur (*)

(*) en l'occurrence, certains navigateurs le transmettent en cas d'absence de l'attribut value, mais mieux vaut ne pas compter la dessus :)

Du coup, il y a plusieurs solutions possible. Tu peux, comme évoqué par Megadeth, récupérer l'id passé dans l'attribut value et l'utiliser pour retrouver le libellé associé (avec une requête SQL, une information en session, ...) ou tu peux concatener plusieurs informations dans l'attribut value, en utilisant un séparateur (point-virgule, pipe, ... ex : value="id|libelle|...")

Le premier cas est le plus simple et n'affecte pas ton traitement. Le second t'oblige alors à retravailler la valeur transmise par le formulaire pour dissocier chacune des informations soumises (avec explode() par exemple) et exploiter l'id d'un côté et le libellé de l'autre
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...