Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2752 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] Fonction php déclencé par un bouton

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Fonction php déclencé par un bouton

n°1731566
wifsimster
Turns your mind towards BeTa
Posté le 14-05-2008 à 11:25:56  profilanswer
 

Bonjour,
Voilà tout est dans le titre, j'aurais aimé savoir comment déclencher une fonction php à l'aide d'un bouton ?
Voici une partie de mon code :
 

Code :
  1. <form name="form_associatif" id="form_associatif" method="post" action="index.php?index.php?recuperation_formulaire">
  2. <table>
  3. <th>Information g&eacute;n&eacute;rale :</th>
  4. <tr>
  5.         ...
  6.         </tr>
  7. </table>
  8. <p id="boutons">
  9.  <input type="submit" value="Valider" onClick="Controle()">
  10.  <input name="effacer" type="reset" id="effacer" value="Effacer">
  11. </p>
  12. </form>


 
 
Ceci est la base de mon formulaire, ce que je voudrais faire c'est que lorsque je clique sur "Valider" ma fonction php permettant de valider mon formulaire s'exécute.

Code :
  1. function Controle()
  2. {
  3.    ...
  4. }


 
recuperation_formulaire.php étant l'affichage de mes variables du formulaire, qui lui est bien renvoyer lors du submit mais pas ma fonction Controle() !
 
Merci d'avance pour vos réponses !


Message édité par wifsimster le 15-05-2008 à 09:14:03
mood
Publicité
Posté le 14-05-2008 à 11:25:56  profilanswer
 

n°1731574
FlorentG
Posté le 14-05-2008 à 11:30:11  profilanswer
 

Ben y'a rien à faire. Tu mets dans le paramètre action du form le script PHP à exécuté, avec dedans le contrôle à faire.

n°1731580
wifsimster
Turns your mind towards BeTa
Posté le 14-05-2008 à 11:37:40  profilanswer
 

Si je suis ce que tu me dis :

Code :
  1. <form name="form_associatif" id="form_associatif" method="post" action="Controle()">
  2. <table>


Ca ne marche pas et ça ne doit pas être cela, soit plus précis, merci !

n°1731583
FlorentG
Posté le 14-05-2008 à 11:41:48  profilanswer
 

Nanan, ça marche pas comme ça. Pour toute interaction faut passer par le serveur. Pour envoyer le formulaire, le navigateur a besoin d'une URL, donc tu lui files l'url d'un script, genre :
 

Code :
  1. <form method="post" action="controle.php">


 
Et après sur ton serveur, t'as un fichier controle.php où tu mets ce qu'il faut.
 
Dis-toi bien qu'il n'y a aucune liaison entre l'HTML et le PHP comme ça, il faut tout passer par des requêtes

n°1731584
babasss
Posté le 14-05-2008 à 11:42:07  profilanswer
 

Tu confonds javascript et php (langage serveur <> langage client => http://forum.hardware.fr/hfr/Progr [...] 526_1.htm)
 
Bref, quant tu fais onClick="Controle()", le navigateur comprend que sur un clic, il va chercher la fonction javascript Controle et non la fonction php
 
Et puis ca : action="index.php?index.php?recuperation_formulaire", c'est du n'importe quoi, ce serait plutot action="index.php?page=recuperation_formulaire" ou action="recuperation_formulaire.php"
 
edit : bon ben, méga  [:benou_grilled]


Message édité par babasss le 14-05-2008 à 11:43:13

---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1731597
wifsimster
Turns your mind towards BeTa
Posté le 14-05-2008 à 11:55:18  profilanswer
 

Tout d'abord merci pour la précision sur l'action et le onClick !
Pour ce qui est du coté serveur-client je l'avais en tête mais ça se mélange à force :s
 
Mon problème est que si je revois mon form vers une page Controle.php j'ai un soucis au niveau de ce que me retourne ma controle car il affiche les erreurs directement ! et non plus sur ma page du formulaire !

Code :
  1. function Controle()
  2. {
  3.    $erreurs=array(); //tableau qui stocke les erreurs.
  4.    ...
  5.     // Je fais mes contrôles
  6.    ...
  7.    if(count($erreurs)==0)
  8.    {
  9.        //Je travail sur ma DB
  10.    }
  11.     // Ici on affiches toutes les erreurs retournées
  12.     else
  13.     {
  14.       echo "<p class='erreur'>";
  15.        for($i=0;$i<count($erreurs);$i++)
  16.        {
  17.            echo "- ".$erreurs[$i]."<br />";
  18.        }
  19.       echo "</p>";
  20.       }
  21. }
  22. ?>


 
C'est pour cela qu'il faudrait que je garde mon script php sur la même page que mon formulaire pour pouvoir rester sur le formulaire et afficher les erreurs.
Et lorsque je n'ai plus d'erreurs être redirigé vers le résultat de ce formulaire(tableau avec les valeurs des variables)
 
Meci pour votre aide mais je suis pas sortit encore ... :pfff:


Message édité par wifsimster le 14-05-2008 à 12:03:39
n°1731608
FlorentG
Posté le 14-05-2008 à 12:01:23  profilanswer
 

Ouais, le navigateur n'affiche que ce qu'on lui donne. Donc à toi de regénérer le formulaire avec les erreurs et valeurs déjà saisies. Faut tout faire à la patte.

n°1731685
wifsimster
Turns your mind towards BeTa
Posté le 14-05-2008 à 13:57:45  profilanswer
 

Uhm ... de l'aide s'il vous plait !!!!

n°1731731
babasss
Posté le 14-05-2008 à 14:37:27  profilanswer
 

alors une solution serait de :

  • envoyer le formulaire valider sur formulaire.php?action=controle
  • Avant le code du formulaire, tu mets if ($_GET['action'] == 'controle') { le code du controle directement (sans function Controle() ) }


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1731799
wifsimster
Turns your mind towards BeTa
Posté le 14-05-2008 à 15:26:57  profilanswer
 

Je tente le coups dessuite ... merci
 
Edit : alors je vais de mettre ton idée en place et elle fonctionne parfaitement pour l'exécution de mon script de contrôle, merci !
Maintenant il ne me manque plus que à faire une redirection quand mon contrôle et bon ...  :sweat:

Message cité 1 fois
Message édité par wifsimster le 14-05-2008 à 15:58:28
mood
Publicité
Posté le 14-05-2008 à 15:26:57  profilanswer
 

n°1731816
babasss
Posté le 14-05-2008 à 16:02:57  profilanswer
 

wifsimster a écrit :

Maintenant il ne me manque plus que à faire une redirection quand mon contrôle et bon ...  :sweat:


include ou location (ca dépend de ce que tu veux à la fin)


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1731818
wifsimster
Turns your mind towards BeTa
Posté le 14-05-2008 à 16:06:37  profilanswer
 

Après avoir fait le contrôle, j'aimerais aller sur une page qui reprend toute les informations rentrées.
Je ne vois pas comment faire avec un include ou tu veux dire un require ?

 
Code :
  1. header("location:../recuperation_formulaire.php" )


Quelque chose dans le genre peut être ...?

Message cité 1 fois
Message édité par wifsimster le 14-05-2008 à 16:10:44
n°1731823
babasss
Posté le 14-05-2008 à 16:11:58  profilanswer
 

wifsimster a écrit :

avec un include ou tu veux dire un require ?


 
REquire et include font en gros la même chose.... :D


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1731827
wifsimster
Turns your mind towards BeTa
Posté le 14-05-2008 à 16:14:17  profilanswer
 

Je sais, je sais  :)
Mais au vu de mes résultats  :sweat:

 
Code :
  1. require ("recuperation_formulaire.php" );


Ne fait strictement rien !

 
Code :
  1. header("location: recuperation_formulaire.php" );


Me produit ce code d'erreur :
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\...\formulaire.php:8) in C:\xampp\...\formulaire.php on line 527

 

C'est surement une très grosse erreur de ma part mais je doit être aveugle ou ne pas avoir assez de connaissances  :whistle:

 

A ce que j'ai compris header c'est ce que renvoie le serveur au navigateur.

 

Je veut juste une redirection php ='(

 

Edit :

 

Les redirections sont des en-têtes HTTP. Or, selon le protocole HTTP, le en-têtes HTTP doivent être envoyés avant tout autre type de contenu, ce qui signifie qu'aucun caractère ne doit être envoyé avant l'appel de la fonction header, pas même un espace !

 

En d'autre termes, la fonction header() doit impérativement être utilisée avant tout code HTML.

 

Je crois avoir compris, mais comment alors faire une redirection dans un script php !
Logiquement mon script est interprété lors du chargement et donc il ne devrait pas avoir de header sur ma page...
Je suis perdu  :heink:


Message édité par wifsimster le 14-05-2008 à 16:42:43
n°1731880
wifsimster
Turns your mind towards BeTa
Posté le 14-05-2008 à 16:58:47  profilanswer
 

Help !!!!!  :ouch:

Message cité 1 fois
Message édité par wifsimster le 14-05-2008 à 16:59:01
n°1731889
babasss
Posté le 14-05-2008 à 17:06:07  profilanswer
 

wifsimster a écrit :

Help !!!!!  :ouch:


