我正在使用ORDER BY Lead_Price,如下所示 -
$query = "SELECT * FROM properties WHERE Type='For Sale' AND Live = 'yes' ORDER BY Lead_Price";
然后我在while循环中使用数据。 Lead_Price数据类似于每周950英镑,每周1050英镑,每周900英镑,每周400英镑。
当我在页面上显示价格时,首先显示1050英镑的价格,其他3个按升序排列。任何关于为什么1050英镑不在底部的想法,因为我想以递增的价格顺序显示它们。以下是其他代码。感谢。
while($row = mysql_fetch_array($result)){
$propertylink = str_replace(' ', '-', $row['Property_Name']);
echo "<div class=villas-i><a href=villas/".$propertylink.">";
echo "<img src=images/villas/".$propertylink."/Image-1.jpg width=240 height=155 border=0></a>";
echo "<div class=villa-name><h3>".$row['Property_Name']."</h3></div>";
echo "<div><h4> Sleeps: ".$row['Sleeps']."</h4></div>";
echo "<div><h4>Bedrooms: ".$row['Bedrooms']."</h4></div>";
echo "<div><h4>Bathrooms: ".$row['Bathrooms']."</h4></div>";
echo "<p>".$row['Property_Short_Description']."</p>";
echo "<div class=from>".$row['Lead_Price']."</div>";
echo "<div><a href=villas/".$propertylink."><img src=images/more-info.gif border=0></a></div></div>";
}
答案 0 :(得分:3)
出现此问题的原因可能是,您不能将lead_price存储为整数或浮点数(更好的是整数选项),而是存储为字符串。它被比作一个字符串 - 所以char by char。
最佳解决方案 - 将列类型更改为整数并存储价格* 100(当您获得1050,50英镑时,您应将105050存储在数据库中(所有使用浮点数的编程语言存在巨大问题) (四舍五入的价格),以及新栏目中的货币。
或者,不是那么好的解决方案ORDER BY CAST(Lead_Price AS DECIMAL(10,2));
,但它表现不佳。
答案 1 :(得分:0)
$query = "SELECT * FROM properties WHERE Type='For Sale'
AND Live = 'yes' ORDER BY CAST(Lead_Price AS DECIMAL(10,2))";
请使用 CAST()功能让varchar价格按顺序排序