POST方法和GET方法 - 单选按钮现在不起作用

时间:2017-11-26 04:41:32

标签: php html mysql

我正在开发内容管理系统。此特定页面将是内容管理器可用于评估内容性能的页面,并且应具有5个允许CM对内容1-5进行评级的单选按钮以及允许CM将注释插入表格的注释框。该页面链接到索引页面,该索引页面将获取要审阅的特定内容的ID。单选按钮没有显示,并且出现了许多错误,例如"未定义索引"三个变量 - blogpostID,comment和opt radio。任何人都可以帮我这个代码吗?我首先需要修理单选按钮,因为它们没有显示出来。然后我需要正确地将数据连接到MySQL,因此评级和评论可以发布到数据库中,因此它知道获取博客帖子的ID,因为那是PK。

  
<!DOCTYPE html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">

    <link rel="stylesheet" type="text/css" href="css/style.css">


<!-- Navbar Code -->
<?php  
  require_once('PHP_functions/CM_navbar.php');
?>

<!-- End of Navbar -->

<div class="center spacer">
  <h3 id = "main-title"> Rate Blog </h3>
</div>

<form action ='' method = "POST">
<div class="container">
  <div class="row">
    <div class="form-group">
      <label for="radio-inline-group">Rating:</label>
        <label class="radio-inline"><input type="radio" name="optradio" value="1">1</label>
        <label class="radio-inline"><input type="radio" name="optradio" value="2">2</label>
        <label class="radio-inline"><input type="radio" name="optradio" value="3">3</label>
        <label class="radio-inline"><input type="radio" name="optradio" value="4">4</label>
        <label class="radio-inline"><input type="radio" name="optradio" value= "5">5</label>
    </div>
  </div>

  <div class="row">
    <div class="form-group">
      <label for="comment">Comment:</label>
      <textarea class="form-control" rows="5" id = "comment" name="comment"></textarea>
    </div>
  </div>

  <div class="row">
      <button type="button" class="btn btn-warning">Request Revision</button>
      <button type="button" class="btn btn-success">Approve</button>
  </div>
</div>

<?php
$name_of_table = "Blog";
$id = $_GET['blogID'];
$rating = $_POST['optradio'];
$managerComments = $_POST['comment'];

$query = "UPDATE" .$name_of_table. "SET rating = :optradio, managerComments = :comment WHERE blogID = :blogID";
$TableInfo = getRows($query); 

foreach($TableInfo as $data)
    {
      echo '
      <tr>
        <th>'.$data['ID'].'</th>
        <td>'.$data['title'].'</td>
        <td>'.$data['client'].'</td>
        <td>'.$data['freelancer'].'</td>
        <td>'.$data['Draft Due'].'</td>
        <td>'.$data['Draft Received'].'</td>
        <td>'.$data['onTime'].'</td>
        <td><a href="./CM_reviewBlog.php?id='.$data['ID'].'">Rate</a></td>
      </tr>';
    }

?>
</form>

</body>
</html>



    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
  </body>
</html>

1 个答案:

答案 0 :(得分:0)

目前,每次访问页面时都会执行您的SQL语句。但是,在您第一次访问时,由于用户尚未设置值,因此不应执行该操作。这也是你得到&#34;未定义索引&#34;错误,因为$_POST数组为空,没有发送任何表单。此外,在UPDATE查询中使用getRows()(无论它做什么,它不是函数中的php构建)都没有意义。

要解决您的问题,只有在用户实际发送了HTML表单时才必须执行UPDATE查询。您可以使用isset()执行此操作,以查看$_POST数组是否填充了您需要的值。

if (isset($_POST['optradio'], $_POST['comment'])) {
    // run UPDATE query here
}
// normal SELECT query hiere

此外,如果您希望在代码中继续使用$_GET['blogID'],那么您的HTML表单也必须发送此信息。为此,您需要在action=""标记的<form>属性中指定要调用的URI。看起来应该是这样的:

<form action="yourPage.php?blogID=<?php echo (int)$_GET['blogId']; ?>" method="post">
    ...
</form>

这样blogID值仍然在$_GET,但表单值在$_POST