Issu de la FAQ php (http://forum.hardware.fr/hfr/Programmation/BiblioLinks/faq-php-update-sujet_16526_1.htm) : "La fonction header doit être placée avant tout sortie  (code HTML, msg d'erreur PHP etc...) vous pouvez avoir 20 Mo de code php avant, du moment que ça n'affiche rien."
Donc vérifie que tu n'envoies pas de HTML avant d'utiliser le location....


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
n°1731897
wifsimster
Turns your mind towards BeTa
Posté le 14-05-2008 à 17:13:32  profilanswer
 

Code :
  1. // Si aucune erreur n'est retournée...
  2. if(count($erreurs)==0)
  3. {
  4. //Récupérer et stoquer les valeurs des cases dans des variables.
  5. $form_nom_assoc = $_POST['nom_assoc'];
  6.  ...
  7. $form_site_internet = $_POST['site_internet'];
  8.          //On se connecte sur le serveur
  9.          //On séléctionne la DB
  10.          // on insère les informations du formulaire dans la table
  11.          ...
  12. mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  13. // On  ferme la connexion à la DB
  14. mysql_close(); // Déconnexion de MySQL
  15. // Redirection vers la recuperation du formulaire
  16. header("location: recuperation_formulaire.php" );
  17. }


 
Voici la condition dans laquelle rentre le script si il n'y a aucune erreur, donc soit je ne vois pas le problème dans mon script soit j'ai du code qui se balade avant, mais le script n'est t'il pas traité en premier lors du contrôle ?
 
Edit:
 
Je viens de mettre mon script en premier même avant mon :

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">


 
J'ai le même problème de cette manière, j'en conclu donc que c'est mon script php qui doit me sortir un echo quelque par  :pfff:
 
Voici ce que se passe en détail dans le contrôle :
 

Code :
  1. <?php
  2. if ($_GET['action'] == 'controle') // Si la variable existe, on affiche le code dans l'index
  3. {
  4. //----------------------------------------------------------------------------------------------------------------------------------------------------------------------
  5. //  Bloc php permettant la vérification du formulaire
  6. //----------------------------------------------------------------------------------------------------------------------------------------------------------------------
  7. $erreurs=array(); //tableau qui stocke les erreurs.
  8. // Vérification du nom de l'association
  9. if (isset($_POST['nom_assoc']))
  10. {
  11. $_POST['nom_assoc'] = htmlspecialchars($_POST['nom_assoc']); // On rend inoffensives les balises HTML que le visiteur a pu rentrer
  12. // Permet les caractères alphanumériques ainsi que le "-" et l'espace
  13. if (preg_match("#^[a-zA-Z0-9- ]{2,20}$#", $_POST['nom_assoc']))
  14.     {
  15.        // echo $_POST['nom_assoc'].' est un nom d\'association <strong>valide</strong> !';
  16.     }
  17.     else
  18.     {
  19.         $erreurs[]= 'Le nom de l\'association n\'est pas valide !(sans accent)';
  20.     }
  21. }


 
J'ai tout une liste de contrôle (if) de ce type dans mon script, je ne vois pas du tout où j'écrirais un quelconque code avant le header !


Message édité par wifsimster le 14-05-2008 à 17:34:27
n°1731959
wifsimster
Turns your mind towards BeTa
Posté le 14-05-2008 à 19:01:29  profilanswer
 

Bon bon bon, en cherchant j'en suis arrivé au point où il faut absolument que mon header de redirection soit situé au début de mon code pour que cella fonctionne correctement.
 
Or pour le bon fonctionnement de mon programme je ne peut pas insérer tout mon script au début du code !
 
-.- Encore de nouveau un problème ...

n°1731960
FlorentG
Posté le 14-05-2008 à 19:03:20  profilanswer
 

wifsimster a écrit :

Or pour le bon fonctionnement de mon programme je ne peut pas insérer tout mon script au début du code !


Il le faut. C'est un problème d'organisation. Beaucoup de gens programment la validation d'un formulaire au milieu du code HTML. Faut un peu séparer tout ça

n°1732052
wifsimster
Turns your mind towards BeTa
Posté le 15-05-2008 à 09:10:16  profilanswer
 

J'ai réussis hier soir, c'est bon la partie de mon script qui ne pouvais pas bouger, n'a pas bougé  :ange:  
Avec une petite variable qui déclenche mes echo, le tour est joué  :jap:  
 
Merci pour tout surtout babasss qui m'a bien aidé  ;)


Message édité par wifsimster le 15-05-2008 à 09:11:32
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] Fonction php déclencé par un bouton

 

Sujets relatifs
[Résolu] Problème dans le menuSimple lecture de fichier... [ RESOLU ]
Un tableau qui agrandit les cases [Resolu]envoyer référence a monObjet.addEventListener() à la fonction invoquée
Appel périodique d'une fonction??gérer une fonction d'un programme automatiquement?
Bouton cliquable dans un SWF externeinclure fonction C dans du C++
Extraire une seule valeur d'une fonction retournant un vecteur(Résolu) Erreur caractère
Plus de sujets relatifs à : [Résolu] Fonction php déclencé par un bouton


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR