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

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

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

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

Q&A

解決済

5回答

2627閲覧

引数に複数の値を渡す

uverworld101nm

総合スコア172

PHP

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

0グッド

0クリップ

投稿2016/08/10 08:11

編集2016/08/10 09:15

isset関数は引数に複数の値を渡すことができるので使いたいのです。下記のコードを参考に

php

1if (isset($_GET["a"], $_GET["b"], $_GET["c"])) { 2 // 処理 3}

僕のコードに挿入しましたが反応しません。
僕のコードにはisset文が使えないのですか?
ちなみにこちらのコードもチャレンジしてみましたが、できませんでした。

PHP

1if (isset($_GET["a"]) && isset($_GET["b"]) && 2isset($_GET["c"])) { 3 // 処理 4}

※下記が僕のコードです。

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} 16

html

1<html> 2<head> 3<title>API_SAMPLE</title> 4</head> 5<body> 6<form action="" method="GET"> 7<input type="text" name="keyword"> 8<input type="submit"> 9</form> 10</body> 11</html> 12<html> 13<head> 14<title>API_SAMPLE</title> 15</head> 16<body> 17 <form method="GET"> 18 <select name="budget"> 19 <option value="B001">〜2000円</option> 20 <option value="B002">2001円〜3000円</option> 21 <option value="B003">3001円〜4000円</option> 22 23 </select> <input type="submit" name="search" value="検索" onFocus="this.select()"> 24 </form> 25</body> 26</html>

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

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

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

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

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

date

2016/08/10 08:54

HTML側を書いた方がいいですよ
guest

回答5

0

ベストアンサー

反応しない(ifを通らない)ということなら、$_GET['keyword']、$_GET['budget']に値がセット
されていないのではないですか。
僕のコードのif文手前に
var_dump($_GET['keyword']);
var_dump($_GET['budget']);
として、値が入っているかまずは確認してみてください。

投稿2016/08/10 08:39

Yousuck

総合スコア349

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

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

uverworld101nm

2016/08/10 08:42

やってみたところ、falseとして表示されました。
Yousuck

2016/08/10 09:05

HTML確認しました。 これだと、サブミットされた時に片方しか値がセットされませんよ。 キーワード検索と価格帯?検索を切り離すのであれば、 if (isset($_GET['keyword']) || isset($_GET['budget'])) { } 上記のようにすればどうでしょうか。
uverworld101nm

2016/08/10 09:12

今試してみたところ、できました。 ありがとうございます。 問題が解決しました。
date

2016/08/10 09:14

なんだか思うんだが本当は同時に検索するのが正しいじゃないかな 動けばいいとかいう問題ではないと思うのだが
uverworld101nm

2016/08/11 06:08

余談ですが、キーワード検索と価格帯?検索を切り離さず検索したい場合は、どういうコードを書けばいいですか?
guest

0

普通に評価されていると思いますが・・・
単純にGETで値を渡していないと理解するのが妥当かと

PHP

1<a href="?a=1">a=1</a><br> 2<a href="?a=1&amp;b=2">a=1&amp;b=2</a><br> 3<a href="?a=1&amp;b=2&amp;c=3">a=1&amp;b=2&amp;c=3</a><br> 4<a href="?a=0&amp;b=0&amp;c=0">a=0&amp;b=0&amp;c=0</a><br> 5<a href="?a=&amp;b=&amp;c=">a=&amp;b=&amp;c=</a><br> 6<?PHP 7if (isset($_GET["a"], $_GET["b"], $_GET["c"])) { 8print "ok"; 9}else{ 10print "ng"; 11}

注意すべきは、値が設定されていなくてもパラメータ名が渡っていれば
セットされていると評価されることです。

投稿2016/08/10 08:36

yambejp

総合スコア114843

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

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

uverworld101nm

2016/08/10 08:40

僕がなぜ、issetを設定したかというと最初から画面に検索結果が表示されていていたからです。 僕がしたいのは、検索してみて検索結果を表示する仕組みが作りたいです。issetを使えば、最初から検索結果が表示されないと思いissetを使いました。
yambejp

2016/08/10 08:52

つまり話が戻って$_GETで値を渡していないだけです。 $_GETで渡してないデータはissetでいくらチェックしても無駄です。 なお未検索でデフォルト値が提案されているとのことですが 別のロジックで初期値の検索がされているはずですので ソースをよく見返してみてください
guest

0

とりあえず、if文の前に var_dump($_GET); を追加して確認しましょう。
コーディングには問題なさそうに見えます。
ちなみに、「反応しません」とはどういう現象のことをいってますか?

投稿2016/08/10 08:22

takasima20

総合スコア7458

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

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

uverworld101nm

2016/08/10 08:25

反応しないとは、キーワード検索をしてもキーワード検索結果が表示されないことです。
uverworld101nm

2016/08/10 08:33

var_dumpを入力したらfalseが出ました。
takasima20

2016/08/10 08:41

では $_GETが使える状態ではないということですね。 現状のコードだけでは、いえるのはそんくらいス。
uverworld101nm

2016/08/10 08:44

ですが、issetを使わない場合ちゃんと検索結果が表示されます。
takasima20

2016/08/10 08:49

if文の中が検索結果を表示する処理だとしたらそうなるでしょうね。 ちなみに、$url はちゃんと設定されているか確認しましたか? つまり、$keyword や $budget といった変数に値はとれているか という意味です。
uverworld101nm

2016/08/10 08:55

$keyword や $budgetに値はとれています。 実際、if文なしで確認しました。
takasima20

2016/08/10 09:00

$_GET は値がとれないのに、そのへんに値がとれてるってのは 不思議な現象ですなあ。
uverworld101nm

2016/08/10 09:02

よくわからない現象です。 html文を追加しました。
takasima20

2016/08/10 09:08

htmlのつくりはともかく… form タグに action が無いですね。 これじゃ php にとばないんじゃ?
guest

0

どう見てもおかしいHTML文ですね

ボタンを押したときにアドレスバーが変わっているのでそこを見ればおかしいのに気づきます

同じHTML内に<html><head><title><body>を複数入れる発想はありませんでした

投稿2016/08/10 09:10

date

総合スコア1820

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

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

date

2016/08/10 09:13

私はこういう時は <?php var_dump($_GET)?> ですべての$_GETを出力して調査します
uverworld101nm

2016/08/10 09:17

やってみたところ、falseになりました。
guest

0

こんにちは
僕の知り合いがPHPのエラーが出たときは

echo $変数名;

を使うといいよと言ってました。
お試しください。

投稿2016/08/10 08:40

syosinsyapurogu

総合スコア64

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

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

uverworld101nm

2016/08/10 08:43

それは、echo $_GET["keyword"];ですか?
syosinsyapurogu

2016/08/10 08:57

僕だったら手あたり次第echoの中にぶち込みますね! あと、html側も編集で記載したほうがいいと思いますよー(^^)/
uverworld101nm

2016/08/10 09:00

今記載したのでみてください。
syosinsyapurogu

2016/08/10 09:11

他の優れたエンジニアの方が後は教えてくれると思います。 僕はプログラマーじゃなくて、ただのグラマーですから、、、
uverworld101nm

2016/08/10 09:15

すみません、本当にゴメンなさい。
syosinsyapurogu

2016/08/10 09:27

謝らせてしまって逆にごめんなさい。 僕はまだプログラム始めて4ヵ月でぜんぜんコードも理解できないしコピペばっかりしてるけどteratailを通して、ちゃんとしたプログラマーになれたらいいなって思います^^ だからuverworld101nmさんも一緒にがんばりましょう!今作っているもが自分の思った通りに完成できるといいですね(^^)/
uverworld101nm

2016/08/10 09:39

ありがとうございます。 僕も始めて4か月です。わからないことがいっぱいあります。 最近、少しずつ分かってきますが、やはり自分一人では何もできずteratailを使っています。 でも、僕は諦めません。困ることはこれからいっぱいあると思います。でもそこから目を背けたらプログラムだけじゃなく他のことでも目を背けることになると思います。 だから、一緒に頑張りましょう。そしてお互い、自分が作りたいサイトを作りましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問