我的页面中的代码量越来越大。单独来说,我对所有各个部分的工作原理都有一个很好的理解,但我不明白他们是如何运作的。代码的第一位我有一个SQL数据库拉一个名称,然后将其传递到另一个表,由我所选择的名称进行排序该表:了解PHP POST以及如何提交多个命令
<form method="post" enctype="multipart/form-data">
<table id="" summary="PAGE HEADER" style='width:20%'>
<tr>
<th>
<?php
include('./db.php');
$PM = mysqli_query($con, "SELECT DISTINCT PMName FROM report ORDER BY PMName ASC");
?>
<b style="font-family: Candara, Calibri, Segoe, Optima, Arial, sans-serif;">Choose PM: </b>
<br>
<span class="custom-dropdown custom-dropdown--red">
<Select class="custom-dropdown__select custom-dropdown__select--red" name="PMName" onChange="submit(this.form)"<>
<?php
while ($row = mysqli_fetch_row($PM)) {
$selected = array_key_exists('PMName', $_POST) && $_POST['PMName'] == $row[0] ? ' selected' : '';
$sel = ($table === $row[0]) ? "id='sel' selected" : "";
printf(" <option value='%s' %s>%s</option>\n", $row[0], $selected, $row[0]);
}
?>
</th>
</span>
</tr>
</select>
</form>
,因为结果是巨大的,我已经建立在某种“上一页,下一页”交易中,用户一次只能显示10个结果。
<?php
if (isset($_POST['next'])) {
$postedLimit = (isset($_POST['next']) ? (int) $_POST['next'] : 0);
$nextLimit = $postedLimit + 10;
session_start();
$_SESSION['page'] = ((int) $nextLimit/10)+1;
$result = mysqli_query($con, "SELECT * FROM report WHERE PMName = '$PMSelection' AND REGNSB <> 0.000 ORDER BY RegNSB DESC Limit $nextLimit,$LimitItems");
}
?>
<table id="box-table-a" stlye="widgth:20%">
<form method="POST" action="">
<div class="container">
<div class="right">Page <?= $_SESSION['page'] ?> of <?= $totalPages ?>
<input type="submit" name="next" value="next" onclick="this.value=<?php echo $nextLimit; ?>">
</div></form></div></table>
我的问题是,当我点击这个“下一步”按钮,该查询运行:
$result = mysqli_query($con, "SELECT * FROM report WHERE PMName = '$PMSelection' AND REGNSB <> 0.000 ORDER BY RegNSB DESC Limit $nextLimit,$LimitItems");
但是,(原谅整件事是如何工作的我不认识...) $ PMSelection现在是空的,并且没有将任何值传递给SQL查询,所以无论我通过哪个名称过滤掉列表,都会消失。我来自VBA的世界,在那里我定义了一些东西,我可以永远使用它...为什么$ PMSelection有一个值,然后没有价值,对我来说是非常困惑....
我的问题是:
- 为什么$ PMSelection,一旦确定和以前使用的,而不是仍然可后来当我尝试使用它?
- 我该如何让$ PMSelection在某处/某种程度上被保持,这样我才能在第二个代码中访问它?
如果您执行'$ PMSelection ='whatever'',那么您执行该页面,该值将设置为该页面的生命周期。如果转到新页面,如果该值未被重新分配,则不存在。这就是为什么我们在php中有'$ _SESSION'的原因,因为它允许您以全局方式存储对值的引用。 – Ohgodwhy 2014-09-24 19:49:06