Un formulaire integre dans un autre formulaire

Un formulaire integre dans un autre formulaire - HTML/CSS - Programmation

Marsh Posté le 02-09-2002 à 11:25:12    

Voila j ai ca :

Code :
  1. <form ....>
  2. ...
  3. <form>
  4. <select onChange=submit()>
  5. ...
  6. </select>
  7. </form>
  8. <input....>
  9. </form>


 
Le probleme donc c'est que mon submit me lance le form exterieur et non pas comme je le souhaiterais le form interne :-(
 
Quelqu'un a une astuce j ai essaye de nommer mais les formulaires...

Reply

Marsh Posté le 02-09-2002 à 11:25:12   

Reply

Marsh Posté le 02-09-2002 à 11:31:02    

http://forum.hardware.fr/forum2.php3?post=24682&cat=10
 
La question qui nous intéresse plutot c'est : "qu'est qui te pousse à avoir un formulaire inclu dans un autre ?"

Reply

Marsh Posté le 02-09-2002 à 11:40:28    

Ben dans mon select j ai une liste de domaine (provenant une bdd sql) quand je choisis un domaine je veux qu en dessous il y a une zone texte qui se mette a jour avec l alias du domaine.
 
Le but etant de pouvoir modifier le nom du domaine et l alias grace au form externe

Reply

Marsh Posté le 02-09-2002 à 11:56:42    

Tu utilises un langage pour générer tes pages (PHP, perl....) ?
 
Est-ce que la BDD alias <-> domaine a beaucoup d'enregistrements ?

Reply

Marsh Posté le 02-09-2002 à 12:00:06    

Oui php
Et non tres peu d enregistrement  
(moins de 10)

Reply

Marsh Posté le 02-09-2002 à 12:13:55    

Dans ce cas, ce que tu peux faire, c'est faire générer par PHP le JavaScript nécessaire à ta manip.
 
D'abord tu lui fais écrire ton <select>
 
<select name="domaine" onChange="selectAlias();">
  <option value="0">Domaine 1</option>
  <option value="1">Domaine 2</option>
  ...
</select>
 
 
Ensuite tu lui fais écrire un tableau JavaScript :
 
tabAlias = new Array(10);
tabAlias[0] = "Alias 1";
tabAlias[1] = "Alias 2";
...
 
 
Enfin, la fonction selectAlias, qui écrit dans la zone de texte le nom de l'alias sélectioné avec le <select> :
 
selectAlias() {
  document.monFormulaire.monChamp.value = tabAlias[document.monFormulaire.alias.selectedIndex];
}

Reply

Marsh Posté le 02-09-2002 à 12:16:06    

Je vais boufer et j essaye ca ensuite mais ca me parait etre pas mal

Reply

Marsh Posté le 02-09-2002 à 14:40:34    

Bon ca avance mais je coince sur la creation du tableau  
 
Je le mets comment en js dans ma page ?
echo "tabAlias = new Array(10)";
while....
echo "tabAlias[0] = $alias[$i]":
 
ca marcherait ca ?

Reply

Marsh Posté le 02-09-2002 à 14:43:36    

Plutot ça :
 
echo "tabAlias = new Array(10);";
while....
echo "tabAlias[0] = \"$alias[$i]\";";

Reply

Marsh Posté le 02-09-2002 à 14:58:13    

Ouais j ai essaye mais ca marche pas comme ca, il m affiche a l ecran ce qu'il y a dans mon echo ce que je trouve normal.
 
Tu peux me donner un exepmle de creation d un tableau js dans du html normal, je pense qu a partir de la je serais m'en sortir

Reply

Marsh Posté le 02-09-2002 à 14:58:13   

Reply

Marsh Posté le 02-09-2002 à 15:02:01    

Il te l'affiche à l'écran ? Tu bien mis tout ça entre des balises <script type="text/javascript"> ... </script> ?

Reply

Marsh Posté le 02-09-2002 à 15:07:52    

Nop donc je me suis dit pour le js (je connais pas du tout le js a la abse) faut faire ca, donc je l ai fait mais maintenant il me renvoit rien
 
je te montre ce que j ai fait ca sera plus clair

Code :
  1. <SCRIPT language="javascript">
  2. function selectAlias() {
  3. document.formulaire.modif.value = this.formulaire.elements['valeur'].options[this.formulaire.elements['valeur'].selectedIndex].text; //ca ca marche
  4. document.formulaire.alias.value = tabAlias.length; //la je fais juste un test voir si il me retrouve mon tableau
  5. }
  6. </script>


 
La partie important epurée

Code :
  1. echo "<FORM name = formulaire enctype=\"multipart/form-data\" METHOD=\"POST\" >"; $qw=mysql_query("select id, nom, alias from $prefix"._doc_."$nom" );
  2. echo "
  3. <script type=javascript>
  4. tabAlias = new Array(10);
  5. </script>";
  6. echo "Champ : <select name=valeur onChange='selectAlias()'>";
  7. while ($res=mysql_fetch_row($qw)){
  8.  echo "<script type=javascript>tabAlias[$res[0]] = $res[2];</script>";
  9.  echo "<option value=$res[0]>$res[1]</option>";
  10. }
  11. echo "
  12. <option value=''>---Nouveau $nom---
  13. </option></select>
  14. ";
  15. echo "
  16. <br>Modification ou Ajout : <input type=text name=modif>
  17. <br>Modification ou Ajout de l'alias: <input type=text name=alias>
  18. <br><input type=SUBMIT name=Supp value=Envoyer>
  19. </form></p>";


Message édité par Sebastien le 02-09-2002 à 15:09:39
Reply

Marsh Posté le 02-09-2002 à 15:37:17    

Oulala tu mélanges le javascript dans le formulaire... c'est pas très propre : tu dois faire chaque étape séparément.
 
Je vais pas te faire un "corrigé", mais voilà en gros ce que tu dois faire :
 
 
Vu qu'on a besoin d'écrire à 2 endroits le résultat de la requête, on va prendre un tableau dans lequel on va mettre les données renvoyées par la requête. Ça évitera d'exécuter celle-ci 2 fois.
 

$resultat = array();
 
...
 
while ($res = mysql_fetch_row($qw)) {
  array_push($resultat, $res);
}


 
 
Ensuite la partie JavaScript :
 

<script type="text/javascript">
function selectAlias() {
  document.formulaire.modif.value = tabAlias[document.formulaire.valeur.selectedIndex];
}
 
tabAlias = new Array(10);
 
<?
foreach ($resultat as $cle => $ligne) {
  echo "tabAlias[$cle] = \"$ligne[2]\";";
}
?>


 
Ensuite, le formulaire et notamment le <select> :
 

echo "Champ : <select name=\"valeur\" onChange=\"selectAlias();\">";
 
foreach ($resultat as $ligne) {
 echo "<option value=\"$ligne[0]\">$ligne[1]</option>";
}
echo "<option value=''>---Nouveau $nom---</option>\n</select>";


Message édité par gm_superstar le 02-09-2002 à 16:03:20
Reply

Marsh Posté le 02-09-2002 à 15:57:31    

Ok ca marche je te remercie beaucoup de ta patiente

Reply

Marsh Posté le 02-09-2002 à 15:58:26    

c qui la patiente ? Elle est jolie au moins ?  [:kunks]

Reply

Marsh Posté le 02-09-2002 à 16:06:33    

arf :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed