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

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

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

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

Q&A

解決済

4回答

1733閲覧

$_GET[]で受け取った値を表示できない

boron

総合スコア11

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

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

0グッド

0クリップ

投稿2020/12/05 02:22

URLの値を$_GETで受け取ってテキストボックスの中に表示させたいのですが上手くいきません。
イメージ説明
GETで受け取った値を変数に代入して、その変数をテキストボックスのvalueの中に書けば表示できると考えたのですができないので教えていただけないでしょうか。

php

1<?php 2 session_start(); 3 require('dbconnect.php'); 4 require("nav_user.php"); 5 6 if(isset($_GET['y']) and isset($_GET['m']) and isset($_GET['d']) and isset($_GET['w']) and isset($_GET['t1']) and isset($_GET['t2']) and isset($_GET['qm'])) { 7 $y = $_GET['y']; 8 $m = $_GET['m']; 9 $d = $_GET['d']; 10 $w = $_GET['w']; 11 $t1 = $_GET['t1']; 12 $t2 = $_GET['t2']; 13 $qm = $_GET['qm']; 14 } 15// echo $qm; 16// exit; 17 18 ?> 19 20 <!DOCTYPE html> 21 22<html> 23<head> 24<meta charset="UTF-8"> 25 26<meta http-equiv="X-UA-Compatible" content="IE=edge"> 27<meta name="viewport" content="width=device-width, initial-scale=1"> 28<title>追加・削除</title> 29 30<style type="text/css"> 31 32</style> 33</head> 34 35<body> 36 37 <h2>追加・削除</h2> 38 39 40 41 <h3>追加</h3> 42 <form action="" method="post" enctype="multipart/form-data"> 43 <button type=“button” onclick="location.href='reservation-apply2.php'">戻る</button> 44 45 <!-- <input type="submit" value="仮予約" /> --> 46 <p>使用日<input type="text" name="year" size="2" value="<?php echo $y ;?>">47 <input type="text" name="month" size="1" value="<?php echo $m ;?>">48 <input type="text" name="day" size="1" value="<?php echo $d ;?>">49 <input type="text" name="week" size="4" value="<?php echo $w.'曜日' ;?>"> 50 </p> 51 <p>行事名<input type="text" name="g_name" size="20" value="<?php echo $qm ;?>"></p> 52 <p>使用時間</p> 53 <select name="time1"> 54 <?php for($t1;$t1<$t2;$t1++){ 55 print('<option value="' .$t1. '">' .$t1. ' 時</option> '); 56 } 57 ?> 58</select>~ 59 60<select name="time2"> 61 <?php for($t2;$t3<$t2;$t2--){ 62 print('<option value="' .$t2. '">' .$t2. ' 時</option>'); 63 } 64 65 ?> 66</select> 67 <table class="table table-striped table-bordered" > 68 <tr> 69 <?php if($w=='土' || $w=='日') :?> 70 <td>土日予約セット</td> 71 </tr> 72 <tr> 73 <td> 74 <a href="#" class="btn btn-primary" role="button"><?php 75 $e = $d +1; 76 echo "{$d}日(土){$e}日(日)" ;?></a> 77 </td> 78 <?php endif; ?> 79 </tr> 80 <tr> 81 <td>毎週予約セット</td> 82 </tr> 83 <tr> 84 <td> 85 <ul> 86 <li> 87 土曜日 88 <a href="#" class="btn btn-primary" role="button">4日(土)11日(土)18日(土)25日(土)</a> 89 </li> 90 </td> 91 </tr> 92 </form> 93 94</table> 95 96</body> 97</html> 98

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

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

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

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

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

guest

回答4

0

ベストアンサー

hiok さんの回答と同様ですが、 if 文で評価しているパラメータが全て and で評価されているため、想定されているパラメータすべてがGETパラメータとして渡されないと GET の値を取得している処理が実行されないためと思います。

なお直接的には関係ないですが、今時点でPHPを学び始めているようであれば $_GET から直接値を取得するのではなく、 filter_input() 関数を利用して取得するようにした方がいいです。
※ $_GET 、 $_POST などの変数をそのまま利用することは推奨できません。

本来はパラメータに対してフィルターを通すための関数ですが、

PHP

1if(isset($_GET['y'])) 2{ 3 $y = $_GET['y']); 4} else { 5 $y = null; 6}

もしくは三項演算子を利用した

PHP

1$y = (isset($_GET['y'])) ? $_GET['y'] : null;

PHP

1$y = filter_input( INPUT_GET, 'y' );

が同義になります。

そのため

PHP

1 if(isset($_GET['y']) and isset($_GET['m']) and isset($_GET['d']) and isset($_GET['w']) and isset($_GET['t1']) and isset($_GET['t2']) and isset($_GET['qm'])) { 2 $y = $_GET['y']; 3 $m = $_GET['m']; 4 $d = $_GET['d']; 5 $w = $_GET['w']; 6 $t1 = $_GET['t1']; 7 $t2 = $_GET['t2']; 8 $qm = $_GET['qm']; 9 }

PHP

1 2$y = filter_input( INPUT_GET, 'y' ); 3$m = filter_input( INPUT_GET, 'm' ); 4$d = filter_input( INPUT_GET, 'd' ); 5$w = filter_input( INPUT_GET, 'w' ); 6$t1 = filter_input( INPUT_GET, 't1' ); 7$t2 = filter_input( INPUT_GET, 't2' ); 8$qm = filter_input( INPUT_GET, 'qm' ); 9

に置き換えられます。

投稿2020/12/05 06:46

kaz.Suenaga

総合スコア2037

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

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

boron

2020/12/06 17:49

返信ありがとうございます。 別のプログラムでif文のパラメータをandで評価してもうまく動いたこともあり、間違っていることに気づきませんでした。ご指摘ありがとうございました。 また、+αに別の書き方についての言及もしていただきありがとうございます。
guest

0

ifの条件式が全てandになっているのが原因では?

投稿2020/12/05 06:17

hiok

総合スコア595

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

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

boron

2020/12/06 17:50

返信ありがとうございます。 andが原因でした。
guest

0

GETで受け取った値を変数に代入して、その変数をテキストボックスのvalueの中に書けば表示できると考えた

では GET で投げるようにしてください。
スクリプトの頭でvar_dump($_GET);でもしてやれば、GET で投稿されてないことに気が付けると思います。

*ただ GET で投げても、色々修正しなければならない箇所はありそうですけど。。。

投稿2020/12/05 06:34

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

kaz.Suenaga

2020/12/05 06:35

画像のURLを見ると、このフォームでPOSTしたものを表示したいということではなく、URLのGETパラメータで指定した値をデフォルトで入れたいということのようですよ。
退会済みユーザー

退会済みユーザー

2020/12/05 06:41

m等が抜けているはずです。 ``` $_GET['y'] = "2020"; $_GET['m'] = "12"; $_GET['d'] = "05"; $_GET['w'] = "土"; $_GET['t1'] = "12"; $_GET['t2'] = "13"; $_GET['qm'] = "hoge"; ``` とか頭に入れると、それなりに表示されます。
退会済みユーザー

退会済みユーザー

2020/12/05 06:43

まぁ、まずはエラーを表示させるところからですかねぇ。
kaz.Suenaga

2020/12/05 06:48

今PHPの初学なのであれば $_GET を直接扱うよりも filter_input を使うことを覚えたほうがいいとは思います。
退会済みユーザー

退会済みユーザー

2020/12/05 06:53

それはそうですね。 表示がどう変わるのか確かめたかったんで横着しましたw
guest

0

$_GETの代わりに、$_REQUESTを使ってみたら、うまくいくかもしれませんよ。

$_REQUESTの詳細はこちら

投稿2020/12/05 04:45

gpsoft

総合スコア1323

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

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

boron

2020/12/06 17:51

返信ありがとうございます。 if(isset($_REQUEST['y']) and isset($_REQUEST['m']) and isset($_REQUEST['d']) and isset($_REQUEST['w']) and isset($_REQUEST['t1']) and isset($_REQUEST['t2']) and isset($_REQUEST['qm'])) { $y = $_REQUEST['y']; $m = $_REQUEST['m']; $d = $_REQUEST['d']; $w = $_REQUEST['w']; $t1 = $_REQUEST['t1']; $t2 = $_REQUEST['t2']; $qm = $_REQUEST['qm']; } のように$_REQUESTを使いましたが結果は変わりませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問