[PHP récupérer l'Id d'une liste déroulante]

Mougeole Messages postés 34 Date d'inscription   Statut Membre Dernière intervention   -  
PhP Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour

J'ai un petit problème avec une liste déroulante.

Ma liste déroulante affiche des noms et je voudrais récupérer l'identifiant.

Voici mon code :



while ($donneesb = mysql_fetch_array($reponseb)) 
        { 
        ?> 
    <?php $nomservice1 = $donneesb['NomService']; 

         echo '<option value="'.$donneesb['IdCellule'].'"> 
'.$donneesb['NomCellule'].'(id='.$donneesb['IdCellule'].')'; ?> 
</option> 


        <?php 
        } 
        ?>



J'ai trouvé ce code dans un forum.
Inconvéniant de ce code :
- les id s'affiche avec les noms (alors que je ne veux afficher que les noms).

- On ne récupère pas l'identifiant.

Est-ce que quelqu'un sait comment récupérer l'identifiant dans une liste déroulante?

Merci d'avance
A voir également:

9 réponses

nauno Messages postés 342 Date d'inscription   Statut Membre Dernière intervention   60
 
normalement
$donneesb['IdCellule'] est l'identifiant que tu cherche

et
echo '<option value="'.$donneesb['IdCellule'].'"> 
'.$donneesb['NomCellule'];
</option>


devrait t'afficher juste les noms à l'intérieur de ton menu déroulant
0
Mougeole Messages postés 34 Date d'inscription   Statut Membre Dernière intervention   26
 
Merci pour ta réponse

Ok. Ca m'affiche bien le Nom.

Mais mon problème c'est pour récupérer l'identifiant dans une requête SQL.

Après ma boucle je fais la requête suivante :

$sql = SELECT IdCellule, NomCellule,  NomService FROM CELLULES INNER JOIN SERVICES ON RefService = IdService WHERE  IdCellule ='".$_POST['listecellule']."' ";


quand je fais un echo "$sql" il m'affiche :

SELECT IdCellule, NomCellule, NomCellule, NomService FROM CELLULES INNER JOIN SERVICES ON RefService = IdService WHERE IdCellule = 'Cellule 2'


Et il est la le problème : avec la variable $_POST['listecellule'] je récupère le contenu de la liste et pas moyen de séléctionner l'identifiant.

Ensuite j'ai essayé de rajouter un attibut name, comme ceci :

<option name="identifiant" value="'.$donneesb['IdCellule'].'">


et j'ai fait le requête suivant :

$sql = SELECT IdCellule, NomCellule,  NomService FROM CELLULES INNER JOIN SERVICES ON RefService = IdService WHERE  IdCellule ='".$_POST['identifiant']."' ";


Quand je fais un echo de cette requête, il m'affiche ceci :

SELECT IdCellule, NomCellule, NomCellule, NomService FROM CELLULES INNER JOIN SERVICES ON RefService = IdService WHERE IdCellule = ''


Alors comment récupérer cet identifiant ?

Merci d'avance
0
nauno Messages postés 342 Date d'inscription   Statut Membre Dernière intervention   60
 
essaye avec

echo '<option value="'$donneesb['IdCellule']'"> 
'.$donneesb['NomCellule']</option>;


y'a pas de grand changement juste enlever les . et placer le ; à la fin dans ta liste ca peut suffir, je sais pas trop parce que normalement dans la balise option le critère
value="ma_valeur"
est le critère renvoyé dans le formulaire et il est indépendant du menu écrit dans la liste
0
Mougeole Messages postés 34 Date d'inscription   Statut Membre Dernière intervention   26
 
Bon

alors voilà ou j'en suis

Voici mon code :

 while ($donneesb = mysql_fetch_array($reponseb)) 
        { 
        ?> 
			
      <?php echo '<option  value="'.$donneesb'IdCellule'].'">
 '.$donneesb['NomCellule']; ?>
			 
   </option>
			
<?php
        
        } 
        ?> 



<?php 
$sqlc = "SELECT IdCellule, NomCellule, NomService FROM CELLULES INNER JOIN SERVICES ON RefService = IdServce WHERE  IdCellule ='".$_POST['listecellule']."' ";
$reponsec = mysql_query($sqlc);

$donneesc = mysql_fetch_array($reponsec);
$nomcellule = $donneesc['NomCellule'];
$nomservice = $donneesc['NomService'];
$id = $donneesc['IdCellule'];

?>



Et voilà.

Quand je fais un echo de la requête, la première fois que je vais sur la page il m'écrit idcellule = 'cellule 2'

Et donc je ne peux pas récupérer le nom de la cellule.

En revanche au deuxième passage (et ceux qui suivent) sans rafraichir la page, il reconnait l'idcellule et il m'affiche dans la requête :

IdCellule = '2'

