Php 什么';我的代码怎么了?
我试图允许用户根据名称、价格等对mysql查询进行排序。这个下拉列表给了他们这样做的能力,它根据用户的选择更改了“orderby”子句。现在是凌晨3点,我就是看不出错误:Php 什么';我的代码怎么了?,php,mysql,Php,Mysql,我试图允许用户根据名称、价格等对mysql查询进行排序。这个下拉列表给了他们这样做的能力,它根据用户的选择更改了“orderby”子句。现在是凌晨3点,我就是看不出错误: <?php $sortBy = $_POST['sortBy']; if ($sortBy) { $priceLowToHigh = $_POST['price-low-to-high']; $priceHighToLow = $_
<?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字段以查看哪个字段正在使用。如果没有选择选项,则上面的代码将默认为不使用,就像他发布的原始代码一样。除了我贴的那张有效=)对不起,我想我错了。我假设有另一个字段正在填充,名为这些名称。但我认为你事实上是对的。真不敢相信我错过了,半睡半醒的编码会导致愚蠢的错误。谢谢