Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/08/2007, 11h50   #1
Membre à l'essai
 
Avatar de bogsy15
 
Inscription : mai 2006
Messages : 147
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 147
Points : 24
Points : 24
Par défaut Plusieurs submit dans le même formulaire

Bonjour tout le monde,

J'ai un formulaire qui permet de saisir des informations sur des clients. Ces informations seront ensuite enregistrées dans un bdd.

Ce que je voudrais faire c'est :
- tout d'abord saisir le numéro du dossier du patient
- avec ce numéro je récupère les données de la bdd en fonction du n° de dossier
- et faire afficher ces données dans les champs correspondants situés en dessous (ce qui évite de resaisir le nom, prenom, date de naissance ...)
- et ensuite valider ce formulaire pour l'enregistrement dans la base de données

Voici mon code du formulaire :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<form method="POST" action="index.php?page=Edition/test" name="formulaire">		
	<table style="font-family:'Times New Roman', Times, serif;">	
	<tr>
		<td width="150"><span class="Style3">Nom</span></td>
		<td><input type='text' name='box_nom' value="<? if (isset($nom)){echo $nom;} ?>"></td>
	</tr>
	<tr>
		<td width="150"><span class="Style3">Prénom</span></td>
		<td><input type='text' name='box_prenom' value="<? if (isset($prenom)){echo $prenom;} ?>"></td>
	</tr>
	<tr>
	        <td width="150">Date de naissance*</td>
	        <td><input type='text' name='box_naiss' value="<? if (isset($date_naiss)){echo $date_naiss;} ?>"></td>
	</tr>
	<tr><form method="POST">
		<td width="150"><input type="submit" value="valider" name="valider"></td>
		<td><input type='text' name='box_num_dossier' value="<? if (isset($num_dossier)){echo $num_dossier;} ?>"></td>
	</tr></form>
	</table>
	<input type="submit" value="Enregistrer" name="envoyer"></center>
</form>
Voici le code du traitement :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
if (isset($_POST['valider']))
{
	if(isset($_POST['box_num_dossier']))      
		$num_dossier=$_POST['box_num_dossier'];
	else      
		$num_dossier="";
	include("Include/connexion.php");	
 	$sql = "SELECT nom, prenom,date_naiss FROM patient WHERE num_dossier='$num_dossier'";
        $r = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
	while($a=mysql_fetch_object($r))
        {
    	   $nom=$a->nom;
    	   $prenom=$a->prenom;
    	   $date_naiss=$a->date_naiss;
	}
	include("Include/deconnexion.php");
}
elseif(isset($_POST['envoyer']))
{
        //ici je récupère la valeur des champs
        // ensute j'exécute la requête
	include("Include/connexion.php");
	$sql = "INSERT INTO patient (nom,prenom,date_naiss,num_dossier,identite_preana,date_preana,heure_preana,pharma_preana,option_preana,preana_autre) VALUES('$nom','$prenom','$date_naiss','$num_dossier','$identite_preana','$la_date','$heure','$pharma','$res_case','$zone_texte')";
	mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
	include("Include/deconnexion.php");
}
j'ai vu ceci sur la FAQ ici mais ça ne m'as pas beaucoup aidé.
Pensez-vous que celà soit possible ? Avez-vous une idée ?
Merci d'avance
bogsy15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2007, 13h18   #2
Membre chevronné
 
Avatar de cadoudal56
 
Inscription : février 2005
Messages : 671
Détails du profil
Informations personnelles :
Âge : 40

Informations forums :
Inscription : février 2005
Messages : 671
Points : 646
Points : 646
Hello,

Tu ne peux pas avoir un formulaire dans un formulaire, c'est tout simplement pas possible....

Tu dois avoir un premier formulaire (au dessus du premier) et le second ensuite ce qui donnerait quelquechose comme ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
 
 
	<table style="font-family:'Times New Roman', Times, serif;">
	<tr><form method="POST">
		<td width="150"><input type="submit" value="valider" name="valider"></td>
		<td><input type='text' name='box_num_dossier' value="<? if (isset($num_dossier)){echo $num_dossier;} ?>"></td>
	</tr></form>
	<tr>
        <form method="POST" action="index.php?page=Edition/test" name="formulaire">	
		<td width="150"><span class="Style3">Nom</span></td>
		<td><input type='text' name='box_nom' value="<? if (isset($nom)){echo $nom;} ?>"></td>
	</tr>
	<tr>
		<td width="150"><span class="Style3">Prénom</span></td>
		<td><input type='text' name='box_prenom' value="<? if (isset($prenom)){echo $prenom;} ?>"></td>
	</tr>
	<tr>
	        <td width="150">Date de naissance*</td>
	        <td><input type='text' name='box_naiss' value="<? if (isset($date_naiss)){echo $date_naiss;} ?>"></td>
	</tr>
 
	</table>
	<input type="submit" value="Enregistrer" name="envoyer"></center>
