🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

PHP

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

HTML

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

Q&A

解決済

2回答

1653閲覧

urlパラメーターを2つ同時に送信したい

Eumenes0510

総合スコア11

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

PHP

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

HTML

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

0グッド

0クリップ

投稿2019/10/26 20:34

前提・実現したいこと

index.phpの後にurlパラメーターとして、page_id(実装済み)とs_number2=<?php echo $numbers->getNumber()?>の両方を同時に送信できるようにしたい。


発生している問題

コードをコピペしたので、ドッド[.]、バックスラッシュ[]などがなぜあるのかわからず、[&]で同時に送信しようとしてもできないため苦戦しています。
出来れば、ドットやバックスラッシュが何を意味しているのかを教えて貰えるととてもありがたいです。


該当のソースコード

使用言語:php

ソースコード
else {
?><a href="#"><div class="pages"><?php echo '<a href=\'/saikano0827.php/index.php?page_id='. $i. '\')>'. $i. '</a>'. ' ';?>

補足情報(FW/ツールのバージョンなど)
PHP7.3.2を使っています。

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

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

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

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

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

m.ts10806

2019/10/27 04:47

コードはマークダウンのcode機能にて、なるべく他者がコピペで再現できる内容で提示してください。質問者判断で切り出しすぎると実際の問題を再現できず的確なアドバイスになりません
guest

回答2

0

ベストアンサー

提示いただいたコードだと、最終的に出力したい文字列は↓のようなものですよね?

html

1<a href='/saikano0827.php/index.php?page_id=1'>1</a>

この文字列をそのままechoで出力してみます。

php

1echo '<a href='/saikano0827.php/index.php?page_id=1'>1</a>';

これは正しく出力されません。(エラーになります)

出力したい文字列の中に'が含まれており、それが文字列を表すのか、echoの終了を表すのかが判別できないからです。

そのため、'のような特別な意味を持った記号を出力するためには「エスケープ」という処理が必要になります。

エスケープは特別な意味を持つ記号の直前にバックスラッシュを入れて行います。

php

1echo '<a href=\'/saikano0827.php/index.php?page_id=1\'>1</a>';

このバックスラッシュを「エスケープシーケンス」と呼びます。


ドットは文字列をつなげるために使います。

php

1echo 'test'.'abc'; // testabc と出力される 2 3$index = 1; 4echo 'test'.$index; // test1 と出力される

エスケープシーケンスとドットを踏まえて提示されたコードを見ると、意味が分かると思います。
()は不要だと思いますが)

php

1echo '<a href=\'/saikano0827.php/index.php?page_id='. $i. '\')>'. $i. '</a>'. ' ';

&でつなげるなら↓のような感じでしょうか。

php

1echo '<a href=\'/saikano0827.php/index.php?page_id='. $i. '&s_number2='. $numbers->getNumber() .'\'>'. $i. '</a>';

\'の代わりに"を使用すればもう少しシンプルになります。

'"は区別され、'内で"はエスケープ不要だからです。

というか、HTMLの属性は通常は"で囲みますのでこちらの方が使うことが多いです。

php

1 2echo 'test"1"test'; // test"1"test と出力される = 「"」はエスケープ不要 3 4<?php echo '<a href="/saikano0827.php/index.php?page_id='. $i. '&s_number2='. $numbers->getNumber() .'">'. $i. '</a>';?>

どちらも基礎部分ですので、まずは↓のようなサイトでPHPの基本構文を学習された方がいいかと思います。
お節介でしたらすみません。

ドットインストール : PHP入門

Progate : PHP


追記

PHP公式のドキュメントにPHPマニュアルがありますのでこちらも参考にしてください。

このマニュアルには主に関数リファレンス言語リファレンスがあり、正確な情報はこちらに載っています。
調べ物をする際にはまずこちらを当たると良いでしょう。

今回のドットは言語リファレンス内の文字列演算子に、エスケープシーケンスは同じく言語リファレンス内の文字列に記載があります。

文法部分の学習が終われば機能付録も読んでいくことになると思いますので、どのようなことが記載されているかぐらいは見ておいた方が良いでしょう。
(フレームワークを使用するとあまり意識しない部分かもしれませんが必須知識です)

投稿2019/10/26 21:34

編集2019/10/27 07:59
m.kagawa

総合スコア113

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

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

m.ts10806

2019/10/27 04:49

低評価はしていませんが、オンライン学習サイトをすすめるのは悪手かと思います。そこでできてない初心者が路頭に迷ってteratailにたどり着いている現実もありますし、PHPマニュアルというものがきちんとあるからです。
m.kagawa

2019/10/27 06:28 編集

私はそうは思いません。 > 悪手 PHPマニュアルは確かにきちんとしたマニュアルですが、ドットを解説しているページへ初学者が簡単に辿り着けるでしょうか。 リファレンスとしては優秀ですが、初学者のような分からないことが分からない状態だと利用しにくいのです。 質問者さんに必要なのは、基礎知識に関する体系的な、浅くても網羅的な解説だと判断し、学習サイトを勧めました。 学習サイトのカリキュラムの中でPHPマニュアルの紹介もされていますよ。
m.ts10806

2019/10/27 06:34

いえですから、 今回普通にPHPマニュアルの当該ページへのリンクを提示すれば良いだけという意味です。 公式のものを「優秀」程度で済まされるのが私にはわかりませんが、「辞書がわりに使える」という紹介の仕方をするとか、検索の仕方を教えるとかでも十分ではないかなと。 むしろ、最初のうちからPHPマニュアルの使い方を覚えておくことはメリットしかないと思います。 オンライン学習サイトを利用したことがあるわけではないですが、teratailにオンライン学習サイト経由で来る人がPHPマニュアルを使えてる例を見たことがないので、紹介の仕方が弱いのかなと思ってます。
m.kagawa

2019/10/27 07:27

一度、体系的に知識をインプットしておいた方が、今後の学習スピードが段違いだと考えています。 「質問に対する答えを提示する」という部分からは外れてしまうかもしれませんが、問題に当たった時に質問するにしても自分で調べるにしても理解度が全然違いますよね。 PHPマニュアルでもインプット出来ますが、分からないことが分からない初学者が独力でこなすのは不可能に近いです。 そのための学習サイトとして紹介しています。 仰るようにPHPマニュアルがマストであるのは間違いないので追記しておきますね。 ありがとうございます。
m.ts10806

2019/10/27 09:26

追記ありがとうございます。 これだけきちんと書かれていたらあとから見る人も参考になりやすいかと思います(ここまでしてくれると思ってなかったので高評価しました。)
m.kagawa

2019/10/27 09:52

いえ、こちらこそご指摘ありがとうございました。
Eumenes0510

2019/10/28 10:31

おかげで解決できました!ありがとうございます! お二人の意見も今後学習していく上で参考にさせていただきます!
guest

0

参考までに。
プログラミング的な書き方だと m.kagawaさんのようになりますが
テンプレート的な書き方だとこんなかんじ

php

1<a href="/saikano0827.php/index.php?page_id=<?php echo $i ?>&s_number2=<?php echo $numbers->getNumber() ?>"><?php echo $i ?></a>

投稿2019/10/26 23:07

takasima20

総合スコア7460

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

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

Eumenes0510

2019/10/28 10:29

わかりやすくまとめていただきありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問