Liste deroulante à la amin + BD
missokhay
-
missokhay Messages postés 22 Statut Membre -
missokhay Messages postés 22 Statut Membre -
Bonjour,
j'ai une liste deroulante (select) queje veux remplir à la fois à la main et à partir d'un bd. mais je veux qu'elle soit en ordre alphabétique.
pour mieux comprendre mon problème:
je veux créer une liste avec plusieurs pays avec une option 'autre'; là un input apparait et l'utilisateur peut saisir son pays. cette valeur va être stocké dans un base. et comme je veux que cette nouvelle valeur soit inserée dans ma liste déroulante, j'ai pensé à faire le mélange. ca marche, mais ce n'est pas dans l'ordre alphabetique.
je ne peux pas faire à partir de la base directement car ma liste sera vide si la table des utilisateur est vide.
quelqu'un peut m'aider.
merci à l'avance
j'ai une liste deroulante (select) queje veux remplir à la fois à la main et à partir d'un bd. mais je veux qu'elle soit en ordre alphabétique.
pour mieux comprendre mon problème:
je veux créer une liste avec plusieurs pays avec une option 'autre'; là un input apparait et l'utilisateur peut saisir son pays. cette valeur va être stocké dans un base. et comme je veux que cette nouvelle valeur soit inserée dans ma liste déroulante, j'ai pensé à faire le mélange. ca marche, mais ce n'est pas dans l'ordre alphabetique.
je ne peux pas faire à partir de la base directement car ma liste sera vide si la table des utilisateur est vide.
quelqu'un peut m'aider.
merci à l'avance
A voir également:
- Liste deroulante à la amin + BD
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste code ascii - Guide
- Liste déroulante google sheet - Accueil - Guide bureautique
- Site dangereux liste - Guide
6 réponses
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 586
Si tu créait une table "mespays" dans ta DB avec les pays que tu veux toujours avoir, tu pourrais faire simplement :
select pays from ANNONCE where id_famille='1' and paysnot in ('$liste')
union
select pays from mespays
order by pays
select pays from ANNONCE where id_famille='1' and paysnot in ('$liste')
union
select pays from mespays
order by pays
merci bcp pour ta réponse le problème et que je fais ce travail avec plusieurs champs et je ne peux pas me permettre de créer une nouvelle table pour chacun d'entre eux. j'ai effectivement une table pays et je travaille presque comme tu le dis. pays dans mon code est juste un exemple.
merci quand même.
je vais chercher un peu dans la direction de tri: regrouper toutes les valeurs (saisies à la main + depuis BD) dans un tableau faire le tri ensuite créer la liste déroulante mais c'est assez embetant dans la mesure ou il ya trop de code à modifier.
merci quand même.
je vais chercher un peu dans la direction de tri: regrouper toutes les valeurs (saisies à la main + depuis BD) dans un tableau faire le tri ensuite créer la liste déroulante mais c'est assez embetant dans la mesure ou il ya trop de code à modifier.
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 586
Tu peux te contenter d'une seule table "valeurs pardefaut", et y ajouter une colonne par type de valeur...
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 586
Quel est ton outil de travail ?
Si je comprends bien, tout marche à part l'ordre alphabétique ? C'est exact ? Peux-tu expliquer comment tu crées ta liste ? Il suffit peut-être d'une petite adaptation pour la trier.
Par ailleurs, je ne comprends pas ce qui t'empêche de stocker dans la base le nouveau pays créé, et de toujours créer la liste à partir de la base. Que veux-tu dire avec "car ma liste sera vide si la table des utilisateur est vide" ?
Si je comprends bien, tout marche à part l'ordre alphabétique ? C'est exact ? Peux-tu expliquer comment tu crées ta liste ? Il suffit peut-être d'une petite adaptation pour la trier.
Par ailleurs, je ne comprends pas ce qui t'empêche de stocker dans la base le nouveau pays créé, et de toujours créer la liste à partir de la base. Que veux-tu dire avec "car ma liste sera vide si la table des utilisateur est vide" ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
L'utilisateur peut choisir son pays dans une liste s'il n'y figure pas, il choisit "Autre" et là un nouveau input apparait il saisit une nouvelle valeur. et cette valeur est stockée sans pb dans la base.
En realite, je veux faire un petit site pour les annonces gratuites. au départ si je n'ai aucune annonce enregistrée donc, ma table est surement vide.Si je remplis la liste à partir de la bd la liste des pays serait vide aussi. mais moi je veux qu'il y ait toujours un minimum d'options dans la liste deroulante auquel s'ajouterait de nouvelles à partir de la base.
Ma liste je la remplie à la main tout d'abord appelons cette liste liste_main . ensuite je fais un requete sql pour récupérer toutes les valeurs qui ne figurent pas déjà dans ma liste_main.
ce que j'ai fait jusqu'à mnt me permet de juxtaposer la liste saisie à la main et la liste venant de la BD d'ou chacune est triée à part (liste_main de a->z et liste_bd a->z).
j'espère que c'est plus clair mnt.
faire le tri sur l'ensemble des deux liste c'est ce que je veux mais comment?
voici un bout de code (tronqué) pour voir un peu ce que j'ai fait.
rq: presque la totzalité du formulaire est créé dynamiquement dans la fonction create_form()
En realite, je veux faire un petit site pour les annonces gratuites. au départ si je n'ai aucune annonce enregistrée donc, ma table est surement vide.Si je remplis la liste à partir de la bd la liste des pays serait vide aussi. mais moi je veux qu'il y ait toujours un minimum d'options dans la liste deroulante auquel s'ajouterait de nouvelles à partir de la base.
Ma liste je la remplie à la main tout d'abord appelons cette liste liste_main . ensuite je fais un requete sql pour récupérer toutes les valeurs qui ne figurent pas déjà dans ma liste_main.
ce que j'ai fait jusqu'à mnt me permet de juxtaposer la liste saisie à la main et la liste venant de la BD d'ou chacune est triée à part (liste_main de a->z et liste_bd a->z).
j'espère que c'est plus clair mnt.
faire le tri sur l'ensemble des deux liste c'est ce que je veux mais comment?
voici un bout de code (tronqué) pour voir un peu ce que j'ai fait.
rq: presque la totzalité du formulaire est créé dynamiquement dans la fonction create_form()
<? ob_start('ob_gzhandler');?>
<?
//////////Paramètres de connexion///////////////////
include ("site/fr/parametres.php");
include("web_manager/config/connect.php");
$con = conct();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<script language="javascript">
function autre(id_span,id_select)////affiche ou non l'input autre
{
var spn = document.getElementById(id_span);
if (document.getElementById(id_select).value=='autre')
spn.setAttribute('style','display:inline');
else
spn.setAttribute('style','display:none');
}
function create_form()///crée un formulaire en fonction de la famille choisie
{
var sv=document.getElementById('td_prov');
if (document.getElementById('sel_famille').value=='auto')
{
///label pays
var label1 = document.createElement('label');
var texte=document.createTextNode('Pays:*' );
label1.appendChild(texte);
sv.appendChild(label1);
var new_select=document.createElement('select');
new_select.setAttribute('id','sel_pays');
new_select.setAttribute('name','pays');
new_select.setAttribute('onChange','autre("sp_pays","sel_pays")');
sv.appendChild(new_select);
var new_option=document.createElement('option');
new_option.setAttribute('value','Pays');
new_option.setAttribute('selected','selected');
var texte=document.createTextNode('-----Pays-----' );
new_option.appendChild(texte);
new_select.appendChild(new_option);
<? $tab_main=array(); ?>
var new_option=document.createElement('option');
new_option.setAttribute('value','France');
var texte=document.createTextNode('France' );
new_option.appendChild(texte);
new_select.appendChild(new_option);
<? array_push($tab_main,"France"); ?>
var new_option=document.createElement('option');
new_option.setAttribute('value','Tunisie');
var texte=document.createTextNode("Tunisie" );
new_option.appendChild(texte);
new_select.appendChild(new_option);
<? array_push($tab_main,"Tunisie"); ?>
<?
///remplissage à partir BD
$liste=implode("','",$tab_main);
$requette_pays="select distinct(pays) from ANNONCE where id_famille='1' and paysnot in ('$liste') order by pays";
$req_pays=query($requette_pays);
while($res_pays=mysql_fetch_array($req_pays))
{
?>
new_option= document.createElement("option");
new_select.appendChild(new_option);
new_option.value=" <? echo $res_marque[marque];?>";
new_option.text="<? echo ucfirst(strtolower($res_marque[marque]));?>";
<? } ?>
var new_option=document.createElement('option');
new_option.setAttribute('value','autre');
var texte=document.createTextNode('Autre' );
new_option.appendChild(texte);
new_select.appendChild(new_option);
////autre pays (span visible ou invisible)
var span = document.createElement('span' );
span.setAttribute('id','sp_pays');
span.setAttribute('style','display:none' );
var valeurspan = document.createTextNode(' Tapez le nom votre pays: ' );
var input = document.createElement('input' );
input.setAttribute('type','text' );
input.setAttribute('name','autre_pays');
span.appendChild(valeurspan);
span.appendChild(input);
sv.appendChild(span);
}
else
{
if (document.getElementById('sel_famille').value=='animaux')
{///creation dynamique d'un formulaire pour la famille animaux
}
}
}
</script>
</head>
<body>
<form action="add.php" method="post" name="form1"><table width="707" border="0">
<tr>
<td width="144"><input style="color:#FF0000 " type="text" name="txt"></td>
<td width="553"><select id="sel_famille" name="famille" onChange="create_form()">
<option value="famille" selected >----Famille----</option>
<option value="auto" >Auto</option>
<option value="animaux">Animeaux</option>
</select>
</td>
</tr>
<tr>
<td> </td>
<td id="td_prov"></td>
</tr>
</table>
</form>
</body>
</html>