注意:按结构的if()顺序的未定义索引

时间:2019-06-05 21:15:33

标签: php mysql sql mysqli

我有三个链接,每个链接都有一个“ ORDER BY”选项。我使用了这个if结构来更改$ sql并以正确的方式对其进行排序。我的订单页面上没有任何错误,但在未排序的主页面上,我在使用排序的每一行上都得到了“注意:未定义索引:排序”(3次)。

我用Google搜索并尝试了一些关于stackoverflow的可能解决方案,但到目前为止没有任何帮助。如果这是一个基本问题,很抱歉,但是我对于php还是很陌生,所以我对为什么收到此错误感到困惑。

<?php

//Query for speaker information
$sqlOverzichtSprekers = "SELECT idsprekers, voornaam, naam, afbeelding, 
bio, likecounter FROM sprekers";

//Sql ORDER BY
if ($_GET['sort'] == 'alpha')
{
    $sqlOverzichtSprekers .= " ORDER BY voornaam DESC";
}
elseif ($_GET['sort'] == 'popular')
{
    $sqlOverzichtSprekers .= " ORDER BY idsprekers";
}
elseif ($_GET['sort'] == 'likes')
{
    $sqlOverzichtSprekers .= " ORDER BY likecounter DESC";
}

//Query for speaker
if(!$resOverzichtSprekers = $mysqli->query($sqlOverzichtSprekers)){
    echo "Oeps, een query foutje op DB voor opzoeken sprekers";
    print("<p>Error: " . $mysqli->error . "</p>");
    exit();
}

?>

按排序/排序页面工作正常,没有任何错误,只有未排序的主页面具有以下错误:注意:未定义的索引:排序。

1 个答案:

答案 0 :(得分:1)

正如您所说,未排序的主页面存在问题...这是因为没有任何内容以$ _GET ['sort']的形式发送,但是您却在盲目地尝试阅读它。因此是错误。

首先查看$ _GET ['sort']是否具有值,然后使用它。更好的是,将其分配给变量,然后使用它……就像这样:

$sort = (isset($_GET['sort']) == true) ? $_GET['sort'] : '';

//Query for speaker information
$sqlOverzichtSprekers = "SELECT idsprekers, voornaam, naam, afbeelding, 
bio, likecounter FROM sprekers";

//Sql ORDER BY
if ($sort == 'alpha')
{
    $sqlOverzichtSprekers .= " ORDER BY voornaam DESC";
}
elseif ($sort == 'popular')
{
    $sqlOverzichtSprekers .= " ORDER BY idsprekers";
}
elseif ($sort == 'likes')
{
    $sqlOverzichtSprekers .= " ORDER BY likecounter DESC";
}