- PR -

URLに付加するパラメタに同一名称は使えますか?

1
投稿者投稿内容
まる
会議室デビュー日: 2005/04/26
投稿数: 3
投稿日時: 2005-04-26 18:59
初めて質問させていただきます。

php+mysqlでweb検索システムを構築しています。
日経goo<http://nikkei.goo.ne.jp>で新聞記事の検索システムが運用されていますが、本文や見出しといった検索対象を指定するパラメタが以下のようにurlに付加されて送られています。

range=bdy&range=bnr&range=conkwd&range=hd(bdy=本文・bnr=分類語・conkwd=日経キーワード・hd=見出し、です)

rangeというパラメタで4つの条件を送っています。同じようにやってみましたが、一つしか取り出せませんでした。このようなURLからデータを取り出すことはできるのでしょうか。

お忙しいところ申し訳ありませんが、ご教示の程宜しくお願い致します。
めぐ
ベテラン
会議室デビュー日: 2004/11/09
投稿数: 86
お住まい・勤務地: 千葉県内
投稿日時: 2005-04-27 09:32
おはようございます。

引用:

まるさんの書き込み (2005-04-26 18:59) より:
日経goo<http://nikkei.goo.ne.jp>で新聞記事の検索システムが運用されていますが、



件のサイトは servlet で処理されているようですから、getParameterValues()
で値を取得してるのではないでしょうか。
http://www.atmarkit.co.jp/fjava/rensai2/jspservlet05/jspsevlet05_2.html

まるさんがやられた通り、PHPでは最後に設定された値しか取得できません。
# 私が知らないだけかもしれませんけど...
まる
会議室デビュー日: 2005/04/26
投稿数: 3
投稿日時: 2005-04-27 22:41
めぐさん、ご返答ありがとうございます。

お教えいただいたページを見てみました。servletですか...

引用:

# 私が知らないだけかもしれませんけど...



私もPHPで同様の関数は聞いたことがありませんから、今の段階では諦めるしかなさそうですね。
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-04-28 01:51
どもです。がると申します。
んっと。複数値ですが、通常であれば取得可能です。
が、PHPの場合だけ「ちょっとひねる」必要があります。

具体的には。
nameにちょっとした細工をすることで、取得が可能になります。
以下はPOSTの使用例ですが。

<INPUT type="text" name="names[]">

こーゆー風に、nameの値の最後に[]をいれると、例えば
$datas = $_POST['names'];
とやることで、複数値が取得できます。
GETでは試していないのですが、九分九厘、同様の手法で可能かと
思います。'['とか']'をURLエンコードする必要はあるかもしれませんが。

よかったら、実験してみてくださいませ。

追伸:
これはPHPの独自仕様っぽいでし。
…困ったもんでふ :-P
めぐ
ベテラン
会議室デビュー日: 2004/11/09
投稿数: 86
お住まい・勤務地: 千葉県内
投稿日時: 2005-04-28 09:45
おはようございます。

がるがるさんの書かれたように配列として渡す方法がありますね。

test.php
コード:
<html>
<body>
<form method="GET" action="test2.php">
<input name="range[]" type="checkbox" value="hd" checked>見出し
<input name="range[]" type="checkbox" value="hdy" checked>本文
<input type="submit" value="go">
</form>
</body>
</html>



test2.php
コード:
<html>
<body>
<?
  print_r($_GET);  // 渡されたパラメータの全表示
  echo "<br>";
  $arrRange = $_GET['range']; // 一度配列に入れないと
  echo "range[0]:".$arrRange[0]."<br>";
  echo "range[1]:".$arrRange[1]."<br>";
?>
</body>
</html>



URLのエンコードも必要ないですね。
POSTの場合は、$_GETを$_POSTに変えるだけです。
まる
会議室デビュー日: 2005/04/26
投稿数: 3
投稿日時: 2005-05-15 02:05
皆様、ありがとうございました。
実験してみましたが、たしかにちゃんと取得できています。
1

スキルアップ/キャリアアップ(JOB@IT)