IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

fonctions et formulaires appel de fonction


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 21
    Points : 18
    Points
    18
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre habitué Avatar de Sarrus
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2005
    Messages : 180
    Points : 138
    Points
    138
    Par défaut
    Lorque j'ai plusieurs formulaires dans la même page, je pose des balises hidden dans chaque formulaire de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    }

  3. #3
    Membre habitué
    Inscrit en
    Mai 2004
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 201
    Points : 140
    Points
    140
    Par défaut
    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.

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 21
    Points : 18
    Points
    18
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appeler une fonction à partir d'une autre fonction
    Par Léti117 dans le forum MATLAB
    Réponses: 5
    Dernier message: 18/08/2011, 21h13
  2. Onclick : Appeler 2 fonctions / faire 2 appels
    Par Varkan dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 17/05/2011, 19h25
  3. Appeler une fonction à partir d'une autre fonction
    Par touta1 dans le forum Langage
    Réponses: 2
    Dernier message: 07/10/2009, 18h15
  4. Fonction valider formulaire appelle 2 fois la même page. Comment éviter celà ?
    Par Alexandrebox dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/02/2009, 09h58
  5. Réponses: 1
    Dernier message: 25/05/2007, 14h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo