PHP récupération de l'ID dans une liste déroulante

Répondre
mougeole boiteux
le 18/05/2006 à 11:02
mougeole boiteux
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
mougeole boiteux
le 18/05/2006 à 15:35
mougeole boiteux
Bon

alors voilà ou j'en suis

Voici mon code :

<?php

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.
i M@N
le 18/05/2006 à 16:37
i M@N
Hello !

Les boucles while tu connaissais pas ?

Essaye ça :
<?php 

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

/*on va scanner tous les tuples un par un*/
while ($donneesc = mysql_fetch_array($reponsec)) {

/*on récupère les valeurs qui nous intéressent*/
$nomcellule = $donneesc['NomCellule'];
$nomservice = $donneesc['NomService'];
$id = $donneesc['IdCellule'];

/*echo tes trucs ...*/
echo $nomcellule;
echo $nomservice;
echo $id;
}

?>


@+...
One Love, One Heart, One Unity.
mougeole boiteux
le 18/05/2006 à 17:22
mougeole boiteux
Salut

Merci pour ta réponse

Bien sur que je connaissais les boucles while : j'en ai utilisé une pour faire ma liste.

Je fais une première requête $sqlb pour construire la liste

la requête $sqlc sert à récupérérer les valeurs qu'on a séléctionné dans la liste.

J'ai peut-être mal compris ton message, mais je ne vois pas pourquoi tu veux faire une deuxième boucle while.

Quand je faisait des echo je récupérait bien les valeurs que j'avais séléctionnées... mais pas la première fois que j'arrive sur la page.

Salut
i M@N
le 18/05/2006 à 18:37
i M@N
Reuh ...

oki ... ça doit être l'histoire que j'vais eu avec les variables globales : change $id par $id_machin ça devrait fonctionner.

En bref tu as peut-être une autre variable "$id" utilisée en session, cookie ou ailleurs par ton script ou ... qui fout le souk.

@+...
One Love, One Heart, One Unity.
mougeole boiteux
le 19/05/2006 à 09:07
mougeole boiteux
salut

merci pour ta réponse

J'ai vérifier toute mes pages j'avais bien une autre variable $id.

J'ai changé le nom de la variable $id en $idc (pour idcellule)

J'ai également 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.


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
bibi
le 19/05/2006 à 09:18
bibi
tu récupères toujours ce qu'il y a dans "value" . Donc apres tu peux mettre ce que tu veux dedans.
commit suicide
mougeole boiteux
le 19/05/2006 à 09:49
mougeole boiteux
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...
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours