質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

4回答

1943閲覧

引数に複数の値を渡す

uverworld101nm

総合スコア172

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/08/27 07:29

再投稿になります。
isset関数は引数に複数の値を渡すことができるので使いました。
※前回の修正後のコードです。

php

1<?php 2if (isset($_GET['keyword']|| $_GET['budget'])) { 3$key='私のキー'; 4$count='50'; 5$large_area='◯◯'; 6$start =1+($page-1)*10; 7$keyword=$_GET ["keyword"]; 8$budget=$_GET ["budget"]; 9$format='xml'; 10$url='http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key='.$key.'&count='.$count.'&large_area='.$large_area.'&start='.$start.'&keyword='.$keyword.'&budget='.$budget.'&format='.$format; 11$xml=simplexml_load_file($url); 12・・・ 13・・・ 14・・・ 15}

しかし、isset($_GET['food_category']をパラメータに追加したらエラーになりました。
isset関数の三つ目以降は、isset関数を少し改良しなくてはいけないのですか?従来のisset($_GET['food_category']だとエラーになりやすいですか?
他に考えられる原因がないので。

php

1if (isset($_GET['keyword']) || isset($_GET['budget'] || isset($_GET['food_category'] )) { 2$key='私のkey'; 3$count='50'; 4$large_area='◯◯'; 5$start =1+($page-1)*$count; 6$keyword=$_GET ["keyword"]; 7$budget=$_GET ["budget"]; 8$food_category=$_GET["food_category"]; 9$format='xml'; 10$url='http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key='.$key.'&count='.$count.'&large_area='.$large_area.'&start='.$start.'&keyword='.$keyword.'&budget='.$budget. '&food_category='.$food_category.'&format='.$format; 11$xml=simplexml_load_file($url); 12・・・ 13・・・ 14・・・ 15

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

php

1if (isset($_GET['keyword']) || isset($_GET['budget'] || isset($_GET['food_category'] ))

php

1if (isset($_GET['keyword']) && isset($_GET['budget'] && isset($_GET['food_category'] ))

php

1if (isset($_GET['keyword'], $_GET['budget'], $_GET['food_category'] ))

投稿2016/08/27 08:31

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uverworld101nm

2016/08/29 02:04

ご回答ありがとうございます。 わかりやすい説明ありがとうございます。
guest

0

ライブラリの説明をちゃんと読んでください。
http://php.net/manual/ja/function.isset.php

複数の変数をセットする場合、[||] じゃなく、[,]です。

bool isset ( mixed $var [, mixed $... ] )

「||」の意味は以下のページを参考してください。
http://qiita.com/Keech/items/54a2760ede488d127f04

投稿2016/08/27 07:45

JinwonKim

総合スコア312

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uverworld101nm

2016/08/29 02:05

ご回答ありがとうございます。 そうですね。確認してみます。
guest

0

ベストアンサー

以下2点方針がきまらないと回答がぶれますね

  • keyword,budget,food_categoryすべてが揃っていないといけないのか

一部でもあればよいのか?

  • 一部で良い場合設定されていない他の値のデフォルト値はどうするのか

ちなみに、GETで受けた値を直接urlにつなげるのはNGです
必ずエンコードしましょう

追記

仮にHTML側のフォームが

HTML

1<form method="geT"> 2keyword:<input type="text" name="keyword" value=""><br> 3budget:<input type="text" name="budget" value=""><br> 4food_category:<input type="text" name="food_category" value=""><br> 5<input type="submit" value="search"> 6</form>

だった場合、keyword,budget,food_categoryは空文字でデータが渡るので
issetのチェックでは不十分です。
以下のように、中身までチェックした上で分岐を考えてください

PHP

1$keyword=filter_input(INPUT_GET,"keyword",FILTER_DEFAULT,array("option"=>array("default"=>""))); 2$budget=filter_input(INPUT_GET,"budget",FILTER_DEFAULT,array("option"=>array("default"=>""))); 3$food_category=filter_input(INPUT_GET,"food_category",FILTER_DEFAULT,array("option"=>array("default"=>""))); 4 5if(!in_array("",[$keyword,$budget,$food_category])){ 6print "ok"; 7}else{ 8print "ng"; 9} 10

投稿2016/08/29 00:54

編集2016/08/29 05:13
yambejp

総合スコア114773

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uverworld101nm

2016/08/29 02:04

ご回答ありがとうございます。 僕の質問は、全て揃ってなくてはいけないと思っています。というより、まだ具体的に決まっていません。 話はそれますがbudgetだけとfood_categoryとsmall_areaで検索できるシステムを同じphpファイルに作ることは可能ですか? そして、GETではなくREQUESTの方が良いでしょうか?
yambejp

2016/08/29 02:08

>udgetだけとfood_categoryとsmall_areaで検索できるシステム ごめんなさい、質問の意図が汲み取れません もう少し噛み砕いて説明していただいたほうがよろしいかと REQUESTの利用は便利ですが、逆にpost,get以外の cookieやsessionも対象になるため注意してください
uverworld101nm

2016/08/29 02:35

では、REQUEST以外に何を使えばいいですか? REQUESTがオススメだと言われたので
uverworld101nm

2016/08/29 02:37

説明不足ですみません。 つまり、budgetだけの検索フォームとsmall_areaとfood_categoryの検索フォーム、二つの検索フォームを設けたいんです。
yambejp

2016/08/29 02:51

ちなみにREQUESTって$_REQUESTのことですよね? 前述したとおり、REQUESTで渡せる要素は4種類あります かりに名前が競合た場合 GET>POST>COOKIE>SESSIONの順番で優先されます GETで渡しているとわかっているなら$_GETで参照するのが原則です
uverworld101nm

2016/08/29 03:00

はい、そうです。 しかし、GETで受けた値を直接urlにつなげるのはNGで、必ずエンコードしましょうと言われたので$_REQUESTがいいのかなと思いました。
yambejp

2016/08/29 03:32

ああなるほど、それはたとえば '&keyword='.$keyword の箇所を '&keyword='.urlencode($keyword) というようなエンコードしてくださいという意味です。
uverworld101nm

2016/08/29 04:58

ありがとうございます。 そういうことですね。
uverworld101nm

2016/08/29 04:59

検索フォームはどういった形にすればいいでしょうか?
yambejp

2016/08/29 05:15

とりあえず検索フォームは追記しておきました issetしたあと空であることをチェックしてもいいですが 最初からfilter_inputすれば処理は1回ですみますし もっと複雑なバリデートも可能なので楽かもしれません
uverworld101nm

2016/08/29 05:54

丁寧に説明して頂きありがとうございます。 例えば、keywordをページングの値渡しに使いたい場合、 計算 if($page != 1 ) { print '<a href="?page='.$prev.'" '&keyword='.$_GET(keyword)>&laquo; 前へ</a>'; } で大丈夫ですか? filter_inputでのページ渡しがわからないもので
yambejp

2016/08/29 05:58

う~ん、クォーテーションの位置おかしいです print '<a href="?page='.$prev.'&keyword='.urlencode($keyword).'">&laquo; 前へ</a>'; ではないでしょうか??
uverworld101nm

2016/08/29 06:17

なるほど! urlencodeを使うんですね! 分かりました。
uverworld101nm

2016/08/29 06:19

あと、一つ伺いたいですがGETで受けた値を直接urlにつなげるのはなぜNGなんですか? GETだと、クラッシュしてしまうのでしょうか?
yambejp

2016/08/29 06:48

単純にURLのルールで使用できる文字が決まっています GETで受け取った文字の中には禁止文字が含まれる可能性がたかいので 受け取った文字はすべてエンコードする必要があります
uverworld101nm

2016/08/29 06:54

そういうことですか。 ありがとうございます。 yambejpさん、色々と教えてくれてありがとうございます。
uverworld101nm

2016/08/30 05:18

一つに最後に質問させてください。 issetは、issett($_GET(hoge))で大丈夫ですね?
uverworld101nm

2016/08/30 05:48

すみません、ngと表示されて検索結果が表示されますが、これは検索に失敗したというう意味ですか?
yambejp

2016/08/30 06:25

ngが表示されるのは$keyword,$budget,$food_categoryのいずれか (もしくは複数)が空のときです。
uverworld101nm

2016/08/30 07:34

というと、何かのエラーというわけではないんですね?
yambejp

2016/08/30 07:45

分岐をテストしているだけなのでエラーではないです
uverworld101nm

2016/08/30 07:46

ありがとうございます。 助かりました。
guest

0

カッコの数がたりてないのでは?
syntax errorがでていると思うのですが?

投稿2016/08/27 07:45

takaw

総合スコア128

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uverworld101nm

2016/08/29 02:05

ご回答ありがとうございます。 確認してみたところ、そうでした。 大変すみませんでした。僕の落ち度です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問