簡體   English   中英

用PHP分組而不在MySQL查詢中

[英]Group with PHP not in MySQL query

我有這樣的桌子

id | type 
--- ----- 
1  | fh  
--- ----- 
2  | fhs  
--- -----  
3  | so    
--- -----  
4  | sos   


while($row = mysql_fetch_array($res)){
    if($row['type'] == "fh" OR $row['type'] == "fhs"){
        $name = "Flush Head Studs";
    }else if($row['type'] == "so" OR $row['type'] == "sos"){
        $name = "Through Standoffs";
    }
    $category .= '<option value="'.$row['type'].'" name="'.$row['type'].'">' . $name . '</option>';
}

上面的代碼是兩次顯示名稱。 我該怎么做,名字只在列表中一次。

您的結果是正確的! 如果您這樣更改代碼,則可以了解原因...

while($row = mysql_fetch_array($res)){
    if($row['type'] == "fh" OR $row['type'] == "fhs"){
        $name = "Flush Head Studs ".$row['type'];
    }else if($row['type'] == "so" OR $row['type'] == "sos"){
        $name = "Through Standoffs ".$row['type'];
    }
    $category .= '<option value="'.$row['type'].'" name="'.$row['type'].'">' . $name . '</option>';
}

如果要選擇所有類型,我建議您向表中添加描述或名稱列...因為您將所有類型都作為選擇字段中的值。

在顯示的代碼中,對於用戶可見的2種不同(和重復的) option內容(來自$ name),您獲得了4種不同的value屬性(來自$ row ['type'])

因此,您必須選擇以下一種方式:
1-放棄兩個value屬性(最簡單的方法是刪除ORs一側和OR本身)(這也許是您所要求的)
2-也使用$ row ['type']對option內容進行明顯的區分(但是這給出了4個選項而不是2個)

  $category .= '<option value="'.$row['type'].'" name="'.$row['type'].'">' .$row['type'].' - '. $name . '</option>';

3-給我們更多的背景來理解這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM