Liste déroulante

Résolu
aureliemerlin Messages postés 82 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 17 avril 2013 - 27 août 2012 à 10:58
aureliemerlin Messages postés 82 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 17 avril 2013 - 18 janv. 2013 à 13:38
Bonjour à tous,


J'ai un formulaire qui me permet de saisir les appels dans lequel il y a plusieurs zone de liste. Un fois ma saisie terminée, j'ai la possibilité de revenir dessus pour modifier les différentes informations tels que les liste modifiables, mais lorsque j'ouvre mon formulaire dans ma zone de liste je voudrais que la valeur qui s'affiche soit celle qui à été enregistré comment puis je faire ???

voici le code qui me permet d'afficher les informations de la zone de liste :

  <label>Changez  cat. :</label>
    <select name="NumCat" style="color:#000000" id="NumCat">
<?php
$sqlcategorie = "select IntituleCat from categorie order by IntituleCat";
$resultcategorie = mysql_query($sqlcategorie) or die("erreur dans la requête");
$Lignecategorie = mysql_fetch_array($resultcategorie);
while($Lignecategorie!=false)
{
echo"<option value='$Lignecategorie[IntituleCat]'>".$Lignecategorie[IntituleCat]."</option>";
$Lignecategorie = mysql_fetch_array($resultcategorie);
}
?>
</select>
     


j’espère avoir été assez clair.

merci d'avance
Bonne journée

Aurélie

6 réponses

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
17 janv. 2013 à 22:41
Cette ligne avant le while est de trop :
$Lignecategorie = mysql_fetch_array($resultcategorie);

Explication : mysql_fetch_array lit la ligne en cours et avance le pointeur.
Donc si comme ici tu ignores ce qu'elle retourne, tu ignores en fait une ligne de résultat.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
3
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
27 août 2012 à 12:54
Il existe en HTML un attribut selected pour les options des listes déroulantes.
Il suffit de le mettre quand l'option affichée = = l'option sauvée.

On dirait que ta table n'a pas d'IDs ?!
En général, les tables sont liées avec un ID (clé primaire).
Par exemple pour tes catégories, tu as minimum deux champs : id_categorie , intitule.
Comme ça tu stockes dans la table des appels l'ID de la catégorie, et à la lecture tu fais
SELECT appels.*, categories.* FROM appels INNER JOIN categories ON appels.cat =categories.id_categorie
Tu vas surement demander l'avantage que ça a...
Tu peux par exemple changer le nom d'une catégorie sans devoir le faire sur chaque ligne (plus rapide).
Tes requêtes avec des GROUP BY devraient aussi aller plus vite (non testé, faudrait vérifier).

Pour ton bout de code, si l'id de la catégorie de trouve dans $idcat et que le champ de la table s'appelle IdCat,
<?php
$rscat = mysql_query("SELECT * FROM categorie ORDER BY IntituleCat");
//gestion d'erreurs inutile : si y'en a une, c'est que ta structure de table a été changée, 
//et t'es censée avoir modifié les scripts en conséquence.
while($lncat = mysql_fetch_array($rscat)) //plus court, plus clair
{
$sel = ($lncat['IdCat']==$idcat ? ' selected' : '');
echo "<option value='{$lncat['IdCat']}'$sel>{$lncat['IntituleCat']}</option>\n";
}
?>


VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0
aureliemerlin Messages postés 82 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 17 avril 2013
15 janv. 2013 à 16:06
Bonjour

J'ai de nouveau mon problème de zone de liste!!!
A chaque fois que j'ouvre mon formulaire mon Firefox plante
Voici le code que j'utilise je ne comprend pas pourquoi ca plante
le principe est le suivant lorsque j'ouvre ma fiche client je veux que la valeur dans ma zone de liste soit celle qui soit enregistré dans ma table !!!


    <label>changer le statut de votre client :</label>
    <select name="StatutClient" id="StatutClient">
      <?php
$StatutClient = $com['StatutClient'];
$sqlcategorie = "select * from StatutClient";
$resultcategorie = mysql_query($sqlcategorie) or die("erreur dans la requête");
$Lignecategorie = mysql_fetch_array($resultcategorie);
while($Lignecategorie!=false)
      {
$sel = ($Lignecategorie['NumStatut']==$StatutClient ? ' selected' : '');
echo "<option value='{$Lignecategorie['StatutClient']}'$sel>{$Lignecategorie['StatutClient']}</option>\n";			
}	
?>				</select>

j’espère avoir été assez clair !!!
merci de votre aide

Meilleurs vœux pour cette nouvelle année 2013 !!!

Aurélie
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
15 janv. 2013 à 18:16
Ce n'est pas FF qui se plante mais ton script qui part en boucle infinie :
la boucle à effectuer c'est ceci : while ($Lignecategorie = mysql_fetch_array($resultcategorie))

Meilleurs voeux à toi aussi

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
0

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

Posez votre question
aureliemerlin Messages postés 82 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 17 avril 2013
17 janv. 2013 à 10:44
Bonjour
Merci pour votre réponse
j'ai modifié mon code et ma zone de liste apparaît
mais mon problème est le suivant :
dans ma zone de liste j'ai les informations suivantes :
- 1 RESILIE
- 2 ACTIF
- 3 CONTENTIEUX

lorsque j'ouvre ma fiche client ma zone de liste devrait se positionner sur le 2 hors la il se positionne sur RESILIE et dans ma liste ACTIF n'est plus visible
je ne comprend pas pourquoi ???

je remets mon code corrigé :


     <label>changer le statut de votre client :</label>
     <select name="StatutClient" id="StatutClient">
     <?php
$StatutClient = $com['StatutClient'];
$sqlcategorie = "select * from StatutClient";
$resultcategorie = mysql_query($sqlcategorie) or die("erreur dans la requête");
$Lignecategorie = mysql_fetch_array($resultcategorie);
while ($Lignecategorie = mysql_fetch_array($resultcategorie))
    {
$sel = ($Lignecategorie['NumStatut']==$StatutClient ? ' selected' : '');
echo "<option value='{$Lignecategorie['StatutClient']}'$sel>{$Lignecategorie['StatutClient']}</option>\n";			
}	
?>
</select>							


merci de votre aide
Bonne journée

Aurélie
0
aureliemerlin Messages postés 82 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 17 avril 2013
18 janv. 2013 à 13:38
bonjour
merci beaucoup pour votre aide
Bonne journée
Aurélie
0
Rejoignez-nous