表单和 PHP 结果显示在同一页面上

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/29679022/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-26 00:31:11  来源:igfitidea点击:

Form and PHP result display on same page

phphtmlpost

提问by Demi?n Drost

I have a form on one page linking to a PHP file (action), now the PHP result is being displayed in this PHP file/page. But I want the result to be displayed on the page with the form. I have searched thoroughly and couldn't find it anywhere. Perhaps any of you can help?

我在一个页面上有一个链接到 PHP 文件(动作)的表单,现在 PHP 结果显示在这个 PHP 文件/页面中。但我希望结果与表单一起显示在页面上。我已经彻底搜索过,但在任何地方都找不到。也许你们中的任何人都可以提供帮助?

Code: /citizens.php (main page)

代码:/citizens.php(主页)

<form method="post" action="/infoct.php">
<input type="text" name="ID" placeholder="ID">
<input name="set" type="submit">
</form>

Code: /infoct.php

代码:/infoct.php

<!DOCTYPE html>
<html>
<head>
<!-- <meta http-equiv="refresh" content="0; url=/citizens.php" /> -->
</head>

<body>

<?php {
$ID2 = isset($_POST['ID']) ? $_POST['ID'] : false;
}

$connect = mysql_connect('localhost', 'root', 'passwd'); 
mysql_select_db ('inhabitants'); 
$sql = "SELECT `Name`, `Surname`, `DOB`, `RPS`, `Address` FROM `citizens` WHERE ID = $ID2";
$res = mysql_query($sql);
echo "<P1><b>Citizen Identification number is</b> $ID2 </p1>";
while($row = mysql_fetch_array($res))
{
    echo "<br><p1><b>First Name:  </b></b>", $row['Name'], "</p1>";
    echo "<br><p1><b>Surname:  </b></b></b>", $row['Surname'], "</p1>";
    echo "<br><p1><b>Date of birth:  </b></b></b></b>", $row['DOB'], "</p1>";
    echo "<br><p1><b>Address:  </b></b></b></b></b>", $row['Address'], "</p1>";
    echo "<br><p1><b>Background information:  </b><br>", $row['RPS'], "</p1>";
}
mysql_close ($connect);

?>
</body>
</html>

My fixed code thanks to Marc B

感谢 Marc B 我的固定代码

<form method="post">
<input type="text" name="ID" placeholder="ID">
<input name="set" type="submit">
</form>
<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$ID = isset($_POST['ID']) ? $_POST['ID'] : false;

$connect = mysql_connect('fdb13.biz.nf:3306', '1858208_inhabit', '12345demien12345'); 
mysql_select_db ('1858208_inhabit'); 
$sql = "SELECT `Name`, `Surname`, `DOB`, `RPS`, `Address` FROM `citizens` WHERE ID = $ID";
$res = mysql_query($sql);
if ($ID > 0) {
    echo "<p><b>Citizen Identification number is</b>  </p>";

    while($row = mysql_fetch_array($res))
    echo "<br><p><b>Surname:  </b></b></b>", $row['Surname'], "</p>";
    echo "<br><p><b>First Name:  </b></b>", $row['Name'], "</p>";
    echo "<br><p><b>Date of birth:  </b></b></b></b>", $row['DOB'], "</p>";
    echo "<br><p><b>Address:  </b></b></b></b></b>", $row['Address'], "</p>";
    echo "<br><p><b>Background information:  </b><br>", $row['RPS'], "</p>";

mysql_close ($connect);
}
    else {
      echo "<p>Enter a citizen ID above</p>";
    }
}
?>

Database snapDB Snap

数据库快照数据库快照

回答by Marc B

A single-page form+submit handler is pretty basic:

单页表单+提交处理程序非常基本:

<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
 ... form was submitted, process it ...
 ... display results ...
 ... whatever else ...
}
?>

<html>
<body>
<form method="post"> ... </form>
</body>
</html>

That's really all there is.

这就是全部。

回答by Pratik

Use code on the same page(citizens.php)

在同一页面上使用代码(citizens.php)

<?php

if (isset($_POST)) { 
Do manipulation
}
?>

Else use ajaxand remove action method from form.

否则使用ajax并从表单中删除操作方法。

<form method="post" id="contactForm">
<input type="text" name="ID" placeholder="ID">
<input name="set" type="buttom" id="submitId">
</form>

