Liste déroulante php + remplissage automatique de champs
fullzone
Messages postés5Date d'inscriptionlundi 18 août 2003StatutMembreDernière intervention26 avril 2005
-
24 avril 2005 à 10:50
fullzone
Messages postés5Date d'inscriptionlundi 18 août 2003StatutMembreDernière intervention26 avril 2005
-
26 avril 2005 à 15:03
Bonjour ! Je suis actuellement face à un vrai casse-tête, qui sera peut-être très simpliste pour vous ;)
Dans un formulaire, j'ai une liste déroulante dans laquelle doit apparaître les champs $fnom de ma table $table_fourn
Donc tous les noms de société se trouvant dans cette table se trouvent dans la liste. Ensuite, lorsque je sélectionne un nom, je dois voir apparaître automatiquement le nom du contact, son téléphone, la rue, le numéro, le code postal, etc ... dans les 'imput' se trouvant dessous (donc remplissage automatique).
Le problème est que je n'arrive qu'à faire remplir mes 'imput' que par les donnée du champs $fnom et uniquement celui-là. Pas moyene d'intégrer mes champs $fcontacta; $frue, $fnum, etc ... aux 'imput' prévus. Ce qui m'embête, c'est que je voudrais intégrer du PHP dans du JAVASCRIPT, mais comme tout le monde le sait ... c'est pas possible ;)
CODE :
________________________________________________________________________________
<? include("conf/mysql_connect.inc.php3");
$recup=mysql_query("SELECT * FROM $table_fourn ORDER BY fnom ASC ");
$result = mysql_query($recup);
echo '</select>'."\n";
?>
________________________________________________________________________________
Vous allez me dire que je prends certainement la mauvaise direction, mais je tourne vraiment en rond. Y-a-t-il un tuto précis à ce sujet ??? Pouvez-vous m'aider ??? Merci à tous !
et après dans ton select, tu fais onChange="javascript:maFonction()" .
Avec maFonction qui récupère l'index sélectionné, et qui rempli avec les lignes des tableaux correspondantes !
function maFonction()
{
index=document.monForm.monSelect.selectedIndex;
document.monForm.maVille.value=mesVilles[index];
document.monForm.maRue.value=mesRues[index];
}
un truc dans le genre, j'ai pas testé mais ca devrait etre quasi bon !
allé a+++
fullzone
Messages postés5Date d'inscriptionlundi 18 août 2003StatutMembreDernière intervention26 avril 2005 25 avril 2005 à 19:37
J'ai encore un petit soucis ... bon je débute aussi ;)
Je ne comprends toujours pas que tu m'insère une balise PHP entre 2 balise <script>
Après une probable mauvaise interprétation de ton opération, je me retrouve avec l'affichage des bons résultats, certes, mais tous alignés sur une ligne tout en haut de ma page (dans le head) ... sans doute la balise ECHO mal placée ...
Je m'arrache les cheveux lol
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_djagger
Messages postés536Date d'inscriptionlundi 5 mai 2003StatutMembreDernière intervention29 janvier 20091 26 avril 2005 à 09:50
En fait je mets le php entre deux balises <script> pour créer toutes les variables en js !
Mais mets ca entre tes balises <script> !
y'a une petite erreur ! Il faut mettre les variables entre ' : c'est du texte !
donc ca fait dans la boucle while :
echo "mesVilles[".$i."] = \ " ".$ligne[fville]."";\n";
Après, dans ton navigateur tu obtiens un truk dans le genre :
Du coup, tu as toutes tes données de tes tables dans des var js !
Après tu peux donc y accèder avec la fonction js ! voila !
Si tu comprends pas hésite pas !
fullzone
Messages postés5Date d'inscriptionlundi 18 août 2003StatutMembreDernière intervention26 avril 2005 26 avril 2005 à 14:43
Pour plus de clarté dans mes propos, voici le code que j'ai ré-adapté en fonction de tes conseils :
1. <?php
include "header.inc.php3";
include("conf/conf.inc.php3");
include("conf/mysql_connect.inc.php3");
$recup= mysql_query("SELECT * FROM $table_fourn ORDER BY fnom ASC ");
$result = mysql_query($recup);
while ($ligne=mysql_fetch_array($recup)) {
$fnom = $ligne[fnom];
$fcontacta = $ligne[fcontacta];
}
?>
///////////////////////////////////////////////////////////////////////////////////////////
2. <script language ="JavaScript" type="text/JavaScript">
function affich()
{
index=document.dnom.fnom.selectedIndex;
document.dnom.fnom.value=nom[index];
document.dcontact.fcontacta.value=contact[index];
}
</script>
<script>
nom=Array();
contact=Array();
<?php
$i=0;
while ($ligne=mysql_fetch_array($recup))
{
echo "nom[".$i."] = ".$ligne[fnom].";\n";
echo "contact[".$i."] = ".$ligne[fcontacta].";\n";
$i++;
}
?>
</script>
///////////////////////////////////////////////////////////////////////////////////////////
3. Maintenant, j'ai du mal à adapter mon menu déroulant (select) en fonction, sachant que mes fournisseurs doivent y apparaître, et qu'en en sélectionnant un, son nom doit apparaitre dans le champs appelé [dnom] et le contact dans le champs [dcontact]. Comment dois-je m'y prendre ? Encore un tout tout tout grand merci à toi ;)
cs_djagger
Messages postés536Date d'inscriptionlundi 5 mai 2003StatutMembreDernière intervention29 janvier 20091 26 avril 2005 à 14:55
de rien ;)
là ca a l'air pas mal ! [juste : ca sert a rien de refermer ta balise <script> si tu en réouvres une juste derrière ! c comme si tu fesais grasencore gras ! ca sert a rien ;) ]
après il faut que sur ton select tu mettes une action onChange :
<select name="monSelect" onChange="javascript:affich()">
<option .....etc>
</select>
Et la fonction affich doit etre bonne !
Dernière petite chose, si tu veux initialiser tes champs tu fais dans ta balise BODY :
pour appeler ta fonction au chargement de la page !
Dans le menu déroulant se trouvent bien mes nom de société. Par contre, dans le champ nom et contact en dessous, que dalle, nada, rien ! Le problème est-il dû à ma balise SELECT ou dois-je modifier le NAME ou ajouter un ID à mes champs ou autre chose ???