• 締切済み

チェックボックス、セレクトボックスの検索処理

--------------------------------------------------------------- (x.html) プルダウンのプログラム nameはa ラジオボックスのプログラム nameはb プルダウンのプログラム nameはc <input type="submit" value="検索" style="width:100;height:25;"> --------------------------------------------------------------- ◆プルダウン1、チェックボックス、プルダウン2があり、 3つともセレクトし、実行すると3つとも当てはまるデータが抽出されますが 抽出されない場合の、「ありません」の文章をいれたいのです。試行錯誤して みても思い通りにいかず、どうやっていったらいいか分かりません。 ◆3つの質問のうち、2つセレクトされただけとか、1つセレクトされた だけでも検索可能(セレクトされたものに当てはまるデータを抽出) にしたいのですが、どういう感じでプログラム組めばいいのでしょうか? * 以下のPHPファイルだと、3つセレクトし、3つ当てはまるデータしか抽出できないです。 (2つセレクトすると、2つだけ当てはまるデータがあるのに抽出できない) -------------------------------------------------------------- (a.php) <?php $x = $_POST["a"]; $w = $_POST["b"]; $z = $_POST["c"]; $Data=file("data.txt"); for($i=0;$i<sizeof($Data);$i++){ $line=explode(",",$Data[$i]); $sey=$line[4]; $sei=$line[5]; $sel=$line[6]; if($x >= $sey){ if($w == $sei){ if($z == $sel){ print "<table><tr><td rowspan='5 width='180'>ID:000$line[0]<br><img src=data/$line[9] border='0'></td> <th width='100'>名前</th><td>$line[1]</td></tr>      ・      ・      ・ </table>"; }}}} ?> ---------------------------------------------------------------- ご教授宜しくお願いします。

みんなの回答

  • freshfish
  • ベストアンサー率80% (12/15)
回答No.3

> 上手く動かず、無理でした。 どのように無理だったのでしょうか? ifで、「ある行が条件にマッチするかどうか」を調べているので、 それに対するelseで「ありません」を表示すると、 条件にマッチしない行のぶんだけ「ありません」が表示されます。 全体で見つからなかったときだけ「ありません」にするには、 ・フラグ(ANo.2だと$Find、初期値FALSE)を持たせる ・一つでも見つかったらTRUEにする ・forループが終わってまだFALSEのままだったら見つからなかったと判定

  • freshfish
  • ベストアンサー率80% (12/15)
回答No.2

ファイルを全部みてから判断する必要があります $Find = FALSE; for(){ if (){ echo "みつけた"; $Find = TRUE; } } if ($Find == FALSE) echo "ありません";

ayumisa
質問者

補足

ありがとうございます。 一応、ファイル載せておきますのでご教授お願いします。 <?php $x = $_POST["price"]; $w = $_POST["kate"]; $Data=file("data.csv"); $w=mb_convert_encoding($w,"UTF-8","auto"); for($i=1;$i<sizeof($Data);$i++){ $line=explode(",",$Data[$i]); $sey=$line[4]; $sei=$line[5]; if((($x >= $sey) || ($x == '')) && (($w == $sei) || ($w == '0'))) { print "<div class='deco2'><table> <tr><td rowspan='5' width='180'>ID:000$line[0]<br><img src=data/$line[9] border='0'></td> <th width='100'>名前</th> <td>$line[1]</td></tr> <tr><th>場所</th> <td>$line[2]</td></tr> <tr><th>時間</th> <td>$line[3]</td></tr> <tr><th>価格</th> <td>¥$line[4]</td></tr> <tr><td colspan='2'> <a href=$line[7] target='_blank'>ページ</a> <a href='$line[8]' target='_blank'>見る?</td></tr></table></div><br></body></html>"; } } ?> 「ありません」の文章を入れるには、if文の逆のことですから、 }の後に、else{print "ありません";を入れてみたのですが 上手く動かず、無理でした。 ご教授お願いします。><

  • freshfish
  • ベストアンサー率80% (12/15)
回答No.1

if( (($x >= $sey) || ($x == '')) && (($w == $sei) || ($w == '')) && (($z == $sel) || ($z == '')) ) { echo "{$line[1]}"; } とか? 3つとも選択されてない場合はこのままだと全部出てしまうので 全部出すもよし、ファイル読む手前で止めるもよしですね

ayumisa
質問者

お礼

ありがとうございます! 回答をヒントにやってみましたら、できました! 感謝しています! あとデータがない場合の、「ありません」を表示するには どうしたらいいでしょうか? ヒットしたものの逆ですので、else{}文を入れたところ入れ方がおかしいのか なかなか思い通りにいかないです。(エラーが出るか真っ白になります) またまたご教授お願いします。

関連するQ&A