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
Voila mon code Et mon problème, a la fin du code.Merci.
En gros je veux savoir comment récupérer la valeur sélectionné par un utilisateur à partir d'une liste déroulante, et par la suite l'envoyé dans une autre page pour l'inséré dans ma table de ma base de données.


//Ma page index

<form name="enr" action="insertion.php?client=$ref" method="get">

<h5> Le client:
<?
include ("connexion.php");

$sql="Select RefClient,RaisonSociale FROM clients";
$req=mysql_query($sql) or die ('Erreur SQL!'.$sql.'<br>'.mysql_error());
?>

<select name="nomclient[]" Tabindex=2>
<? While($data=mysql_fetch_array($req)){ ?>
<option><? echo $data['RefClient'].'   '.$data['RaisonSociale']; ?></option>
<? }
$ref=$nomclient[0];
?>
</select>
</h5>
<input type="submit" value="Enregistrer">
</form>

//Fin page index


//Ma page insertion.php

<body>
<?
include ("connexion.php");

$sql="Insert into contacts values ('','$civilite','$nom','$prenom','$fonction','$qualite','$telephone','$portable','$fax','$email','$remarque','','$client','')";
mysql_query($sql) or die ('Erreur SQL!'.$sql.'<br>'.mysql_error());
?>

Enregistrement éxécuté!
<br>
<a href="index.php"><input type="submit" value="valider" name="OK"></a>

</body>

//Fin page insertion

Lors de l'éxécution de mon script, voila ce que me dit l'URL:
"http://localhost/Projet/insertion.php?nomclient%5B%5D=3%A0%A0%A0essai2&civilite=Mr&nom=baba&telephone=1245788956&portable=1245788923&prenom=bouboul&fax=2356891245&fonction=&email=nom@serveur.fr&qualite=qualite2&remarque=rien"

En sachant que sur mon interface:
nomclient=3 esai2

Ainsi, je veu récupérer ma clé primaire(3) du client(essai2) que l'utilisateur à choisit dans la liste déroulante
Et l'envoyé dans ma page insertion, pour l'inséré dans ma table où la clé est 1 clé étrangère.
A voir également:

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
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.
0
Merci d'avoir réfléchi sur mon pb
Mais avec un peu d'acharnement, g réussi à trouver la solution.
Aurevoir
0
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 à 11:46
Et quelle était l'erreur ?
0
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>
0
Le pb, c ce que je fé ca ne marche pas et je voudré savoir comment on fait?
Merci
0
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
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.
0

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é.
0
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.
0
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
Change juste cette ligne :

<select name="CP" tabindex="2" onchange="this.form.ville.value = this.options[this.selectedIndex].value;">
0