我的頁面中的代碼量越來越大。單獨來說,我對所有各個部分的工作原理都有一個很好的理解,但我不明白他們是如何運作的。代碼的第一位我有一個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