Liste déroulante en php
Fermé
elodie
-
13 févr. 2003 à 17:59
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 - 14 févr. 2003 à 16:23
Bobinours Messages postés 2898 Date d'inscription jeudi 26 avril 2001 Statut Membre Dernière intervention 21 mars 2013 - 14 févr. 2003 à 16:23
A voir également:
- Liste déroulante en php
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Google sheet liste déroulante - Accueil - Guide bureautique
- Supprimer liste déroulante excel - Forum Excel
- Easy php - Télécharger - Divers Web & Internet
7 réponses
Bobinours
Messages postés
2898
Date d'inscription
jeudi 26 avril 2001
Statut
Membre
Dernière intervention
21 mars 2013
504
14 févr. 2003 à 04:36
14 févr. 2003 à 04:36
Bonsoir elodie,
Pourquoi as-tu mis des crochets au nom : nomclient[].
Est-ce que : nomclient ne te convient pas ?
Les crochets indiquent que le champ deviendra un tableau de variables PHP. Il est utilisé pour les SELECT MULTIPLE.
Pour y accéder il faudra faire : $_GET[nomclient][0]
(si je ne dis pas de bêtise).
Je n'ai pas compris la fin de ta question, si c'est la récupération de la valeur qui te pose problème ou si c'est comment faire avec la clé étrangère.
Pourquoi as-tu mis des crochets au nom : nomclient[].
Est-ce que : nomclient ne te convient pas ?
Les crochets indiquent que le champ deviendra un tableau de variables PHP. Il est utilisé pour les SELECT MULTIPLE.
Pour y accéder il faudra faire : $_GET[nomclient][0]
(si je ne dis pas de bêtise).
Je n'ai pas compris la fin de ta question, si c'est la récupération de la valeur qui te pose problème ou si c'est comment faire avec la clé étrangère.
G 1 autre pb ( Je débute dans le php, je suis désolé )
Dans mon formulaire, g 1 liste déroulante "code postal" et 1 autre "ville".
Je voudré savoir comment il faut faire pour que, lorsque je choisi mmon code postal, la ville s'affiche automatiquement dans mon champ.
En sachant que code postal et ville sont dans la meme table "cp"
J'espere que quelqu'un pourra m'aider, Merci d'avance
Voila mon code:
<?
include ("connexion.php");
$sql="Select code FROM cp";
$req=mysql_query($sql) or die ('Erreur SQL!'.$sql.'<br>'.mysql_error());
?>
CP:
<select name="CP" Tabindex=2>
<? While($data=mysql_fetch_array($req)){ ?> <option value="<? echo $data['code']; ?>"><? echo $data['code']; ?></option>
<? } ?>
</select>
<?
$sql="Select ville FROM cp where code='$CP'";
$req=mysql_query($sql) or die ('Erreur SQL!'.$sql.'<br>'.mysql_error());
<select name="ville" Tabindex=2>
<? While($data=mysql_fetch_array($req)){ ?>
<option value="<? echo $data['ville']; ?>"><? echo $data['ville']; ?></option>
<? }
mysql_close(); ?>
</select>
Dans mon formulaire, g 1 liste déroulante "code postal" et 1 autre "ville".
Je voudré savoir comment il faut faire pour que, lorsque je choisi mmon code postal, la ville s'affiche automatiquement dans mon champ.
En sachant que code postal et ville sont dans la meme table "cp"
J'espere que quelqu'un pourra m'aider, Merci d'avance
Voila mon code:
<?
include ("connexion.php");
$sql="Select code FROM cp";
$req=mysql_query($sql) or die ('Erreur SQL!'.$sql.'<br>'.mysql_error());
?>
CP:
<select name="CP" Tabindex=2>
<? While($data=mysql_fetch_array($req)){ ?> <option value="<? echo $data['code']; ?>"><? echo $data['code']; ?></option>
<? } ?>
</select>
<?
$sql="Select ville FROM cp where code='$CP'";
$req=mysql_query($sql) or die ('Erreur SQL!'.$sql.'<br>'.mysql_error());
<select name="ville" Tabindex=2>
<? While($data=mysql_fetch_array($req)){ ?>
<option value="<? echo $data['ville']; ?>"><? echo $data['ville']; ?></option>
<? }
mysql_close(); ?>
</select>
Bobinours
Messages postés
2898
Date d'inscription
jeudi 26 avril 2001
Statut
Membre
Dernière intervention
21 mars 2013
504
14 févr. 2003 à 12:29
14 févr. 2003 à 12:29
Hop là ! Je t'arrête :-)
Ce n'est pas bon du tout de faire 2 requêtes SQL là où une seule suffit (pour des raisons d'optimisation d'accès base).
Ensuite il faut ajouter une vérification JavaScript pour changer les listes déroulantes, ce qui est moins évident.
<?php
include("connexion.php");
$sql = "SELECT code, ville FROM cp";
$req = mysql_query($sql) or die ('Erreur SQL!'.$sql.'<br>'.mysql_error());
while($data = mysql_fetch_array($req)) {
$t_data[] = $data;
}
// Fermeture de la base
mysql_close();
?>
CP:
<select name="CP" tabindex="2" onchange="this.form.ville.selectedIndex = this.selectedIndex;">
<?php
foreach ($t_data as $data)
{
?>
<option value="<? echo $data['code']; ?>"><? echo $data['code']; ?></option>
<?php
}
?>
</select>
<select name="ville" tabindex="3" onchange="this.form.ville.selectedIndex = this.selectedIndex;">
<?php
foreach ($t_data as $data)
{
?>
<option value="<? echo $data['ville']; ?>"><? echo $data['ville']; ?></option>
<?php
}
?>
</select>
L'inconvénient de cette méthode c'est que tu ne peux pas classer tes listes à la fois par numéro de code postal et par nom de ville, mais ça reste le meilleur compromis pour ce que tu veux faire.
PS : Je te demandais quelle était ta première erreur.
Ce n'est pas bon du tout de faire 2 requêtes SQL là où une seule suffit (pour des raisons d'optimisation d'accès base).
Ensuite il faut ajouter une vérification JavaScript pour changer les listes déroulantes, ce qui est moins évident.
<?php
include("connexion.php");
$sql = "SELECT code, ville FROM cp";
$req = mysql_query($sql) or die ('Erreur SQL!'.$sql.'<br>'.mysql_error());
while($data = mysql_fetch_array($req)) {
$t_data[] = $data;
}
// Fermeture de la base
mysql_close();
?>
CP:
<select name="CP" tabindex="2" onchange="this.form.ville.selectedIndex = this.selectedIndex;">
<?php
foreach ($t_data as $data)
{
?>
<option value="<? echo $data['code']; ?>"><? echo $data['code']; ?></option>
<?php
}
?>
</select>
<select name="ville" tabindex="3" onchange="this.form.ville.selectedIndex = this.selectedIndex;">
<?php
foreach ($t_data as $data)
{
?>
<option value="<? echo $data['ville']; ?>"><? echo $data['ville']; ?></option>
<?php
}
?>
</select>
L'inconvénient de cette méthode c'est que tu ne peux pas classer tes listes à la fois par numéro de code postal et par nom de ville, mais ça reste le meilleur compromis pour ce que tu veux faire.
PS : Je te demandais quelle était ta première erreur.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ma première erreur était que j'arrivé pas a faire passer ma valeur de ma liste déroulante dans une autre page. Il fallait seulement que je mette:
< select name="client">
<option value="<? echo $data['RefClient']; ?>">
<? echo $data['RaisonSociale']; ?>
</option>
</select>
Ainsi dans mon autre page je n'avé qu'à mettre $client qui comprené la valeur que je voulé.
Et les crochets de client[] c'était 1 erreur de ma part, c'était 1 test que j'avé fé auparavant et que g oublié de supprimé.
Merci pour ta solution, pour mon autre pb. Je vé l'essayé.
< select name="client">
<option value="<? echo $data['RefClient']; ?>">
<? echo $data['RaisonSociale']; ?>
</option>
</select>
Ainsi dans mon autre page je n'avé qu'à mettre $client qui comprené la valeur que je voulé.
Et les crochets de client[] c'était 1 erreur de ma part, c'était 1 test que j'avé fé auparavant et que g oublié de supprimé.
Merci pour ta solution, pour mon autre pb. Je vé l'essayé.
salut bobinours
Ton système marche super bien. Je te remerci beaucoup.
Par contre je voudré savoir ce qu'ilfaut changé si, cette fois-ci le champ qui sera affiché est seulement un champ texte et non 1 liste
ex:
< input type="texte" name="ville" tabindex="3">
J'ai essayé plusieur truc, mais ca ne marche pas.
Un petit coup de pouce, encore une fois, ne me dérangeré pas.
Merci.
Ton système marche super bien. Je te remerci beaucoup.
Par contre je voudré savoir ce qu'ilfaut changé si, cette fois-ci le champ qui sera affiché est seulement un champ texte et non 1 liste
ex:
< input type="texte" name="ville" tabindex="3">
J'ai essayé plusieur truc, mais ca ne marche pas.
Un petit coup de pouce, encore une fois, ne me dérangeré pas.
Merci.
Bobinours
Messages postés
2898
Date d'inscription
jeudi 26 avril 2001
Statut
Membre
Dernière intervention
21 mars 2013
504
14 févr. 2003 à 16:23
14 févr. 2003 à 16:23
Change juste cette ligne :
<select name="CP" tabindex="2" onchange="this.form.ville.value = this.options[this.selectedIndex].value;">
<select name="CP" tabindex="2" onchange="this.form.ville.value = this.options[this.selectedIndex].value;">
14 févr. 2003 à 11:05
Mais avec un peu d'acharnement, g réussi à trouver la solution.
Aurevoir
14 févr. 2003 à 11:46