我有一个表,它包含多个列,其中一列是检查/选择表行中的所有复选框,实际上我可以从行中的复选框中选择一个或多个复选框
我搜索过并找到了这个结果: multiple checkboxes with php in table 但它没有用,我完全无法理解。
我想从代码中做的是: 当我选择一个或多个复选框时,当我单击(发布)按钮时 - 该按钮的代码位于页面代码中的下方 - 页面应该从复选框中接收所选值并将它们发送到同一页面(文章) ?做=酒馆&安培;条款ArticleID =” $ FILEID)
这是代码:
<?php
$Title = 'Manage Approved Articles';
include 'init.php';
$AdminName = $_SESSION['username'];
// Check if user is the Admin or not
$stmt = $con->prepare('SELECT Username FROM users WHERE Username = ? AND isAdmin = 1');
$stmt->execute(array($AdminName));
$count = $stmt->rowCount();
if($count > 0) { } else {
header('Location: ../index');
exit();
}
?>
<section class="Cust-container">
<?php
$do = isset($_GET['do']) ? $_GET['do'] : 'article';
if($do == 'article') { echo
'<h2 class="heading">Manage Articles</h2>'; ?>
<!-- Manage Articles Page -->
<table class="admin-article-table">
<thead>
<tr>
<th width="41%">Article Title</th>
<th width="18%">Category</th>
<th width="10%">By</th>
<th width="10%">Publish
<input style="height: 20px; width: 20px;margin-left: 7px"
type="checkbox"
id="checkAll">
</th>
<th width="21%">Options</th>
</tr>
</thead>
<tbody>
<?php
// retrieving data from db
$stmt = $con->prepare('SELECT * FROM uploads WHERE Approved = 1');
$stmt->execute();
$rows = $stmt->fetchAll();
if(empty($rows)) { echo
'<tr>
<td class="empty" colspan="5">There\'re No Approved Articles</td>
</tr>';
} else {
foreach ($rows as $row) {
$fileid = $row['FileID'];
$filedir = $row['FileDirectory'];
$catID = $row['CatID'];
$F_name = array_shift(explode('.', $row['FileName']));
$full_fname = $row['FileName'];
$uploaderId = $row['User_ID']; echo
'<tr>
<td>' . $row['ArticleTitle'] . '</td>';?>
<?php
$stmt = $con->prepare('SELECT * FROM cats WHERE ID = ?');
$stmt->execute(array($catID));
$rows = $stmt->fetchAll();
if(empty($rows)) {
echo "<td class='empty'>No Declared Category</td>";
} else {
foreach ($rows as $row) {
$category = $row['Category'];
} echo '
<td>'.$category.'</td>
';
}
echo '<td>';?>
<?php
$stmt = $con->prepare('SELECT FullName FROM users WHERE UserID = ?');
$stmt->execute(array($uploaderId));
$rows = $stmt->fetchAll();
foreach ($rows as $row) {
echo $row['FullName'];
} echo '
</td>
<td>
<input type="checkbox" name="Publ[]"
value="'.$fileid.'" class="chk" required>
</td>
<td>';?>
<?php echo '
<a class="option-del" style="margin-left: 12%;float:left" href="?do=delete&fileid='.$fileid.'&fullName='.$full_fname.' "onclick="return ConfirmContin(this);">Delete</a>
<a class="option" style="float:left;margin-right: -30px" href="?do=unapprove&fileid='.$fileid.'&filename='.$F_name.'&fullnm='.$full_fname.'" onclick="return ConfirmContin(this);">Unapprove</a>
<br><br><br>
<form method="post" action="?do=updateCat&fileid='.$fileid.'">
<select name="cats">';
$stmt = $con->prepare('SELECT * FROM cats');
$stmt->execute();
$rows = $stmt->fetchAll();
if(empty($rows)) {
echo "<option>-- No Categories Found --</option>";
} else {
echo "<option value='0' Title='delete the article from its chosen category'>Make as Uncategorized</option>";
foreach ($rows as $row) {
$catid = $row['ID'];
$catname = $row['Category'];
echo '<option value='.$catid.'>'.$catname.'</option>';
}
} echo '</select><input type="submit" style="width:130px;height:40px;border-color:#777;background-color:#444;color:#FFF" value="Update"></form>
</td>
</tr>
';
}
}
?>
</tbody>
<tr><td colspan="3"></td>
<td>
<input type="submit" value="Publish" name="publish"
style="width:130px;height:40px;border-color:#090B64;
background-color:#475590;color:#FFF">
</td>
<td></td></tr>
</table>
</section>
<?php
} elseif ($do == 'pub') {
// Some Code for handling the sent values (sent by clicking on Publish button) from the selected checkboxes that exists in the table rows
} else {
header('Location: ../index');
exit();
} ?>
<?php
include $tpl . 'footer.php';
?>
这是表格的屏幕截图:
Table for checking multiple checkboxes
我是初学者,我不太了解php和处理请求(获取和发布)。 如果我没有充分澄清我的问题,请问我在哪一点上没有,所以你可以完全理解我的问题并帮助我解决它。
非常感谢。
答案 0 :(得分:0)
您需要的是form
。
W3Schools可以很好地描述表单的工作原理,但我也会在这里快速浏览一下。
HTML <form>
元素定义用于收集用户输入的表单。您在表格周围放置了form
,因此当您点击提交按钮(在本例中为发布)时,表格中的每个input
都会被发送。如果您正在使用GET,则数据将在问号后面的链接文本中发送,如果您使用POST,则不会使用链接地址。基本上如果你要改变某些东西(比如发表你的文章),你会想要使用POST。 (What is the difference between POST and GET?)。
用户点击提交后,您将访问该复选框的值。当他这样做时,它会将所有信息发送到表单的action
值 - 或者如果它没有,那么直接发送到同一页面,您可以在其中; ll在显示更新的信息之前进行处理。例如。 <form action="myActionPage.php" method="POST">
会将该表单中的所有信息通过POST
发送到myActionPage.php
。在myActionPage.php
内,您可以访问您的复选框值,如下所示:$_POST['checkboxName']
。如果您想要访问多个同名的复选框,请使用$_POST['checkboxName'][]
- 它是一个复选框的数组。 (https://stackoverflow.com/a/4997271/3437608做了一个非常好的工作来解释这个)
获得值后,请检查isset($_POST['checkboxName'])
是否为真,然后选中复选框。 (How to read if a checkbox is checked in PHP?)
然后您可以愉快地发布该页面,并将用户引导回您显示的管理页面或他们刚刚发布的页面。
祝你好运!