【发布时间】:2017-08-25 20:38:35
【问题描述】:
我有一个 PHP 页面,它呈现一个 HTML 表单,该表单通过 POST 将数据发送到 PHP Page2,执行一些 MySQL 命令,根据结果,它将$status 设置为一些文本,以便我可以在初始提交时回显它页。不管我做什么,什么都没有。如果我删除顶部的$status='';,它会给出未定义的变量,所以它似乎再也看不到$status,除了开头的空白值。
Index.php(提交页面)
<form method="post" name="sn_upload" id="sn_upload" action="upload.php">
<?php include 'upload.php'; ?>
<div>
<label for="model">Model: </label><select id="model" name="model" title="Model">
<option value="Model A">Model A</option>
</select><br><br>
<label for="sn">Serial Number: </label><input type="text" id="sn" name="sn" placeholder="Serial Number" pattern="[a-zA-Z0-9]{11,13}"/><br><span class="error"><p id="sn_error" style="color:red;"></p></span><br>
<?php echo $status; ?> //this shows nothing at all
<input name="submit" type="submit" value="Submit" />
</div>
</form>
upload.php(MySQL 页面)
<?php
error_reporting(E_ALL);ini_set('display_errors',1);
$servername = "localhost";
$username = "user";
$password = "pass";
$dbname = "database";
$status = "";
if (isset($_POST['submit'])) {
// Create connection
$con = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($con->connect_error) {
die("Connection failed: " . $con->connect_error);
}
$mod = mysqli_real_escape_string($con,$_POST['model']);
$sn_num = mysqli_real_escape_string($con,$_POST['sn']);
$check = $con->query("SELECT * FROM rma_product WHERE pro_sn = ('$sn_num') ");
if ($check->num_rows == 0)
{
$sql = "INSERT INTO rma_product (m_type,pro_sn) VALUES ('$mod','$sn_num')";
if ($con->query($sql) === TRUE) {
$status = "Success";
header('Location: index.php');
} else {
$status = "Failed";
header('Location: index.php');
}
}
else if ($check->num_rows >= 1)
{
$status = "Exists";
header('Location: index.php');
}
$con->close();
}
return $status;
?>
【问题讨论】:
-
您在上面发布的“第 2 页”是否命名为 upload.php?如果是这样,您将表单发布到该页面并将该页面包含在“第 1 页”中?
-
您要发布到page2,然后在page1上显示从page2生成的变量?
-
也很确定你不应该用括号将你的变量包装在你的 SELECT 语句中,我以前从未见过那个标记。
-
加上HTML选择标签不应该是自动关闭的(即
<select id="model" name="model" title="Model" />然后有相应的关闭标签:</select>....) -
仅仅因为它看起来有效并不意味着它是正确的和/或将永远有效。
标签: php redirect http-post forms