いつも参考にさせていただいております。今回はじめての質問になりますが、よろしくお願いします。
PHPによるCSVファイル内の指定列内を検索する方法について困っております。似たような質問(http://oshiete1.goo.ne.jp/qa3570985.html)を参照しましたが、どうにもわからずほとほと困っている状態です。
とりあえず他サイトを参考にして検索フォームを下記のように作成しました。(ラジオボタンの送信内容は便宜上変更しました)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
<title></title>
</head>
<body>
<form action="search_4.php" method="POST">
<INPUT type="radio" name="touroku_type" value="りんご">りんご
<INPUT type="radio" name="touroku_type" value="なし">なし
<INPUT type="radio" name="touroku_type" value="ぶどう">ぶどう
<INPUT type="radio" name="touroku_type" value="メロン">メロン
<INPUT type="radio" name="touroku_type" value="スイカ">スイカ<BR>
<input type="submit" name="submit" value="検索">
</form>
<!--ここから検索結果-->
<ul>
<?php
if($_POST["touroku_type"]!=""){
$KeyWord=$_POST["touroku_type"];
$KeyWord=htmlspecialchars($KeyWord);
$Data=file("system.csv");
for($i=0;$i<sizeof($Data);$i++){
$lines=strip_tags($Data[$i]);
if(mb_eregi($KeyWord,$lines)){
$line=explode(",",$Data[$i]);
?>
<li><?=$line[3]?> → <a href="item.php?id=<?=$line[0]?>">詳細を見る</a></li>
<?php
}
}
}
?>
</ul>
</body>
</html>
CSVファイルの登録情報は
1,りんご,あり
2,なし,あり
3,ぶどう,なし
4,メロン,なし
5,スイカ,なし
とします。
この場合、”りんご”や”スイカ”など他で入力されていない情報で検索した場合きちんと出ますが、”なし”で検索すると2から5の情報が出てしまい検索として役に立たない状態です。
ここで質問なのですが、PHP上で指定列のみを検索する場合(上記の場合、配列の2つ目のみを検索対象とする)、上記プログラムのどこを変更すべきなのかご教授いただけますでしょうか?
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんにちは。
はじめまして。
ソースを拝見しました。
「なし」で検索をするとCSVの3列目の「あり・なし」も
引っかかってしまってますね。
ということは2列目のみ検索させなければならないので、
先に explode で各列に分割し、2列目のみを検索対象にします。
こんな感じです。
<!--ここから検索結果-->
<ul>
<?php
if($_POST["touroku_type"]!=""){
$KeyWord=$_POST["touroku_type"];
$KeyWord=htmlspecialchars($KeyWord);
$Data=file("system.csv");
print_a($Data);
for($i=0;$i<sizeof($Data);$i++){
$lines=strip_tags($Data[$i]);
$line=explode(",",$Data[$i]);
if(mb_eregi($KeyWord,$line[1])){
?>
<li><?=$line[1]?> → <a href="item.php?id=<?=$line[0]?>">詳細を見る</a></li>
<?php
}
}
}
?>
</ul>
いかがでしょうか。
explode様
回答ありがとうございました。
指示通りに書き換えて実行したところ、見事指定列のみを検索対象とすることができるようになりました。ここで2週間ほど躓いていたので感動の極みです。
しかし、少し変えただけで動くようになるなんて勉強不足としか言いようがないですね。お恥ずかしい。CSVに関する参考書自体なかなか本屋に置いていない事が多いので情報源がネットに偏りすぎて応用が利かないのはまずいですね。もっと勉強します。
アドバイスありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
PHPのページ間による配列の受け...
-
POSTデータのNAME属性をVALUEに...
-
HTMLフォームで複数選択のチェ...
-
<input type="hidden" >で配列...
-
PHPでじゃんけん勝負
-
チェックボックスによる検索(...
-
extract($_POST)
-
テキストボックスに初期値を入れる
-
複数チェックボックスの入力制...
-
HTMLのリンクをクリックするこ...
-
PHP ボタンが押されたら処理を...
-
フォームボタンを押すたびに数...
-
チェックボックスの値に応じてP...
-
ラジオボタンのチェックを判定...
-
フォームへの前回入力値をクリ...
-
チェックボックスによる検索
-
アップロードの際にファイルパス
-
$_POSTを連想配列で取得したい!!
-
入力フォーム→確認画面→送信画...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
<input type="hidden" >で配列...
-
PHP ボタンが押されたら処理を...
-
フォームへの前回入力値をクリ...
-
検索時の選択内容を保持する方法
-
PHPで画像の渡しが上手く行きま...
-
フォームボタンを押すたびに数...
-
syntax error, unexpected '}' ...
-
フォームでのリセットを使う方法
-
パラメーターを隠す
-
$_SESSIONについて教えて下さい。
-
ラジオボタンをsessionで使いたい
-
画面が更新されてもチェックボ...
-
phpの掲示板で新しい順に表...
-
PHPで、ボタンを押すと同じペー...
-
phpでの複数選択チェックボック...
-
PHPでじゃんけん勝負
-
チェックボックスを使った複数...
-
DBの値をチェックボックスに反...
-
PHPのmysqlに格納したデータの...
おすすめ情報