私のクルーズと運賃のテーブルで検索を返すクエリは次のとおりです。
SELECT *, MIN(fares.offered) FROM cruises,fares
WHERE cruises.departs > CURDATE() AND (cruises.destination LIKE %s OR
cruises.second_destination LIKE %s) AND
EXTRACT(YEAR_MONTH from cruises.departs) LIKE %s
AND cruises.fromport LIKE %s
AND cruises.ship LIKE %s AND cruises.live = 'Y'
AND fares.cruise_id = cruises.id
GROUP BY fares.cruise_id ORDER BY cruises.departs, cruises.fromport"
ユーザーが検索を絞り込むことができるように、いくつかのジャンプ メニューがあります。たとえば、上記のクエリは 2012 年 7 月のすべてのクルーズを返します。いくつかはロンドン発、一部はリバプール発です。
ポート選択メニューには、このようにすべての航海が表示されます
London
Liverpool
London
London
Liverpool
7 月に返された航海記録ごとに 1 回。
欲しいだけ
London
Liverpool
これは選択コードです:
<select name="jumpMenu3" id="jumpMenu3" onchange="MM_jumpMenu('parent',this,0)">
<option value="">Select a port</option>
<?php
$port = '';
mysql_data_seek($cruises, 0);
while ($row_cruises = mysql_fetch_assoc($cruises)) {
if ($row_cruises['fromport'] != $port) {
$port = $row_cruises['fromport'];
?>
<option value="index.php?subj=2&destination=<?php
echo urlencode($row_cruises['destination']);
?>&departs=<?php
echo date('Ym',strtotime($row_cruises['departs']));
?>&port=<?php
echo urlencode($port);?>"<?php
if ($_GET['port'] == $row_cruises['fromport']) {
echo "selected=\"selected\"";
}
?>><?php echo $port; ?></option>
<?php } ;
}
if(mysql_num_rows($cruises) > 0) {
mysql_data_seek($cruises, 0);
$row_cruises = mysql_fetch_assoc($cruises);
}
?>
</select>
GROUP BY について考えましたが、ポートの検索クエリでそれを使用できません。明らかに各ポートから複数の航海があるためです。月の選択オプションに別のクエリが必要かもしれません。または、php でグループ化できますか? ?