注意:if()中未定义的索引按结构排序[重复]

Posted

技术标签:

【中文标题】注意:if()中未定义的索引按结构排序[重复]【英文标题】:Notice: undefinded index in if() order by structure [duplicate] 【发布时间】:2019-06-05 21:15:33 【问题描述】:

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

我在 *** 上搜索并尝试了一些可能的解决方案,但到目前为止没有任何帮助。如果这是一个基本问题,我很抱歉,但我对 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();


?>

order by/sort 页面工作正常,没有任何错误,只有未排序的主页面出现以下错误:Notice: Undefined index: sort.

【问题讨论】:

在加载此页面的 url 中有 ?sort= .. $_GET['sort'] 表示您有该变量来自 url,看起来它不是 【参考方案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";

【讨论】:

以上是关于注意:if()中未定义的索引按结构排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章

php中未定义的删除索引[重复]

按索引排序数组[重复]

JavaScript按属性值对字典进行排序[重复]

按特定索引降序对数组进行排序[重复]

VB 脚本 if 语句:未定义子

python中未按数字排序的元组列表