我有三个页面,第一页是从数据库中检索数据。第二个或编辑页面是编辑我在单击复选框时选择的数据,并通过按钮编辑传递值。最后一个或删除页面是删除也从复选框中选择的数据,并通过删除按钮传递值。
以下是我的代码..
第一页
<?php
$sql = 'SELECT * FROM STAFF ORDER BY STAFF_NAME ASC';
$stmt = oci_parse($conn, $sql);
oci_execute($stmt);
?>
<table width="900" border="1" align="center" cellpadding="0" cellspacing="0">
<tr>
<th>Staff ID</th>
<th>Staff Name</th>
<th></th>
</tr>
<?php
$a = 1;
while (($row = oci_fetch_array($stmt, OCI_ASSOC)) != false) {
?>
<tr>
<td><?php echo $row['STAFF_ID'] ?></td>
<td><?php echo $row['STAFF_NAME'] ?></td>
<td align="center"><input type="checkbox" name="chk'<?php echo $a ?>' " value="<?php echo $row['STAFF_ID'];?>"></td>
</tr>
<?php
$a = $a + '1';
}
oci_free_statement($stmt);
oci_close($conn);
?>
</table>
<button>Edit</button>
<button>Delete</button>
秒/编辑页面
<?php
$sql = oci_parse($conn, "SELECT COUNT(STAFF_ID) AS COUNT_ROW FROM STAFF");
oci_execute($sql);
$row = oci_fetch_array($sql);
$a = $row["COUNT_ROW"];
for($i=0; $i<count($a); $i++)
{
if(isset($_POST["chk".$i]) )
{
$stmt = oci_parse($conn, "SELECT * FROM STAFF WHERE STAFF_ID = :staff_id ");
oci_bind_by_name($stmt,':vendor_id',$vendor_id1,10);
$vendor_id1 = $_POST["chk".$i];
$objExecute = oci_execute($stmt);
$row = oci_fetch_array($stmt);
}
else{
echo "No Data Selected";
}
}
?>
<input type="text" placeholder="Staff ID" name="staff_id" value="<?php echo $row['STAFF_ID'];?>">
<input type="text" placeholder="Staff Name" name="staff_name" value="<?php echo $row['STAFF_NAME'];?>">
答案 0 :(得分:2)
有很多方法可以做到。
当您想要在后续访问中传递变量数据时使用会话。例如,您记录了用户,并且您希望仅从db获取一次登录,并将其保存在会话中,以便在您可以访问它的任何页面上。
<强> page_1.php 强>
<?php
session_start();
$_SESION['variable'] = 'value';
<强> page_2.php 强>
<?php
session_start();
echo $_SESSION['variable'];
当您要保留的信息应保留更长时间但不总是保留时使用。它主要取决于db类型。有时会话机制使用数据库。 redis用于会话存储是很常见的。
<强> page_1.php 强>
$db->query("INSERT INTO storage_table(name,value) VALUES('variable', 'value')");
<强> page_2.php 强>
var_dump($db->query("SELECT value FROM storage_table WHERE name='variable'")->fetch());
get的常见用法是当您想要传递更改输出的变量时。例如,你有结果需要分页,所以网址看起来像data.php?page = 2所以在PHP中你会得到$ _GET [&#39; page&#39;];
<强> page_1.php 强>
header('Location: page_2.php?variable=value');
<强> page_2.php 强>
echo $_GET['variable'];
如果您想在用户关闭浏览器后保留一些信息,则使用Cookie。它们用于在远程浏览器中存储数据,从而跟踪或识别返回用户。
<强> page_1.php 强>
<?php
setcookie("variable","value");
<强> page_2.php 强>
<?php
echo $_COOKIE["variable"];
因此,您看到有很多方法可以将变量传递给另一个页面。我只提供了一些例子,但还有更高级的例子有curl,redis,HTTP push等。
答案 1 :(得分:0)
你显然可以通过多种方式实现它,但是因为你已经为$_POST
方法构建了一个结构,我认为这是要走的路。
所以我想你想编辑选中复选框的行吗?您要“发送”到下一页的值是'chk [ANYNUMBER]'复选框。
为此,您需要将第一页中的表格和按钮包装成<form>
。确保<form>
使用POST方法和修改页面作为操作,因此<form method="POST" action="page2.php">
第二次确保修改button
成为submit
,以便点击时提交表单在它上面。
现在,您可以使用$_POST[ANYINPUTNAME]
获取第二页中的值,以便example $_POST["chk1"]
修改强>
首页应该是这样的(请注意input
和form
代码并将page2.php
更改为您的网页名称):
...
<form method="post" action="page2.php">
<table width="900" border="1" align="center" cellpadding="0" cellspacing="0">
<tr>
<th>Staff ID</th>
<th>Staff Name</th>
<th></th>
</tr>
<?php $a = 1; while (($row = oci_fetch_array($stmt, OCI_ASSOC)) != false) { ?>
<tr>
<td><?php echo $row['STAFF_ID'] ?></td>
<td><?php echo $row['STAFF_NAME'] ?></td>
<td align="center"><input type="checkbox" name="chk'<?php echo $a ?>' " value="<?php echo $row['STAFF_ID'];?>"></td>
</tr>
<?php $a = $a + '1'; } oci_free_statement($stmt); oci_close($conn); ?>
</table>
<input type="submit" name="edit_button" value="Edit">
<input type="submit" name="delete_button" value="Delete">
</form>