条件中的$ _GET变量

时间:2015-12-13 07:53:58

标签: php mysql string

我正在努力解决这个问题。 我有这个叫做getCategories的函数:

您好。我正在努力解决这个问题。 我有这个

function getCategories(){
    global $con;
    $q = "SELECT * FROM categories;";
    $result = mysqli_query($con, $q);
    while($row = mysqli_fetch_assoc($result)){
        $category = $row["CategoryName"];
        $sec = htmlspecialchars($category);
        echo " <tr>
        <td>" . $category . "</td>
        <td>
            <a>View</a> |
            <a href=categories.php?task=update&category=" . urlencode($category) . ">Edit</a> |
            <a href=categories.php?task=delete&category=" . urlencode($category) . ">Delete</a>
        </td>
        </tr>";
    }
}

然后我有categories.php(表格)

<form action="categories.php" method="POST">
    <p>
        <label for="categoryname">Category Name:&nbsp;</label>
        <input type="text" name="category_name" placeholder="Enter category name" value="<?php echo $editCat?>">
        <?php
            if ($_GET["task"]="") {
                echo "<input type='submit' value='Add Category' name='submit'>";
            } else {
                echo "<input type='submit' value='Update Category' name='update'>";
            }           
        ?>
    </p>
</form>

但是当我点击编辑按钮时,脚本总是回显第一个。我该怎么办?

3 个答案:

答案 0 :(得分:0)

if($ _GET [“task”] =“”)

应该是

if($ _GET [“task”] ==“”)

因为第一个将永远返回true

答案 1 :(得分:0)

您正在分配。你应该做比较,所以把这一行:

if ($_GET["task"] == "") {

而不是这一行:

if ($_GET["task"]="") {

更新(技术稍微):

你写的确实检查比较的结果是否返回truefalse,并且因为在99.99999%变量赋值操作成功结束,第一个条件总是被传递而执行者永远不会到达第二个条件的内容。

答案 2 :(得分:0)

您可以检查任务变量是否作为查询字符串在url中传递。

<?php
    if (!isset($_GET["task"]) || $_GET["task"] == '') {
        echo "<input type='submit' value='Add Category' name='submit'>";
    } else {
        echo "<input type='submit' value='Update Category' name='update'>";
    }           
?>