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 23/03/2007, 09h48   #1
Invité régulier
 
Inscription : juillet 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 21
Points : 8
Points : 8
Par défaut fonctions et formulaires appel de fonction

Bonjour, dans un message précédent on m'a gentiment indiqué comment afficher le résultat d'une requête php dans la même page

Code :
1
2
3
4
5
6
7
8
9
 
<?php
if(isset($_POST['t']))
$sql = "SELECT intitule FROM table WHERE champ LIKE '%".mysql_real_escape_string($_POST['t'])."%'";
$res = mysql_query($sql);
while($row = mysql_fetch_assoc()) {
echo $row['intitule'].'<br/>';
}
?>
Super. Mais voila je suis un peu tordu et je me pose une question

Soit une page avec plusieurs formulaires A ce jour chaque formulaire appel une nouvelle page php via la méthode ACTION.

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
27
28
29
30
31
32
 
<?php /* Date de création: 02/01/2007 */ ?>
<html>	
<head> 
<LINK rel="stylesheet" type="text/css" href="style/style.css">
</head>
<body class="fond">	
<h1 class="centrecoul">
TESTS DE LIAISON AVEC UNE BASE <br> DE DONNEES MYSQL<br>
</h1>
<br><br>
<?php 
echo "<h1 class=\"pascenter\">" ;
echo "Texte mis en forme avec une CSS";
echo "</h1>";
echo '<form class="sty1" action="reqdb.php" method="post">
<p>Valeur  :    <input type="text" name="element" size="40"> 
<p><input type="submit" value="Ajout d\'un élément"></p>
</form>'; 
echo '<hr>';	 
echo'<br><form action="voirdb.php">	
 <p><input type="submit" value="Voir la table"></p>
</form>'; 			  
include('voirdb.php.php'); 
echo '<hr>';
echo '<br>
<form action="vidertable.php">	
 <p><input type="submit" value="Vider la table"></p>
</form>	';
?>
</body>
</html>
j'ai donc 3 champs dans 3 formulaires

Prenons l'exemple du formulaires "voirdb.php". Je voudrais mettre à la place l'Action : action="<?php echo $_SERVER['PHP_SELF']; ?> et copier le code se trouvant dans le fichier voirdb.php dans cette même page.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<?php			  
include('Include/Fsql.php');  
include('Include/param.php'); 
// Connexion et sélection de la base
if($idcon=consql($MYSERVER, $MYUSER, $MYPWD,$MYBASE))
	{	
	$requete="SELECT * FROM `FAMILLE` ORDER BY 1";	
	// Executer des requetes SQL  => ici un SELECT
	if ($result=exsql($requete))
	{
	// Afficher des résultats en HTML
		affhtml($result);
	}
	// Fermeture de la connexion
	mysql_close($idcon);	
	}
?>
Comme vous pouvez le voir j'ai deux : include('Include/Fsql.php');
include('Include/param.php'); (c'est fichier contiennent des fonctions comme affhtml()... pour le premier et les paramètres de connections à la base pour le second)

Fsql.php est une sorte de bibliotheque de fonction. :

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
<?php 
// Connexion et sélection de la base
function consql($host,$user,$pwd,$base){	  
echo "<h1 class=\"centrecoul\">";
echo "Essai de Connection à la base"."</p>";	
$link = mysql_connect($host, $user, $pwd)
    or die("Impossible de se connecter");
echo "Connexion réussie"."</p>";
mysql_select_db($base) or die("Impossible de selectionner la base $base");
echo "</h1>"	;
return $link;
}  
 
//****************************************************************************
// Executer des requetes SQL
function exsql($query){  
echo "<h1 class=\"pascenter\">";
echo "Execution de la requete $query"."</p>";
$result = mysql_query($query) or die("La requête a échoué");  
echo "</h1>"	;
return $result;
}	  
//****************************************************************************
// Afficher des résultats en HTML
function affhtml($result){	
echo "<h1 class=\"pascenter\">";
echo "Affichage du resultat"."</p>";
echo "<table width=250 height=50 border='1' cellpadding='1' cellspacing='1'>\n";
while ($line = mysql_fetch_assoc($result)) {
    echo "\t<tr>\n";
    foreach ($line as $col_value) {
        echo "\t\t<td width=500>$col_value</td>\n";
    }
    echo "\t</tr>\n";
}
echo "</table>\n";
echo "</h1>"	; 
}
?>
Voilà donc mon problème : Comme appeler dans la méthode action action="<?php echo $_SERVER['PHP_SELF']; ?> le bon code : c'est à dire dans notre cas => Voirdb qui lui fais appelle aux fonctions de la bibliotheque sans oublier que notre page contiendra au final plusieurs formulaires appelant chacun sont codes et ses fonctions.
Voilà j'espère avoir été clair !
Ps je ne souhaite pas spécialement le code mais plutôt la méthode qui me permettrait de faire cela car mon objectif est de le faire moi même (mais avec votre aide quand je coince )

Merci pour vos idées

Cordialement

Sylvain
commedab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2007, 10h51   #2
Membre habitué
 
Avatar de Sarrus
 
Inscription : mai 2005
Messages : 180
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations forums :
Inscription : mai 2005
Messages : 180
Points : 102
Points : 102
Lorque j'ai plusieurs formulaires dans la même page, je pose des balises hidden dans chaque formulaire de ce genre :

Code :
1
2
3
4
5
6
7
8
9
10
11
<form>
 
 <input type hidden name="form" value="form1"/>
 
</form>
 
<form>
 
 <input type hidden name="form" value="form2"/>
 
</form>
Et lors de l'exécution du code php, je teste :

Code :
1
2
3
4
5
6
7
8
if ($_POST['form']=="form1")
{
   //code à exécuter pour le form1
}
if ($_POST['form']=="form2")
{
   //code à exécuter pour le form2
}
__________________
http://www.guilde-active.fr
Sarrus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2007, 11h06   #3
Membre habitué
 
Inscription : mai 2004
Messages : 200
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 200
Points : 101
Points : 101
Oué moi aussi je fais des champs cachés et execute le code necessaire en fonction de ce qui doit etre executé, mais tout simplement, car je trouve que tu te complique un peu la vie.

Tu crée plusieurs fichiers avec tes bouts de code, et les includes qui vont bien pour ta connexion etc...

et c'est ces fichiers que tu appel dans test test de champs cachés. Enfin si j'ai bien compris ce que tu veux faire, il ne faut pas être avare sur les fichiers, car des fois a vouloir tout mettre sur la meme page tu va t'y perdre. Donc je serai toi je decouperai mon code d'execution et le placerai dans des fichier (exe1.php, exe2.php) tu fais sa pour le nombre de formulaire, et dans ton script qui est executer par l'action du formulaire, tu fais un include de exe2.php par exemple.
__________________
La programmation, c'est tout un art
gregal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2007, 12h47   #4
Invité régulier
 
Inscription : juillet 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 21
Points : 8
Points : 8
Par défaut c'est tout bon

merci à vous deux...

pour info voici un morceau du code modifié. Et le TOP c'est que je garde mes petit fichier de fonctions....

Code :
1
2
3
4
5
6
 
echo '<br><form method="post" action='.$_SERVER['PHP_SELF'].'>	
<input type="hidden" name="t">
<p><input type="submit" value="Voir la table"></p>' ;
if(isset($_POST['t'])){include('voirdb.php');}   
echo '</form>';
Reste encore à bien bosser sur ce principe sur tous les formulaires et afficher le résultat ou je veux.

Merci

ps si vous avez un avis sur ce code merci d'avance...

Sylvain
commedab 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 15h20.


 
 
 
 
Partenaires

Hébergement Web