<script>
$("#submitId").click(function(){
   var Serialized =  $("#contactForm").serialize();
    $.ajax({
       type: "POST",
        url: "infoct.php",
        data: Serialized,
        success: function(data) {
            //var obj = jQuery.parseJSON(data); if the dataType is not specified as json uncomment this
            // do what ever you want with the server response
        },
   error: function(){
        alert('error handing here');
      }
    });
});
</script>

And in your infact.phpin the endEcho the data so that ajax will have the data in return.

并在您infact.php的最后Echo 数据,以便 ajax 将返回数据。

回答by Razvan Stefanescu

You could just put everything in infoct.php, like this:

你可以把所有东西都放在 infoct.php 中,像这样:

<!DOCTYPE html>
<html>
<head>
<!-- <meta http-equiv="refresh" content="0; url=/infoct.php" /> -->
</head>

<body>
<form method="post" action="/infoct.php">
<input type="text" name="ID" placeholder="ID" value="<?php isset($_POST['ID']) ? $_POST['ID'] : '' ?>">
<input name="set" type="submit">
</form>
<?php 
    if (isset($_POST['ID'])) {
        $ID2 = $_POST['ID']; // DO NOT FORGET ABOUT STRING SANITIZATION
        $connect = mysql_connect('localhost', 'root', 'usbw'); 
        mysql_select_db ('inhabitants'); 
        $sql = "SELECT `Name`, `Surname`, `DOB`, `RPS`, `Address` FROM `citizens` WHERE ID = $ID2";
        $res = mysql_query($sql);
        echo "<P1><b>Citizen Identification number is</b> $ID2 </p1>";
        while($row = mysql_fetch_array($res))
        {
            echo "<br><p1><b>First Name:  </b></b>", $row['Name'], "</p1>";
            echo "<br><p1><b>Surname:  </b></b></b>", $row['Surname'], "</p1>";
            echo "<br><p1><b>Date of birth:  </b></b></b></b>", $row['DOB'], "</p1>";
            echo "<br><p1><b>Address:  </b></b></b></b></b>", $row['Address'], "</p1>";
            echo "<br><p1><b>Background information:  </b><br>", $row['RPS'], "</p1>";
        }
        mysql_close ($connect);
    }
?>
</body>
</html>

Do not forget about string sanitization !

不要忘记字符串消毒!

回答by Demi?n Drost

I have found the solutions to the folowing problems:

我找到了以下问题的解决方案:

Display results on same page

在同一页面上显示结果

Thanks to Marc B

感谢马克 B

A single-page form+submit handler is pretty basic:

<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
 ... form was submitted, process it ...
 ... display results ...
 ... whatever else ...
}
?>

<html>
<body>
<form method="post"> ... </form>
</body>
</html>

That's really all there is.

单页表单+提交处理程序非常基本:

<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
 ... form was submitted, process it ...
 ... display results ...
 ... whatever else ...
}
?>

<html>
<body>
<form method="post"> ... </form>
</body>
</html>

这就是全部。

Only first value is showing

只显示第一个值

I resolved this problem by adding this to my code:

我通过将其添加到我的代码中解决了这个问题:

while($row = mysql_fetch_array($res)) {
$surname=$row['Surname'];
$name=$row['Name'];
$dob=$row['DOB'];
$address=$row['Address'];
$RPS=$row['RPS'];

Now all the values are being displayed instead of only the first one.

现在将显示所有值,而不是仅显示第一个值。

回答by Wajih Tagourty

Display results on same page

在同一页面上显示结果

Well I've stumbled upon this with the same problem and I found out you can simply require the other file. include_once("PATH_TO_FILE")'.

好吧,我偶然发现了同样的问题,我发现你可以简单地要求另一个文件。 include_once("PATH_TO_FILE")'.

in /citizens.php

在/citizens.php

<?php include_once="infoct.php" ?>
<form> ... </form> 
<div>
 <?php $yourdata ?>
</div>

$yourdatashould be html.

$yourdata应该是html。

Do not forget about string sanitization !

不要忘记字符串消毒!

Make sure to remove action from the form

确保从表单中删除操作

Better than having all logic and Html in one file.

比将所有逻辑和 Html 放在一个文件中要好。