【问题标题】:Form and PHP result display on same page表单和 PHP 结果显示在同一页面上
【发布时间】:2015-06-23 02:43:40
【问题描述】:

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

代码:/citizens.php(主页)

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

代码:/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>

感谢 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>";
    }
}
?>

数据库快照

【问题讨论】:

  • stop using mysql_* functions。它们不再被维护并且是officially deprecated。请改为了解prepared statements,并使用PDO。如果您希望数据“返回”到公民页面,您可能需要使用 AJAX。你也有SQL Injection的危险
  • 目前我正在使用这些,因为这些是我的老师对我的想法。我想我可以改变这些......谢谢你的建议。
  • 在现代编码方面,学校不应该教“旧 Skool”的东西。然后他们想知道他们是如何/为什么被黑客入侵的。 Sam 对吗? @JayBlanchard mysql_,老了,没有任何安全措施。 “我想我可以改变那些……”,不是“可以”,而是应该/更好。使用准备好的语句并阅读 XSS 注入。
  • 根据您的编辑:我当然希望这些不是您的实际登录凭据。如果是,您最好去更改密码,然后快速。
  • 它们不是我真实的登录信息;)

标签: php html post


【解决方案1】:

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

<?php

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

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

这就是全部。

【讨论】:

  • 非常感谢,但您让它在我的本地服务器上运行。现在我已经将它上传到主机,它现在只显示第一个数组(名称)。你碰巧知道解决这个问题的方法吗?
  • 你有where id=$id2,这意味着你可能只获取一条记录。
  • ID是获取信息的“公民”的ID。我更改了代码并将其添加到主帖中,还添加了数据库快照。当我在本地主机上使用它时,它确实检索了所有信息
【解决方案2】:

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

<?php

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

其他使用 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>

在你的infact.php 最后回显数据,以便 ajax 将数据作为回报。

【讨论】:

    【解决方案3】:

    你可以把所有的东西都放在 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>
    

    不要忘记字符串清理!

    【讨论】:

      【解决方案4】:

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

      在同一页面上显示结果

      感谢Marc B

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

      <?php
      
      if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
       ... form was submitted, process it ...
       ... display results ...
       ... whatever else ...
      }
      ?>
      
      <html>
      <body>
      <form method="post"> ... </form>
      </body>
      </html>
      

      这就是全部。

      仅显示第一个值

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

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

      现在所有值都显示出来了,而不是只显示第一个。

      【讨论】:

        【解决方案5】:

        在同一页面上显示结果

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

        在 /citizens.php 中

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

        $yourdata 应该是html。

        不要忘记字符串清理!

        确保从表单中删除操作

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多