如何发送表

时间:2016-10-17 19:16:46

标签: php mysql html5 web

我有一个表,它包含多个列,其中一列是检查/选择表行中的所有复选框,实际上我可以从行中的复选框中选择一个或多个复选框

我搜索过并找到了这个结果: 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和处理请求(获取和发布)。 如果我没有充分澄清我的问题,请问我在哪一点上没有,所以你可以完全理解我的问题并帮助我解决它。

非常感谢。

1 个答案:

答案 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?

然后您可以愉快地发布该页面,并将用户引导回您显示的管理页面或他们刚刚发布的页面。

祝你好运!