Liste déroulante php + remplissage automatique de champs

fullzone Messages postés 5 Date d'inscription lundi 18 août 2003 Statut Membre Dernière intervention 26 avril 2005 - 24 avril 2005 à 10:50
fullzone Messages postés 5 Date d'inscription lundi 18 août 2003 Statut Membre Dernière intervention 26 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);





while ($ligne=mysql_fetch_array($recup)) {
$val = $ligne[fnom];
$val1 = $ligne[fcontacta];
$val2 = $ligne[ffixea];
$val3 = $ligne[fportablea];
$val4 = $ligne[frue];
$val5 = $ligne[fnum];
$val6 = $ligne[fposte];
$val7 = $ligne[fville];
}
?>

<script language="JavaScript" type="text/JavaScript">
function rempl(val)
{
var newElt=new Option(val, val, true, false);
document.getElementById("sel").options[document.getElementById("sel").length]=newElt;
}
function affich()
{
val=document.getElementById("sel")[document.getElementById("sel").selectedIndex].text;
document.getElementById("aff").value=val;
document.getElementById("aff1").value=val;
document.getElementById("aff2").value=val;
document.getElementById("aff3").value=val;
document.getElementById("aff4").value=val;
document.getElementById("aff5").value=val;
document.getElementById("aff6").value=val;
document.getElementById("aff7").value=val;
}
</script>

<?
echo '<select size=1 name="sel" id="sel" onchange="affich()">'."\n";

// Récupération des informations triées par ordre alphabétique
$sql = "SELECT * FROM $table_fourn ORDER BY fnom ASC";
$ReqLog = mysql_query($sql);

while ($resultat = mysql_fetch_row($ReqLog)) {
echo '<option value="'.$resultat.'">'.$resultat[3];
echo '</option>'."\n";
}

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 !

8 réponses

cs_djagger Messages postés 536 Date d'inscription lundi 5 mai 2003 Statut Membre Dernière intervention 29 janvier 2009 1
25 avril 2005 à 17:35
Salut !

Il faut qu'a partir de tes tableaux php, tu crées l'équivalent js :

ex

<script>
mesVilles=Array();
mesRues=Array();

<?php
$i=0;
while ($ligne=mysql_fetch_array($recup))
{
echo "mesVilles[".$i."] = ".$ligne[fville].";\n";
echo "mesRues[".$i."] = ".$ligne[frue].";\n";
etc ....
}
?>
</script>

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+++
0
cs_djagger Messages postés 536 Date d'inscription lundi 5 mai 2003 Statut Membre Dernière intervention 29 janvier 2009 1
25 avril 2005 à 17:36
arfff j'ai oublié un :

$i++;

dans le while !
0
fullzone Messages postés 5 Date d'inscription lundi 18 août 2003 Statut Membre Dernière intervention 26 avril 2005
25 avril 2005 à 18:57
J'essaie ça de suite ! D'avance un grand merci pour ton dévouement ;)
0
fullzone Messages postés 5 Date d'inscription lundi 18 août 2003 Statut Membre Dernière intervention 26 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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_djagger Messages postés 536 Date d'inscription lundi 5 mai 2003 Statut Membre Dernière intervention 29 janvier 2009 1
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 :

mesVilles =Array();
mesRues=Array();

mesVilles[0]="Rennes";
mesRues[0]="République;
mesVilles[1]="Nantes";
etc ....

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 !
0
fullzone Messages postés 5 Date d'inscription lundi 18 août 2003 Statut Membre Dernière intervention 26 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 ;)
0
cs_djagger Messages postés 536 Date d'inscription lundi 5 mai 2003 Statut Membre Dernière intervention 29 janvier 2009 1
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 !
0
fullzone Messages postés 5 Date d'inscription lundi 18 août 2003 Statut Membre Dernière intervention 26 avril 2005
26 avril 2005 à 15:03
Dernière précision (après j'espère que ça fonctionnera)

Voici ma balise select :
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
<?
echo '<select size=1 name="selectedIndex" id="selectedIndex" onChange="javascript:affich()">'."\n";

// Récupération des informations triées par ordre alphabétique
$sql = "SELECT * FROM $table_fourn ORDER BY fnom ASC";
$ReqLog = mysql_query($sql);

while ($resultat = mysql_fetch_row($ReqLog)) {
echo '<option value="'.$resultat.'">'.$resultat[3];
echo '</option>'."\n";
}

echo '</select>'."\n";
?>
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

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 ???

Encore merci
0
Rejoignez-nous