Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 什么';我的代码怎么了?_Php_Mysql - Fatal编程技术网

Php 什么';我的代码怎么了?

Php 什么';我的代码怎么了?,php,mysql,Php,Mysql,我试图允许用户根据名称、价格等对mysql查询进行排序。这个下拉列表给了他们这样做的能力,它根据用户的选择更改了“orderby”子句。现在是凌晨3点,我就是看不出错误: <?php $sortBy = $_POST['sortBy']; if ($sortBy) { $priceLowToHigh = $_POST['price-low-to-high']; $priceHighToLow = $_

我试图允许用户根据名称、价格等对mysql查询进行排序。这个下拉列表给了他们这样做的能力,它根据用户的选择更改了“orderby”子句。现在是凌晨3点,我就是看不出错误:

    <?php
        $sortBy = $_POST['sortBy'];
        if ($sortBy) {

            $priceLowToHigh = $_POST['price-low-to-high'];
            $priceHighToLow = $_POST['price-high-to-low'];
            $dateMostRecent = $_POST['date-most-recent'];
            $dateOldest = $_POST['date-oldest'];
            $alphabeticalOrder = $_POST['alphabetical-order'];

            if ($priceLowToHigh) {
                $sortOrder = "price ASC";
            } elseif ($priceHighToLow) {
                $sortOrder = "price DESC";
            } elseif ($dateMostRecent) {
                $sortOrder = "date DESC";
            } elseif ($dateOldest) {
                $sortOrder = "date ASC";
            } elseif ($alphabeticalOrder) {
                $sortOrder = "name ASC";
            }

        } else {
            $sortOrder = "date DESC";
        }
    ?>
    <form action="" method="post">
        <select name="sortBy" onchange="this.form.submit()">
            <option>Sort By</option>
            <option value="price-low-to-high">Price (low to high)</option>
            <option value="price-high-to-low">Price (high to low)</option>
            <option value="date-most-recent">Date (most recent)</option>
            <option value="date-oldest">Date (oldest)</option>
            <option value="alphabetical-order">Alphabetical Order</option>
        </select>
    </form>

似乎您的代码在双引号中,而php应该用单引号替换您的代码。您应该将该sql打印到屏幕上,您将看到它很可能不会替换该值


我指的是您进行mysql_查询调用的那一行。

似乎您的代码在双引号中,而php应该用单引号替换您的代码。您应该将该sql打印到屏幕上,您将看到它很可能不会替换该值


我指的是您进行mysql_查询调用的那一行。

您处理菜单的方式不正确。$sortBy变量已经是用户选择的变量,而不是单独的$\u POST字段

这是你应该做的-

<?php
    $sortBy = $_POST['sortBy'];
    if($sortBy == 'price-low-to-high') {
        $sortOrder = "price ASC";
    } else if($sortBy == 'price-high-to-low') {
        $sortOrder = "price DESC";
    } else if($sortBy == 'date-most-recent') {
        $sortOrder = "date DESC";
    } else if($sortBy == 'date-oldest') {
        $sortOrder = "date ASC";
    } else if($sortBy == 'alphabetical-order') {
        $sortOrder = "name ASC";
    } else {
        $sortOrder = "date DESC";
    }
?>

您处理菜单的方式不正确。$sortBy变量已经是用户选择的变量,而不是单独的$\u POST字段

这是你应该做的-

<?php
    $sortBy = $_POST['sortBy'];
    if($sortBy == 'price-low-to-high') {
        $sortOrder = "price ASC";
    } else if($sortBy == 'price-high-to-low') {
        $sortOrder = "price DESC";
    } else if($sortBy == 'date-most-recent') {
        $sortOrder = "date DESC";
    } else if($sortBy == 'date-oldest') {
        $sortOrder = "date ASC";
    } else if($sortBy == 'alphabetical-order') {
        $sortOrder = "name ASC";
    } else {
        $sortOrder = "date DESC";
    }
?>

