2014-01-13 16 views
0

我使用ORDER BY Lead_Price作爲如下─難度中示出從MySQL

$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>&nbsp;&nbsp;&nbsp;&nbsp;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

存儲號碼爲文本? –

+4

Lead_Price應該是數字 – softsdev

+0

鉛價格必須是數字,如果你想數字順序1,2,3 .. n。如果您對文本應用順序,它將像1,11,111,2,21,22 –

回答

0
$query = "SELECT * FROM properties WHERE Type='For Sale' 
AND Live = 'yes' ORDER BY CAST(Lead_Price AS DECIMAL(10,2))"; 

請使用CAST()功能,使VARCHAR價格由

+0

否將價格存儲在數字數據類型下。 – Strawberry

3

這個問題occures因爲,也許,你不存儲lead_price爲整數或浮點數,使訂單(更好的是一個整數選項),但是作爲一個字符串。它被比較爲一個字符串 - 所以char by char。

最好的解決方案 - 將列類型更改爲整數並存儲價格* 100(當您獲得£1050,50時,您應該在數據庫中存儲105050(所有使用浮動的編程語言都有一個巨大的舍入價格問題),並在新列的貨幣。

或者,不太好解決,ORDER BY CAST(Lead_Price AS DECIMAL(10,2));,但效果並不是很好。

+0

謝謝,這是真的。我已經改變了這一點。 –