php - 通过表单批准行 - 获取空白页

标签 php mysql forms

我想显示“已批准”列为“否”的所有条目的列表,然后在其旁边放置一个按钮,单击该按钮会将“已批准”更改为"is"。我通过代码检查器运行了这个并修复了一些括号等问题。现在它告诉我没有错误,所以其他东西不起作用。这可能是我遗漏的一些小东西(我希望)。任何人都可以帮助我找到/理解其中的哪一部分是不正确的......和/或是否有更好的方法来实现我想要的?

<?php
  //select the database to write to
  $unapprovedsires = mysql_query("SELECT * FROM nominatedsires WHERE approved = 'no'");
    //While loop to cycle through the rows
    while($row = mysql_fetch_assoc($unapprovedsires)){
        $sirename = $row['sirename'];
        echo $sirename;}
?>
<ul class="admin-fields">
<?php
    foreach($row as $field){
        if(empty($field)){
            echo "....";
        }
        print '<li>' .$field.' </li>';
    }//End For Each Loop
    //print $sirename;
?>
        </ul>
<p>
 <?php
    if(isset($_POST['approve'])){
    mysql_query("UPDATE nominatedsires SET approved = 'yes' WHERE sirename = '.$sirename.'") or die ("Something went wrong");
}
  ?>
    <ul>
        <li>

<form method="post">
    <input type="hidden" name="sirename" value="$sirename" />
    <button name="approve" id="approve" type="submit">Approve Sire</button>
</form>
           </li>
   </ul>

最佳答案

正如我在评论中提到的,您需要使用 echo 语句将 $sirename 包装在 PHP 标记中。您也没有将 $_POST['sirename'] 传递到脚本中。否则,它默认为 mysql_fetch_assoc() 中的原始 $sirename

警告:您设置脚本的方式很容易受到注入(inject)攻击。这只是一个向您展示如何传递变量的示例。请参阅:How can I prevent SQL injection in PHP?

<?php
  //select the database to write to
  $unapprovedsires = mysql_query("SELECT * FROM nominatedsires WHERE approved = 'no'");
    //While loop to cycle through the rows
    while($row = mysql_fetch_assoc($unapprovedsires)){
        $sirename = $row['sirename'];
        echo $sirename;}
?>
<ul class="admin-fields">
<?php
    while($row = mysql_fetch_assoc($unapprovedsires)){
        if(empty($row['sirename']))
            echo "....";
        else
            print '<li>' .$row['sirename'].' </li>';
    }
    //print $sirename;
?>
        </ul>
<p>
<?php
    if(isset($_POST['approve'])){
        $sirename = mysql_real_escape_string($_POST['sirename']);
        mysql_query("UPDATE nominatedsires SET approved = 'yes' WHERE sirename = '$sirename'") or die ("Something went wrong");
    }
?>
    <ul>
        <li>
            <form method="post" method="<?php echo $_SERVER[PHP_SELF]; ?>">
                <input type="hidden" name="sirename" value="<?php echo $sirename; ?>" />
                <input type="submit" name="approve" id="approve" value="Approve Sire" />
            </form>
       </li>
</ul>

关于php - 通过表单批准行 - 获取空白页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21291535/

相关文章:

php - 公司概况点击量排名前 10 名的公司的 SQL - 或者更好的解决方案?

java - 接口(interface)实现困惑?

php - ng-repeat 在 angularjs 中的 ul 内部不起作用

php - Yii CGridView BELONGS_TO 关系搜索 : Numeric comparison operator fails

javascript - 单选按钮值未显示

php - 在购物车页面 woocommerce 中显示内联 div

php - 使用 HTML 形式插入到 MySQL

python - 如何使用 sqlalchemy 编写帮助器类

php - 链接简历提交 HTML 表单以提交到 MySQL 数据库

forms - 即使某些字段正确, Bootstrap 验证程序也会将整个表单标记为红色