Appel d'une fonction PHP à partir d'un formulaire HTML dans le même fichier?
Je suis en train d'exécuter une fonction PHP dans la même page lorsque l'utilisateur entre un texte et appuie sur un bouton de soumission.
La première fois que je penser, c'est à l'aide de formulaires. Lorsque l'utilisateur soumet une forme, une fonction PHP sera exécuté dans la même page. L'utilisateur ne sera pas dirigé vers une autre page. Le traitement sera effectué et affiché dans la même page (sans rechargement)
Voici ce que j'ai portée à:
Dans test.php fichier:
<form action="test.php" method="post">
<input type="text" name="user" placeholder="enter a text" />
<input type="submit" value="submit" onclick="test()" />
</form>
Le code PHP [ test()
fonction ] est dans le même fichier aussi:
<?php
function test() {
echo $_POST["user"]; //just an example of processing
}
?>
Cependant, j'ai encore un problème! Quelqu'un a une idée?
source d'informationauteur iTurki | 2011-05-11
Vous devez vous connecter pour publier un commentaire.
Cela ne peut être fait dans la mode que vous parlez. PHP Côté Serveur si La forme existe sur le côté client. Vous aurez besoin de regarder dans l'aide de Javascript et/ou de l'AJAX si vous ne voulez pas de rafraîchir la page.
test.php
Il va appeler
getResult.php
et passer la forme sérialisée de sorte que le PHP peut lire ces valeurs. RiengetResult.php
echos devra être retourné à la fonction JS dans leresult
variable de retour surtest.php
et (dans ce cas) présentés dans une boîte d'alerte.getResult.php
NOTE Cet exemple utilise jQuery, 3e partie Javascript Wrapper. Je vous suggère d'abord de développer une meilleure compréhension de la façon dont ces technologies web travailler ensemble avant de compliquer les choses pour vous-même plus loin.
Vous avez une grande incompréhension de la façon dont fonctionne le web.
Fondamentalement, les choses se passent de cette manière:
test.php
à partir de votre serveurtest.php
s'exécute, tout à l'intérieur est exécutée, et, en conséquence, la page HTML (qui comprend votre formulaire) sera envoyé vers le navigateuraction
qui est le même fichier, dans ce cas), alors tout commence à partir du début (à l'exception des données sous la forme sera également envoyé). Nouvelle demande au serveur, PHP s'exécute, etc. Cela signifie que la page est actualisée.Que vous étiez en train d'invoquer
test()
de votreonclick
attribut. Cette technique est utilisée pour exécuter un côté client script, qui est dans la plupart des cas Javascript (code sera exécuté sur le navigateur de l'utilisateur). Qui n'a rien à voir avec PHPqui est côté serveurréside sur votre serveur et sera exécuté uniquement si une demande. Veuillez lire Côté Client, le Rapport à la programmation côté Serveur par exemple.Si vous voulez faire quelque chose sans causer un rafraichissement de la page, vous devez utiliser Javascript pour envoyer une demande dans le contexte du serveur, laissez-PHP faire ce qu'il doit faire, et de recevoir une réponse. Cette technique est essentiellement appelé AJAXet vous pouvez trouver beaucoup de ressources à l'aide de Google (comme Mozilla est incroyable tutoriel).
Sans avoir à recharger, à l'aide de html y php seulement il n'est pas possible, mais cela peut être très similaire à ce que vous voulez, mais vous devrez recharger:
Voici une script php pour faire ce que vous décrivez, si inutile. Vous avez besoin de lire sur côté serveur vs côté client. PHP ne peut pas s'exécuter sur le côté client, vous devez utiliser javascript pour interagir avec le serveur, ou mettre en place avec un rafraichissement de la page. Si vous ne pouvez pas comprendre cela, il n'y a aucun moyen que vous serez en mesure d'utiliser mon code (ou de quelqu'un d'autre à votre avantage.
Le code suivant effectue un appel AJAX sans jQuery, et appelle la même script de flux XML à l'AJAX. Il insère ensuite votre nom d'utilisateur et un
<br/>
dans un div en dessous de la zone de l'utilisateur.Veuillez retourner à l'apprentissage des notions de base avant d'essayer de poursuivre quelque chose d'aussi avancé que l'AJAX. Vous aurez seulement être déroutant vous-même en la fin et, potentiellement, de gaspiller l'argent des autres.
Utilisation SAJAX ou de passer à JavaScript
C'est maintenant le fonctionnement de PHP.
test()
s'exécutera lorsque la page est chargée, pas lorsque le bouton envoyer est cliqué.Pour faire ce genre de chose, vous devez avoir le
onclick
attribut de faire un appel AJAX vers un fichier PHP.dans le cas où vous ne voulez pas utiliser de l'Ajax , et souhaitez que votre page se recharge .
Vous pouvez envoyer le formulaire sans rafraichissement de la page, mais à ma connaissance c'est impossible sans l'aide d'un JavaScript/AJAX Appel à un Script PHP sur votre serveur. L'exemple suivant utilise la jQuery JavaScript Library.
HTML
Java Script
Lors de la Présentation de l'anonyme fonction Javascript sera appelé, il suffit d'envoyer une demande à votre Fichier PHP (qui devra être dans un séparé fichier, btw). Le
data
ci-dessus doit être Encodée URL de la chaîne de requête que vous souhaitez envoyer le Fichier PHP (en gros toutes les valeurs des champs du formulaire). Ces apparaîtra à votre Script PHP côté serveur dans le$_GET
super global. Un exemple ci-dessous.Si c'est votre chaîne de données, puis le Script PHP va voir ce qu':
Toutefois, vous aurez besoin pour construire les données des champs de formulaire qu'ils n'existent que dans votre formulaire, tels que:
(Vous aurez besoin de balise de chaque champ de formulaire avec un "id", l'id est 'utilisateur'.)
Après le Script PHP s'Exécute, le
success
fonction est appelée, et toute sortie produite par le script PHP sera stockée dans la variablehtml
.Prendre un coup d'oeil à cet exemple:
C'est la meilleure façon que j'utilise pour créer soumettre sans chargement dans un formulaire.
Vous pouvez utiliser un peu de CSS pour stylise l'iframe de la façon dont vous le souhaitez.
Php résultat sera chargé dans l'iframe.