Formulaire HTML : besoin d'aide

pontarose -  
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Voilà, j'ai un formulaire avec des boutons radio (chaque bouton correspond a une espèce) et j’ai un champ Autres dans lequel l’utilisateur peut entrer le nom d’une espèce.
Ainsi, pour un gène donnée, l’utilisateur peut soit activer le bouton radio correspondant a l’espèce qu’il étudie, soit écrire dans le champ Autres.

Exemple :
* Soit le gène 1. Dans le cas ou l’utilisateur écris dans le champ Autres, je veux que le nom qu’il ait inscris soit enregistré (en temps réel) dans la table espèce de ma base de donnée et que l’espèce apparaisse désormais avec un bouton radio.
Puis l’utilisateur appuie sur next, alors une nouvelle page du formulaire s’ouvre pour qu’il entre les données du gène 2.
* Pour le gène 2.
Le nom de l’espèce étant entré pour le gène 1, celui-ci est indiqué par un bouton radio et l’utilisateur n’a plus qu’à le cocher.


Pensez vous que c'est possible?
Si oui pouvez-vous me dire comment faire?

Je travaille sous unix, langage perl, SGBD MySQL et serveur Apache.
A voir également:

1 réponse

Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
salut,

je ne connais pas PERL mais une chose est sure, c'est surement possible.
mais à mon avis tu n'as pas besoin de deux étapes, tu peux ajouter une nouvelle espèce et un nouveau gène d'une nouvelle espèce en une fois.

à la soumission du formulaire tu testes la valeur des boutons radio :
si radio = 'autre' alors
     insertion sql de la valeur de 'autre' dans la table 'espece'
     récupération de l'identifiant de l'espece créée
     insertion sql de la valeur de 'nom_gene' + 'id_espece' dans la table 'gene'
sinon
     insertion sql de la valeur de 'nom_gene' + 'id_espece' (valeur du radio) dans la table 'gene'

ou alors tu le fais avec les deux étapes et dans ce cas tu te contentes d'ajouter la nouvelle espèce et tu affiches à nouveau la même page mais qui contiendra un radio de plus.
0
pontarose
 
Merci de ta réponse
* Ce qu’il y a c’est que mon gène a déjà été entregistré au préalable dans ma base de donnée, de plus les champs variant et gene-sequence (de la table gene) ne sont pas encore rempli dans ma base de donnée. Ils le seront dans la suite de mon formulaire.
Faut-il alors qu’à cette étape que je leur attribue la valeur null (chaîne de caractère vide)

* Est-ce qu’en fesant ça (une fois que j’aurais appuyé sur le bouton next pour voir apparaître la page suivante correspondant au gène suivant) le bouton radio correspondant a l’espèce ajouté (içi homme) apparaîtra t-il pour le gène suivant ?

Je suis désolé si mes questions peuvent parître idiote mais je suis débutante…sniff, sniff


Voiçi mon bout de code

if ($species == "Autre")
{
$ species = $homme;
$sql = "INSERT INTO species (species-id, species-name) VALUES('',' $species')";
$species-id = mysql_insert_id();
$sql = "INSERT INTO gene (gene-id, species-id, method-id, variant, gene_name, gene_sequence ) VALUES('','$ species-id ', '$ method ', '', '$ gene_name ', '')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

}
else
{
$sql = "INSERT INTO gene (gene-id, species-id, method-id, variant, gene_name, gene_sequence ) VALUES('','$ species-id ', '$ method ', '', '$ gene_name ', '')";
$species-id = mysql_insert_id();

}
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
salut,

fouillouillou...

je comprends pas grand chose.
de toute façon : tout est possible ou presque.
si il te faut absolument un formulaire en plusieurs étapes/pages le mieux est peut être de ne pas ajouter quoique ce soit à la bdd avant d'avoir collecté toutes les infos. en cas d'annulation à l'étape 3/5 par exemple tu te retrouverais avec des infos saisies mais incomplètes.

le mieux est donc peut être de stocker les données dans une variable de session que tu rempli au fur et à mesure et sur le dernier 'submit' tu t'en sers pour alimenter la bdd.

submit première page :
$_SESSION['species'] = $data;
//$data qui vient soit d'un radio soit du champ autre
si $data vient d'un radio alors
      $_SESSION['new_species'] = true;
sinon
      $_SESSION['new_species'] = false;

affichage deuxième page :
si $_SESSION['new_species']  alors
      ajout de $_SESSION['species'] dans les boutons radio

et au fur et à mesure tu collectes les autres infos et les ajoutes à $_SESSION.
à la fin tu stockes toutes les données.
0