您的基本代码有点错误。应为以下内容:-

<?php
$sortBy = $_POST['sortBy'];

if($sortBy == 'price-low-to-high')
  $sortOrder = "price ASC";
else if($sortBy == 'price-high-to-low')
  $sortOrder = "price DESC";
else if($sortBy == 'date-most-recent')
  $sortOrder = "date DESC";
else if($sortBy == 'date-oldest')
  $sortOrder = "date ASC";
else if($sortBy == 'alphabetical-order')
  $sortOrder = "name ASC";
else
  $sortOrder = "date DESC";
?>

<form action="" method="post">
        <select name="sortBy" onchange="this.form.submit()">
            <option>Sort By</option>
            <option value="price-low-to-high">Price (low to high)</option>
            <option value="price-high-to-low">Price (high to low)</option>
            <option value="date-most-recent">Date (most recent)</option>
            <option value="date-oldest">Date (oldest)</option>
            <option value="alphabetical-order">Alphabetical Order</option>
        </select>
</form>  

排序
价格(从低到高)
价格(从高到低)
日期(最近)
日期(最早)
字母顺序
如果您将代码更改为上面的代码,我认为这将起作用


希望有帮助。

您的基本代码有点错误。应为以下内容:-

<?php
$sortBy = $_POST['sortBy'];

if($sortBy == 'price-low-to-high')
  $sortOrder = "price ASC";
else if($sortBy == 'price-high-to-low')
  $sortOrder = "price DESC";
else if($sortBy == 'date-most-recent')
  $sortOrder = "date DESC";
else if($sortBy == 'date-oldest')
  $sortOrder = "date ASC";
else if($sortBy == 'alphabetical-order')
  $sortOrder = "name ASC";
else
  $sortOrder = "date DESC";
?>

<form action="" method="post">
        <select name="sortBy" onchange="this.form.submit()">
            <option>Sort By</option>
            <option value="price-low-to-high">Price (low to high)</option>
            <option value="price-high-to-low">Price (high to low)</option>
            <option value="date-most-recent">Date (most recent)</option>
            <option value="date-oldest">Date (oldest)</option>
            <option value="alphabetical-order">Alphabetical Order</option>
        </select>
</form>  

排序
价格(从低到高)
价格(从高到低)
日期(最近)
日期(最早)
字母顺序
如果您将代码更改为上面的代码,我认为这将起作用


希望有帮助。

拉斐尔,我不能对你的答案发表评论,因为我的回答不够高,但我只想提到可能使用switch语句以提高可读性。但你在那里是正确的。Upvote

我不能对你的答案发表评论,拉斐尔,因为我的回答不够高,但我只想提到,为了可读性,可能会使用switch语句。但你在那里是正确的。Upvote

表单标记不应该有操作的值吗?就像当前页面的名称一样。。。发布到哪里?不一定是因为默认值将是当前页面。表单标签不应该有操作的值吗?就像当前页面的名称一样。。。发布到哪里?不一定是因为默认值将是当前页面。实际上,除了检测他们是否选择执行自定义排序外,他没有使用排序方式。之后你可以看到他正在检查各个post字段以查看哪个字段正在使用。如果没有选择选项,则上面的代码将默认为不使用,就像他发布的原始代码一样。除了我贴的那张有效=)对不起,我想我错了。我假设有另一个字段正在填充,名为这些名称。但我认为你事实上是对的。真不敢相信我错过了,半睡半醒的编码会导致愚蠢的错误。谢谢。实际上,除了检测他们是否选择执行自定义排序外,他没有使用排序方式。之后你可以看到他正在检查各个post字段以查看哪个字段正在使用。如果没有选择选项,则上面的代码将默认为不使用,就像他发布的原始代码一样。除了我贴的那张有效=)对不起,我想我错了。我假设有另一个字段正在填充,名为这些名称。但我认为你事实上是对的。真不敢相信我错过了,半睡半醒的编码会导致愚蠢的错误。谢谢