Bouton et appel fonction

Bouton et appel fonction - PHP - Programmation

Marsh Posté le 12-11-2005 à 01:08:38    

Bonsoir,
 
Je débute dans le PHP et je m'emmèle un peu les pinceaux...
En fait j'aimerais savoir si il est possible en cliquant sur un bouton, d'appeler une fonction php qui se trouve dans la même page ?
 
Pour être plus clair, je commence une page avec

Code :
  1. <? function mafonction() {
  2.         echo "ca c'est de la fonction !"; }
  3. ?>
  4. ...
  5. <form>
  6. <input type="button" value="ICI" onclick="<? mafonction() ?>">
  7. </form>


 
En fait la fonction s'exècute dès le chargement de la page ?
 
Bon si quelqu'un peut m'aiguiller sur la bonne voie ce serait sympa
 
Laurent

Reply

Marsh Posté le 12-11-2005 à 01:08:38   

Reply

Marsh Posté le 12-11-2005 à 01:23:53    

faut que ton form contienne ça pour rappeler la page courante : <form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">

Reply

Marsh Posté le 12-11-2005 à 01:35:52    

Merci pour ton aide DrWatson.  
En fait le problème est toujours le même, quand je lance la page, la fonction s'exécute avant même que j'ai cliqué sur le bouton :(
 
voici le code exact, si tu peux me dire ce qui bloque, ca m'aiderait beaucoup :
 

Code :
  1. <body>
  2. <?
  3. require "definitions.inc.php";
  4. require "MySQL.php";
  5. function CreateDatabase($afficher=FALSE) {
  6.  $serveur=ConnectHOST(TRUE);
  7.  echo "Ca passe";
  8.  if($serveur) {
  9.   $sql = 'CREATE DATABASE '+BASE;
  10.   if (mysql_query($sql,$serveur)) {
  11.    if($afficher) echo "Database my_db created successfully\n";
  12.   }
  13.   else {
  14.    if($afficher) echo 'Error creating database: ' . mysql_error() . "\n";
  15.    exit;
  16.   }
  17.  }
  18. }
  19. ?>
  20. <form method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
  21. <input type="button" value="ICI" onclick="<? CreateDatabase(TRUE) ?>">
  22. </form>
  23. </body>


 
Dès que je charge la page, j'ai le message 'Ca passe' de la fonction qui s'affiche.
Il s'affiche aussi quand je clique sur le bouton et c'est bon signe. Mais j'aimerais tellement qu'il ne s'affiche que quand je clique sur le bouton :)

Reply

Marsh Posté le 12-11-2005 à 01:38:16    

Bon, on va reposer les bases :
 
PHP => s'exécute sur le serveur, et sur le serveur uniquement. Ce qui veut dire qu'une fois que tu as la page devant les yeux, PHP a fini son travail et ne peut plus intervenir tant que tu ne retournes pas sur le serveur (soumission de formulaire de DrWatson) et donc tant que tu ne "recrées" pas une page.
 
onclick ou tout autre évenement du style => ne concerne que le client, et donc une technologie client uniquement, comme le javascript par exemple.

Reply

Marsh Posté le 12-11-2005 à 01:44:36    

Arf, donc en clair je suis obligé de déplacer ma fonction dans un fichier php externe et de l'appeler via la soumission du formulaire ?
Si il n'y a pas d'autre solution, alors je vais procéder comme ca.
 
En tout cas merci pour vos réponses, vous êtes sympas, surtout à cette heure là ;)
 
Si jamais il y a une autre solution à la portée d'un débutant, merci de m'en faire part.
 
Laurent

Reply

Marsh Posté le 12-11-2005 à 01:47:41    

Ce que je n'arrive pas à comprendre, c'est que la fonction s'exécute à l'ouverture de la page, alors qu'elle n'est que définie à ce moment là.
J'ai rajouté la ligne de DrWatson qui permet de recharger la page et ca marche ( remerci DrWatson ). Si je pouvais seulement éviter qu'elle s'exécute toute seule à l'ouverture, ce serait parfait...

Reply

Marsh Posté le 12-11-2005 à 01:49:27    

moi non plus je ne comprend pas pk ta fonction s'execute au lancement de la page, une fonction doit être appelée pour cela, est ce que tu en es bien sûr ? est ce que ton "ça passe" s'affiche au premier lancement ?


Message édité par DrWatson le 12-11-2005 à 01:50:03
Reply

Marsh Posté le 12-11-2005 à 01:55:02    

Vi, j'ai le message 'Ca passe' qui se colle en dessous du bouton au chargement de la page.
A mon avis la page se charge puis le code de la fonction s'exécute tout seul, sinon je pense que le message serait au dessus du bouton ?
 
Bon de toutes facons c'est pas grave, je cherche depuis la fin de la Star'Ac ;) et j'en ai marre, donc je pose ma fonction dans un fichier externe NA !
 
Merci à vous :)


Message édité par laurent_31 le 12-11-2005 à 01:55:31
Reply

Marsh Posté le 12-11-2005 à 02:03:39    

laurent_31 a écrit :

Ce que je n'arrive pas à comprendre, c'est que la fonction s'exécute à l'ouverture de la page, alors qu'elle n'est que définie à ce moment là.


 
Oh bon dieu, mais vous avez pris la peine de lire ce que j'ai écrit tout les deux (oui, toi aussi DrWatson) ? :)
 
PHP n'est pas un langage évenementiel, je vais essayer de simplifier le mode d'emploi (d'avance pardon aux puristes pour les erreurs) :

  • (client) tu tapes une adresse dans IE, par exemple http://www.monsite.com/index.php
  • (serveur) oh tiens, on me demande un fichier php...
  • (php) je lis le fichier index.php, chaque fois que je trouve du code que je comprend, je l'exécute. Donc, lorsque je lis <? mafonction() ?>, j'exécute mafonction() et envoit le résultat au serveur
  • (serveur) ok, php a fini son boulot, je peux envoyer la page demandée
  • (client) j'affiche la page que j'ai demandée
  • (laurent_31) j'appuye sur le bouton => retour à la ligne 2


Bref, contrairement à ce que tu penses, la fonction n'est pas définie à l'ouverture (enfin, l'affichage) de la page mais bien avant, et à moins de poser une condition sur l'exécution de la fonction, elle s'exécutera à chaque chargement de la page.

Reply

Marsh Posté le 12-11-2005 à 02:13:05    

Il est gonflé PHP, il aurait pu tenir compte du onclick, naaan mais ;)
 
Merci pour ces précisions naceroth.
 

Reply

Marsh Posté le 12-11-2005 à 02:13:05   

Reply

Marsh Posté le 12-11-2005 à 02:14:57    

Bah oui, quelle burne, PHP ne lis qu'à partir du <?
Poufffffff ( soupir ), ça rentre ça rentre :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed