Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to run a PHP function from an HTML form?

I'm absolute beginner in web technologies. I know that my question is very simple, but I don't know how to do it. For example I have a function:

function addNumbers($firstNumber, $secondNumber)
{
    echo $firstNumber + $secondNumber;
}

And I have a form:

<form action="" method="post">
<p>1-st number: <input type="text" name="number1" /></p>
<p>2-nd number: <input type="text" name="number2" /></p>
<p><input type="submit"/></p>

How can I input variables on my text fields and call my function by button pressing with arguments that I've wrote into text fields? For example I write 5 - first textfield, 10 - second textfield, then I click button and I get the result 15 on the same page. EDITED I've tried to do it so:

$num1 = $POST['number1'];
$num2 = $POST['number2'];
addNumbers($num1, $num2);

But it doesn't work, the answer is 0 always.

like image 211
Frankie Drake Avatar asked May 11 '11 17:05

Frankie Drake


People also ask

How do I run PHP from HTML?

Step 1: Firstly, we have to type the Html code in any text editor or open the existing Html file in the text editor in which we want to use the PHP. Step 2: Now, we have to place the cursor in any tag of the <body> tag where we want to add the code of PHP. And, then we have to type the start and end tag of PHP.

Where do I put PHP functions in HTML?

You can include the php file wherever you want, as long as it is before you call the method contained in it. You call the function between <? php ?> tags.

How do I call a PHP function from another file?

To call a function from another file in PHP, you need to import the file where the function is defined before calling it. You can import a PHP file by using the require statement. To call the greetings() function from another file, you need to import the library.


2 Answers

The "function" you have is server-side. Server-side code runs before and only before data is returned to your browser (typically, displayed as a page, but also could be an ajax request).

The form you have is client-side. This form is rendered by your browser and is not "connected" to your server, but can submit data to the server for processing.

Therefore, to run the function, the following flow has to happen:

  1. Server outputs the page with the form. No server-side processing needs to happen.
  2. Browser loads that page and displays the form.
  3. User types data into the form.
  4. User presses submit button, an HTTP request is made to your server with the data.
  5. The page handling the request (could be the same as the first request) takes the data from the request, runs your function, and outputs the result into an HTML page.

Here is a sample PHP script which does all of this:

<?php

function addNumbers($firstNumber, $secondNumber) {
    return $firstNumber + $secondNumber;
}

if (isset($_POST['number1']) && isset($_POST['number2'])) {
    $result = addNumbers(intval($_POST['number1']), intval($_POST['number2']));
}
?>
<html>
<body>

    <?php if (isset($result)) { ?>
        <h1> Result: <?php echo $result ?></h1>
    <?php } ?>
    <form action="" method="post">
    <p>1-st number: <input type="text" name="number1" /></p>
    <p>2-nd number: <input type="text" name="number2" /></p>
    <p><input type="submit"/></p>

</body>
</html>

Please note:

  • Even though this "page" contains both PHP and HTML code, your browser never knows what the PHP code was. All it sees is the HTML output that resulted. Everything inside <?php ... ?> is executed by the server (and in this case, echo creates the only output from this execution), while everything outside the PHP tags — specifically, the HTML code — is output to the HTTP Response directly.
  • You'll notice that the <h1>Result:... HTML code is inside a PHP if statement. This means that this line will not be output on the first pass, because there is no $result.
  • Because the form action has no value, the form submits to the same page (URL) that the browser is already on.
like image 79
Nicole Avatar answered Oct 03 '22 20:10

Nicole


You need to gather the values from the $_POST variable and pass them into the function.

if ($_POST) {
  $number_1 = (int) $_POST['number1'];
  $number_2 = (int) $_POST['number2'];
  echo addNumbers($number_1, $number_2);
}

Be advised, however, that you shouldn't trust user input and thus need to validate and sanitize your input.

like image 37
Dave Kiss Avatar answered Oct 03 '22 21:10

Dave Kiss