</form>
@+
cadou
__________________
PHP Competition System
Script de gestion de coupes et championnats
http://phpcompet.free.fr

Mon jeu de foot
cadoudal56 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2007, 14h06   #3
Membre à l'essai
 
Avatar de bogsy15
 
Inscription : mai 2006
Messages : 147
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 147
Points : 24
Points : 24
En faisant deux formulaires l'un derrière l'autre, est-ce que je vais pouvoir :

Avec le premier formulaire :
- saisir le numéro du dossier du patient
- avec ce numéro récupèrer les données de la bdd en fonction du n° de dossier
- afficher ces données dans les champs correspondants situés dans le deuxième formulaire (ce qui évite de resaisir le nom, prenom, date de naissance ...)

Avec le deuxième formulaire :
- valider le formulaire en enregistrant dans la base de données les valeurs contenu dans les champs du deuxième formulaire (avec les valeurs reçues par le premier formulaire

Ca devrait pouvoir se faire ?

Sinon une autre petite question : peux-t-on passer des paramètre à la soumission du formulaire ?
Du genre :
Code :
1
2
<form method="POST" action="index.php?page=Edition/test&lenom=$nom">
</form>
bogsy15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2007, 14h32   #4
Membre à l'essai
 
Avatar de bogsy15
 
Inscription : mai 2006
Messages : 147
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 147
Points : 24
Points : 24
J'ai fait ca pour le premier formulaire mais ca ne m'affiche pas les valeurs dans ls champs correspondants.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?php 
	if(isset($_GET['num']))
	{
		$num_dossier = $_GET['num'];
	}
?>
<table style="font-family:'Times New Roman', Times, serif;">	
	<tr><form method="POST" action="index.php?page=Edition/test&num=$num_dossier">
	      <td width="150"><input type='text' name='box_num_dossier' value="<? if (isset($num_dossier)){echo $num_dossier;} ?>" size='10' class="zonedetexte"></td>
              <td><input type="submit" value="valider" name="valider"></td>
	</tr></form>
</table>
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
if (isset($_POST['valider']))
{
	if(isset($_POST['box_num_dossier']))      
		$num_dossier=$_POST['box_num_dossier'];
	else      
		$num_dossier="";
 
	include("Include/connexion.php");	
 
 	$sql = "SELECT nom, prenom,date_naiss FROM patient WHERE num_dossier='$num_dossier'";
        $r = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
 
	while($a=mysql_fetch_object($r))
        {
              $nom=$a->nom;
              $prenom=$a->prenom;
              $date_naiss=$a->date_naiss;
 
        }
        // affiche les bonnes valeurs, dc pas de problème à la récupération
	echo '<br />'.$nom;
	echo '<br />'.$prenom;
	echo '<br />'.$date_naiss;
 
	include("Include/deconnexion.php");
}
bogsy15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2007, 19h15   #5
Membre du Club
 
Inscription : mars 2003
Messages : 50
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 50
Points : 49
Points : 49
Salut,

Commençons petit, on peu imaginer une page du genre:
Code :
1
2
3
4
5
6
7
8
9
 
N° de patient    <input>       <bouton>"Charger les informations"</bouton>
--------------------------------------------------------------------------
Numéro de patient <input caché (type="hidden")>
Nom <input>
Prénom <input>
Date naissance <input>
 
<bouton>"Enregistrer"</bouton>
Donc deux formulaires clairement séparés. Le premier "Charger..." appelle la page elle même, qui au chargement vérifie (en php bien entendu) si elle à récu un numéro de patien valide, si oui, elle fait une requête pour récupérer le reste des informations et crée quatre variables (n°, nom, prenom, date_naiss), remplies avec les valeur de la base.
Ensuite on utilise ces valeurs pour remplir les input du deuxième formulaire, sans oublier un input caché qui contiendra le numéro d'abonné. Au moment de la validation du deuxième formulaire, on part sur une autre page qui va alors récupérer toutes les infos dont elle a besoin.

Normallement ça marche...
Pysk0B0b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2007, 23h41   #6
Membre à l'essai
 
Avatar de bogsy15
 
Inscription : mai 2006
Messages : 147
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 147
Points : 24
Points : 24
Je ne vois pas trop où tu veux en venir avec le input caché.
Sinon de mon coté, en validant le premier formulaire (qui récupère le n° de dossier), celui ci effectue bien la requête qui récupère les autres informations.
Par contre ces nouvelles informations ne s'affichent pas dans les champs correspondants du second formulaire.
bogsy15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 10h23   #7
Membre à l'essai
 
Avatar de bogsy15
 
Inscription : mai 2006
Messages : 147
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 147
Points : 24
Points : 24
C'est bon j'ai réussi, merci.
Le problème était au niveau du passage de paramètres.
bogsy15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h24.


 
 
 
 
Partenaires

Hébergement Web