et je peux récupérer le nom de cellule et tout le reste

Donc ça marche ... mais pas la première fois!!

Est-ce que quelqu'un a déjà rencontré ce problème ou pourrait m'expliquer ce qui va pas dans mon code ?

Merci d'avance.
0
PhP Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   606
 
Bsr

Bizarre, normalement PHP récupère les valeurs des options jamais leur texte

Ton problème est peut-être dû au cache de ton navigateur surtout si tu modifies souvent ton code.

Ferme tes pages HTML et PHP puis vide le cache de ton navigateur

Sous IE :
Menu [Outils][Options Internet ...] onglet [Général] puis bouton [Supprimer les fichiers ...] coche "Supprimer tout le contenu hors connexion" et [OK]

Sous FF :
Menu [Outils][Options ...] onglet [Vie Provée][Cache] puis bouton [Vider le cache]

Nota : tu as un raccourcit par [Outils][Effacer mes traces ...] Cool FF

@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mougeole Messages postés 34 Date d'inscription   Statut Membre Dernière intervention   26
 
Salut

Merci pour ta réponse

Alors j'ai bien réglé le problème du cache dans FF, j'ai même rajouté les header qui vont bien

<?php
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
?>

et rien n'y fait.

C'est d'un chiant.....

Alors je me demandais, quand je récupère $_POST['listecellule'], la première fois il récupère le Nom de la cellule et les fois qui suivent l'ID de la cellule.

Est-ce qu'il y aurait moyen de faire une éspèce de "double tableau associatif" du genre $_POST['listecellule']['IdCellule']

Je dis bien du genre parce que j'ai déjà essayé ça et ça marche pas.

Si quelqu'un a une idée ?

Merci d'avance
0
Mougeole Messages postés 34 Date d'inscription   Statut Membre Dernière intervention   26
 
Salut

Sur PHP débutant , j'ai trouvé un petit bout de code sur le tableau associatif $_POST


<?php
if(isset($_POST)) 
{
        foreach($_POST as $key=>$val) 
        { 
                echo $key.'=>'.$val.'<p>';  
        }
}
?>



J'ai rajouté ce bout de code dans ma page PHP et voilà le résultat

la première fois

listecellule=>cellule 2
btnMajCell=>Mettre à jour

la deuxième fois et les suivantes

listecellule=>2
btnMajCell=>Mettre à jour

Ca confirme bien les résultats observés...
0
PhP Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   606
 
Bjr

Au risque de dire une c... t'aurais pas un enregistrement dans ta table MySQL avec "Cellule 2" comme valeur du champ IdCellule

Vérifie avec PhpMyAdmin

Sinon poste le source de ta page générée (la premère celle qui plante) : pas le code PHP (quoique) mais le code HTML que tu obtiens en faisant menu [Affichge][Source]

Comment ca "au deuxième passage sans recharger la page " ??????
Tu es obliger de recharger la page en PHP !
Je comprends pas ...




Astuce : pour voir le contenu de $_POST[]

tu peux aussi faire

<?php
echo var_dump($_POST);
?>


mieux

<?php
echo "<pre>";
echo var_dump($_POST);
echo "</pre>";
?>


ainsi c'est "propre" même en HTML



0
Mougeole Messages postés 34 Date d'inscription   Statut Membre Dernière intervention   26
 
salut

J'ai vérifié dasn phpmyadmin : je n'ai pas de "cellule 2" dans mon champs IdCellule. Avoir du text dans un champs auto incrémentiel faut être balaise pour réussire un coup pareil.

Mais non tu ne dit pas de c... après tout une fausse manip est si vite arrivée :)


J'ai essayé ça

<?php
echo var_dump($_POST);
?>

et ça confirme ce que j'avais déjà.

Pour cette Histoire de passage je t'explique :

Le premier passage correspond à la première fois que tu accède à la page.

Le deuxième passage et les autres c'est quand tu es sur cette page et que tu réapuie sur le bouton du formulaire

Ensuite tu change de page et tu reviens sur la page qui pose problème.
Tu te retrouve dans le cas du premier passage.

J'ai pourtant bien vider mon cache et j'ai activé l'option "vider la cache à chaque fois que je vois cette page".

Ya un truc qui cloche c'est sur. Je n'ai rien vu d'anormal dans le code source je n'ai rien vu d'anormal
0
PhP Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   606
 
Pouvait pas deviner que t'utilisais des autoincréments ! LOL
Déjà que t'avais mis des index sans t'en servir ... re LOL

Elle ressemble à quoi visuellement ta page ?

la première fois qu'on accède à ta page tu ne fais pas de requête je suppose , où alors tu utilises des paramètres par défaut puisque "listecellule" n'est pas encore défini.


J'avoue que j'ai plus trop d'idée ...


Poste le code on ne sais jamais à moins que tout ca ne soit en ligne ?
0