Liste déroulante [Résolu]

Signaler
Messages postés
86
Date d'inscription
jeudi 24 juin 2010
Statut
Membre
Dernière intervention
17 avril 2013
-
aureliemerlin
Messages postés
86
Date d'inscription
jeudi 24 juin 2010
Statut
Membre
Dernière intervention
17 avril 2013
-
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

Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
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
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
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
Messages postés
86
Date d'inscription
jeudi 24 juin 2010
Statut
Membre
Dernière intervention
17 avril 2013

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
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
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
Messages postés
86
Date d'inscription
jeudi 24 juin 2010
Statut
Membre
Dernière intervention
17 avril 2013

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
Messages postés
86
Date d'inscription
jeudi 24 juin 2010
Statut
Membre
Dernière intervention
17 avril 2013

bonjour
merci beaucoup pour votre aide
Bonne journée
Aurélie