Comment appeler un fichier PHP à partir de HTML ou Javascript

J'ai parcouru un long moment maintenant et je ne peux pas trouver n'importe où qui répond à cette question apparemment basique. Je ne me préoccupe pas si la page recharge ou affiche les résultats immédiatement; Je veux juste avoir un bouton sur mon site Web pour créer un fichier PHP. C'est tout. Et j'ai trouvé que tous les sites Web vous disent comment exécuter le code PHP dans votre HTML directement ou vous dire d'utiliser ajax. J'utiliserai ajax si cela s'avère nécessaire, mais il y a eu un temps avant l'existence d'ajax que PHP a été utilisé, alors je pense qu'il y a un moyen plus simple. Si je peux écrire le code à l'intérieur de HTML juste, pourquoi ne puis-je simplement faire référence au fichier là-dedans ou faire un appel simple en Javascript?

S'il s'avère que ajax est la seule voie à suivre, qu'est-ce que je dois savoir pour appeler un fichier PHP qui créera un fichier texte sur un bouton, appuyez sur? Je crée un site de blog simple pour moi-même et j'ai le code du site et le javascript qui peut prendre la publication que j'écris dans une zone de textarea et l'afficher immédiatement. Je veux simplement le lier à un fichier PHP qui créera la publication de blog permanente sur le serveur afin que lorsque je recharge la page, la publication est toujours là.

Merci d'avoir pris le temps de lire et de répondre.


Comment faire un appel de bouton PHP?

Je ne me préoccupe pas si la page recharge ou affiche les résultats immédiatement;

Bien!

Remarque : Si vous ne souhaitez pas actualiser la page, reportez-vous à la section " Ok … mais comment puis-je utiliser Ajax de toute façon? " Ci-dessous.

Je veux juste avoir un bouton sur mon site Web pour créer un fichier PHP.

Cela peut se faire avec un formulaire avec un seul bouton:

 <form action=""> <input type="submit" value="my button"/> </form> 

C'est tout.

Plutôt. Notez également qu'il existe des cas où ajax est vraiment le chemin à parcourir.

Cela dépend de ce que vous voulez. En termes généraux, vous n'avez besoin que d'ajax lorsque vous souhaitez éviter de realoading la page. Pourtant, vous avez dit que vous ne vous en souveniez pas.


Pourquoi je ne peux pas appeler PHP directement à partir de JavaScript?

Si je peux écrire le code à l'intérieur de HTML juste, pourquoi ne puis-je simplement faire référence au fichier là-dedans ou faire un appel simple en Javascript?

Parce que le code PHP n'est pas dans le HTML just fine . C'est une illusion créée par la manière dont fonctionne la plupart des langages de script côté serveur (y compris PHP, JSP et ASP). Ce code n'existe que sur le serveur, et il n'est pas possible d'accéder au client (le navigateur) sans appel distant d'une sorte quelconque.

Vous pouvez en constater la preuve si vous demandez à votre navigateur de montrer le code source de la page. Là vous ne verrez pas le code PHP, c'est parce que le code PHP n'est pas envoyé au client, donc il ne peut pas être exécuté à partir du client. C'est pourquoi vous devez faire un appel à distance pour que le client déclenche l'exécution du code PHP.

Si vous n'utilisez pas un formulaire (comme indiqué ci-dessus), vous pouvez faire cet appel distant de JavaScript avec une petite chose appelée Ajax . Vous pouvez également envisager si ce que vous voulez faire en PHP peut être fait directement en JavaScript.


Comment appeler un autre fichier PHP?

Utilisez un formulaire pour faire l'appel. Vous pouvez l'avoir pour diriger l'utilisateur vers un fichier particlar:

 <form action="myphpfile.php"> <input type="submit" value="click on me!"> </form> 

L'utilisateur se retrouvera dans la page myphpfile.php . Pour que cela fonctionne pour la page actuelle, définissez l'action sur une chaîne vide (c'est ce que j'ai fait dans l'exemple que je vous ai donné au début).

Je veux simplement le lier à un fichier PHP qui créera la publication de blog permanente sur le serveur afin que lorsque je recharge la page, la publication est toujours là.

Vous souhaitez effectuer une opération sur le serveur, vous devez faire apparaître les champs dont vous avez besoin (même si type="hidden" et utilisez POST ):

 <form action="" method="POST"> <input type="text" value="default value, you can edit it" name="myfield"> <input type="submit" value = "post"> </form> 

Que dois-je savoir pour appeler un fichier PHP qui créera un fichier texte sur un bouton, appuyez sur?

Voir: Comment écrire dans un fichier en PHP .


Comment recevez-vous les données du POST dans le serveur?

Je suis content de demander … Puisque vous êtes un débutant, je vais vous donner un petit modèle que vous pouvez suivre:

 <?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { //Ok we got a POST, probably from a FORM, read from $_POST. var_dump($_PSOT); //Use this to see what info we got! } else { //You could assume you got a GET var_dump($_GET); //Use this to see what info we got! } ?> <!DOCTYPE html> <html lang="en"> <head> <meta char-set="utf-8"> <title>Page title</title> </head> <body> <form action="" method="POST"> <input type="text" value="default value, you can edit it" name="myfield"> <input type="submit" value = "post"> </form> </body> </html> 

Remarque: vous pouvez supprimer var_dump , c'est juste à des fins de débogage.


Comment puis-je …

Je connais la prochaine étape, vous demanderez comment:

  1. Comment passer les variables d'un fichier PHP à un autre?
  2. Comment se souvenir de l'utilisateur / faire une connexion?
  3. Comment éviter que le message angoissant s'affiche lorsque vous rechargez la page?

Il y a une seule réponse pour cela: Sessions.

Je vais donner un modèle plus complet pour Post-Redirect-Get

 <?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { var_dump($_PSOT); //Do stuff... //Write results to session session_start(); $_SESSION['stuff'] = $something; //You can store stuff such as the user ID, so you can remeember him. //redirect: header('Location: ', true, 303); //The redirection will cause the browser to request with GET //The results of the operation are in the session variable //It has empty location because we are redirecting to the same page //Otherwise use `header('Location: anotherpage.php', true, 303);` exit(); } else { //You could assume you got a GET var_dump($_GET); //Use this to see what info we got! //Get stuff from session session_start(); if (array_key_exists('stuff', $_SESSION)) { $something = $_SESSION['stuff']; //we got stuff //later use present the results of the operation to the user. } //clear stuff from session: unset($_SESSION['stuff']); //set headers header('Content-Type: text/html; charset=utf-8'); //This header is telling the browser what are we sending. //And it says we are sending HTML in UTF-8 encoding } ?> <!DOCTYPE html> <html lang="en"> <head> <meta char-set="utf-8"> <title>Page title</title> </head> <body> <?php if (isset($something)){ echo '<span>'.$something.'</span>'}?>; <form action="" method="POST"> <input type="text" value="default value, you can edit it" name="myfield"> <input type="submit" value = "post"> </form> </body> </html> 

Veuillez regarder php.net pour tout appel de fonction que vous ne reconnaissez pas. Aussi – si vous n'avez pas déjà – obtenez un bon tutoriel sur HTML5.

Aussi, utilisez UTF-8 parce que UTF-8 !


Notes :

Je crée un site de blog simple pour moi-même et j'ai le code du site et le javascript qui peut prendre la publication que j'écris dans une zone de texte et l'afficher immédiatement.

Si vous utilisez un CMS (Codepress, Joomla, Drupal … etc.)? Cela fait des contraintes sur la façon dont vous devez faire les choses.

En outre, si vous utilisez un cadre, vous devriez consulter leur documentation ou demander à leur forum / liste de diffusion / page de discussion / contact ou essayer de demander aux auteurs.


Ok … mais comment puis-je utiliser Ajax de toute façon?

Eh bien … Ajax est facilité par certaines bibliothèques JavaScript. Puisque vous êtes un débutant, je vous recommanderai jQuery .

Donc, envoyons quelque chose au serveur via Ajax avec jQuery, j'utiliserai $ .post au lieu de $ .ajax pour cet exemple.

 <?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { var_dump($_PSOT); header('Location: ', true, 303); exit(); } else { var_dump($_GET); header('Content-Type: text/html; charset=utf-8'); } ?> <!DOCTYPE html> <html lang="en"> <head> <meta char-set="utf-8"> <title>Page title</title> <script> function ajaxmagic() { $.post( //call the server "test.php", //At this url { field: "value", name: "John" } //And send this data to it ).done( //And when it's done function(data) { $('#fromAjax').html(data); //Update here with the response } ); } </script> </head> <body> <input type="button" value = "use ajax", onclick="ajaxmagic()"> <span id="fromAjax"></span> </body> </html> 

Le code ci-dessus enverra une demande POST à ​​la page test.php .

Remarque : Vous pouvez combiner des sessions avec ajax et les choses si vous le souhaitez.


Comment puis-je …

  1. Comment puis-je me connecter à la base de données?
  2. Comment puis-je empêcher l'injection SQL?
  3. Pourquoi ne pas utiliser les fonctions Mysql_ *?

… pour ces ou d'autres, faites une autre question. C'est trop pour celui-ci.

Vous recherchez jQuery Ajax . Il crée une connexion asynchrone à votre script php

Je veux juste avoir un bouton sur mon site Web, faire fonctionner un fichier PHP

 <form action="my.php" method="post"> <input type="submit"> </form> 

D'une manière générale, cependant, sauf si vous envoyez de nouvelles données au serveur à mémoriser, vous utiliserez simplement un lien.

 <a href="my.php">run php</a> 

(Bien que vous devriez utiliser un texte de lien qui décrit ce qui se passe du point de vue de l'utilisateur, pas les serveurs)


Je crée un site de blog simple pour moi-même et j'ai le code du site et le javascript qui peut prendre la publication que j'écris dans une zone de texte et l'afficher immédiatement. Je veux simplement le lier à un fichier PHP qui créera la publication de blog permanente sur le serveur afin que lorsque je recharge la page, la publication est toujours là.

C'est plus difficile.

Tout d'abord, vous devez utiliser un formulaire et POST (puisque vous envoyez des données à mémoriser).

Ensuite, vous devez stocker les données quelque part. Cela se fait normalement en utilisant une base de données. Lisez la bibliothèque PDO pour PHP. C'est la manière standard d'interagir avec les bases de données.

Ensuite, vous devez retirer les données à nouveau. L'approche la plus simple ici est d'utiliser la chaîne de requête pour passer la clé primaire pour la ligne de base de données avec l'entrée que vous souhaitez afficher.

 <a href="showBlogEntry.php?entry_id=123">...</a> 

Assurez-vous de lire également sur l'injection SQL et XSS.

Comme vous l'avez déjà indiqué dans votre question, vous avez plus d'une option. Une approche très basique serait d'utiliser le tag référençant votre fichier PHP dans l'attribut method. Cependant, comme c'est esotérique qu'il peut paraître, AJAX est une approche plus complète. Étant donné qu'un appel AJAX (en combinaison avec jQuery) peut être aussi simple que:

 $.post("yourfile.php", {data : "This can be as long as you want"}); 

Et vous obtenez une solution plus souple, par exemple déclenchant une fonction une fois la demande du serveur terminée. J'espère que cela t'aides.

Il vous suffit de publier les données du formulaire dans la fonction de fichier insert php, voir ci-dessous 🙂

 class DbConnect { // Database login vars private $dbHostname = ''; private $dbDatabase = ''; private $dbUsername = ''; private $dbPassword = ''; public $db = null; public function connect() { try { $this->db = new PDO("mysql:host=".$this->dbHostname.";dbname=".$this->dbDatabase, $this->dbUsername, $this->dbPassword); $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { echo "It seems there was an error. Please refresh your browser and try again. ".$e->getMessage(); } } public function store($email) { $stm = $this->db->prepare('INSERT INTO subscribers (email) VALUES ?'); $stm->bindValue(1, $email); return $stm->execute(); } }