我有一個名爲「精選」(int,默認爲0)的列的產品表。當我在第一個位置添加特色產品時,它會在此列中添加值「1」,在第二個位置上添加「2」等等。 。 我的問題是,當我沒有產品的第一或第二的位置,但只有在第三或第二個,它會「促進」第一個位置上的第三個產品。 有沒有辦法使用默認選擇查詢中的產品填充未提升的職位(例如:第一位或第二位),並在第三位顯示特色產品的「特色」值爲3?通過專題排序 - php mysql
0
A
回答
1
基本上,你需要跟蹤的功能是什麼您填寫插槽,哪些是你需要填寫的。您可能還擔心,如果您的列表不是足夠長,你的所有功能插槽......所以,你可以這樣做:
$qh = mysql_query('SELECT featured, ... FROM products ORDER BY featured DESC');
//get the featured rows first;
while($row = mysql_fetch_assoc($qh)) {
if($row['featured'] > 0) {
$featured[$row['featured']] = $row;
} else {
break;
}
}
//values were inserted in reverse, so reorder them.
ksort($featured);
$idx = 1;
//make sure there was a next row from above while loop
if($row) {
do {
//print any featured rows that should appear at position $idx
while(isset($featured[$idx])) {
printRow($featured[$idx]);
$idx++;
}
//$idx doesn't have a featured row, so print a non-featured one
printRow($row);
$idx++;
} while($row = mysql_fetch_assoc($qh));
}
//print any remaining featured rows
foreach($featured as $key => $value) {
if($featured >= $idx) {
printRow($value);
}
}
0
其實真的很容易。 只需進行選擇查詢,並且您還要求提供精選。 在php中,您可以查看第一個有特色的號碼。 如果它大於1,則選擇正常產品。 一個小例子:
$resultsOther = array();
$result = executeQuery('SELECT featured, name, ~~ FROM products WHERE featured > 0 ORDER BY featured');
if($results[0]['featured'] > 1) {
$resultsOther = // get other products with a limit on the query
}
foreach ($resultsOther as $r) {
print_r($r);
}
foreach ($results as $r) {
print_r($r);
}
你可以做到這一點的另一種方式是:
// This will select max 5 items and if there are not enough featured items it also selects non featured.
$results = execute('SELECT featured, ~~ FROM products ORDER BY featured DESC LIMIT 5');
while ($result = array_pop($results)) {
print_r($result); // verander deze door de functie om de producten te tonen.
}
相關問題
- 1. 通過值排序php mysql
- 2. PHP通過mysql排序數組日期
- 3. 通過mysql中的問題排序
- 4. MySQL排序通過不排序?
- 5. PHP通過表單排序
- 6. PHP MySQL組通過問題
- 7. 迭代通過mysql的排在PHP
- 8. MySQL緩慢查詢 - 排序通過
- 9. MySQL:通過兩列函數排序
- 10. 通過mysql多個列排序
- 11. MySQL - 通過投票排序圖像
- 12. 通過多個ID排序MySQL查詢
- 13. 通過檢查選項按鈕排序PHP MYSQL
- 14. MySQL + PHP通過組合字符串排序
- 15. 我如何通過ID(PHP)添加和排序MySQL結果
- 16. Php排序mysql表
- 17. 排序php/mysql microstime
- 18. mysql排序問題
- 19. 排序兩列升序php mysql排序
- 20. 通過PHP MySQL INSERT問題mysql_query
- 21. 插入問題 - 的MySQL通過PHP
- 22. 通過鍵排序數組 - PHP
- 23. 通過二維陣列排序 - PHP
- 24. PHP通過Facebook排序喜歡
- 25. 排序PHP數組通過輸入值
- 26. PHP排序2D通過嵌套價值
- 27. 通過點擊列標題排序DBGrid
- 28. 排序通過的ArrayList,代碼問題
- 29. 通過投票Django-voting排序問題
- 30. 通過單擊列標題排序radGridView
您必須選擇所有產品的問題,您keysort將只是做與mysql orderby相同,WHERE精選> 0。不需要在php imo中對此進行排序。另外我不明白你如何填補普通產品的空白? – Erik 2011-03-09 08:18:05
@Erik,如果我有'WHERE featured> 0',那麼我就不會有任何非特色產品。當然,我可以用'ORDER BY'創造更多的創意,這樣就不需要重新排序鍵(類似於'ORDER BY featured = 0,featured')。我填補了do-while循環中的空白。同時打印內部特色的人,直到找到一個空白,然後我打印一個非功能的時間。如果不清楚,那麼'$ featured'數組中的每個索引都不會有值。 – jswolf19 2011-03-09 13:23:28
當然,如果多個項目具有相同的特徵值,則會更加複雜,但在問題中沒有提及。 – jswolf19 2011-03-09 13:24:12