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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

1156閲覧

javascriptで取得した値を、整数化してPHPに代入したい

ikemon

総合スコア39

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/01/23 02:08

###前提・実現したいこと
デバイスの幅をjavascriptで取得後、PHPに代入し、デバイス幅によって条件分岐を実現したいです。

###試したこと

<?php //デバイスの幅をjavascriptで取得し、PHPに代入 $s_width = '<script type="text/javascript"> document.write(screen.width); </script>'; ?> <?php $s_width = intval($s_width); //整数化 ?> <?php if ($s_width < '768'): //スマホの場合?> スマホの処理 <?php elseif($s_width < '992'): //タブレットの場合?> タブレットの処理 <?php else: //PCの場合?> PCの処理 <?php endif; ?>

###発生している問題・エラーメッセージ

<?php $s_width = intval($s_width); //整数化 ?>

この部分ですが、返り値が「0」になってしまい整数化できません。
原因が分かる方ヒントをいただけませんでしょうか。

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

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

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

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

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

guest

回答3

0

ベストアンサー

PHPはサーバ上で動きます。JavaScriptはブラウザ上で動きます。
JavaScriptが実行されるときにはすでにPHPは実行終わっています。

投稿2017/01/23 02:12

kei344

総合スコア69364

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

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

ikemon

2017/01/23 02:19

ご回答ありがとうございます! >JavaScriptが実行されるときにはすでにPHPは実行終わっています。 →おっしゃる通りでございました。。基本的なことを忘れておりました。
guest

0

PHPが実行されるのはブラウザにHTMLが送られる前段階ですので、その時点でブラウザ上の実行環境を調べることはできません。

ブラウザの画面幅によってレイアウトを変更する手段としては CSS Media Queries がありますね。

どうしてもPHP側で処理したいのであれば、画面幅をチェックするJavaScriptを含むHTMLを前に挟んで、そこから画面幅をパラメータとして渡してPHPを呼び出すしかないと思います。

投稿2017/01/23 02:27

koyhoge

総合スコア268

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

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

ikemon

2017/01/23 03:24

ご回答ありがとうございます! >画面幅をチェックするJavaScriptを含むHTMLを前に挟んで、そこから画面幅をパラメータとして渡してPHPを呼び出すしかないと思います。 →一度試してみます!
guest

0

デバイスの幅をjavascriptで取得後、PHPに代入し、デバイス幅によって条件分岐を実現したいです。

いくつかやり方はありそうですが、多分あまり良い方法ではありません。
デバイス幅による条件分岐後の処理は PHP で実装せず、JavaScript で実現するように変更することをおすすめします。

一般的には、PHP で両方の分岐先の情報を作成し、データを吐き出した後、JavaScript で表示制限することで実現します。

投稿2017/01/23 02:16

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

ikemon

2017/01/23 02:23

ご回答ありがとうございます! JavaScriptで実現できるのですね。 デバイス幅によっての条件分岐を、JavaScriptですると処理速度が遅くなりそうですので あきらめてユーザーエージェントのデバイス種類での条件分岐をすることにします。
退会済みユーザー

退会済みユーザー

2017/01/23 03:18

> JavaScriptですると処理速度が遅くなりそうですので 検証してから判断すべきかと。 デバイスで表示すべき内容自体が変わらず、表示レイアウトを変更するといった条件分岐であれば、遅くなることはありません。 また、仮に遅くなるにしても、サーバからのレスポンスは返せているので、表示を工夫することで、ユーザビリティを損なわない形で決着することも可能です。 UA で判別することを否定するものではありませんが、判断根拠がおかしかったのでコメントしておきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問