PHP récupération de l'ID dans une liste déroulante
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
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.
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.
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
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.
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
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
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...
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: