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

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

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

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

JavaScript

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

Q&A

解決済

2回答

1848閲覧

valueに3以外の変数が入らない

hideki0227

総合スコア19

PHP

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

JavaScript

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

0グッド

0クリップ

投稿2016/07/06 16:34

編集2016/07/06 16:40

formで<input type="hidden" name="jump" value="' . $page . '">としているのですが、$pageの値がjumpに入ったり入らなかったりします。
わけわからない説明ですみません。

以下の構成になっているとします。

max.php = おはなしの最新話のナンバーを定義(ここでは4)
index.php = 最新話を表示して「前」「次」のリンクを表示
1.html = 1のおはなし
2.html = 2のおはなし
3.html = 3のおはなし
4.html = 4のおはなし

max.phpの内容:

php

1<?php 2 3$max = 4; 4 5?>

index.phpの内容:

php

1<?php 2include_once('max.php'); 3if (isset ($_GET['jump']) === TRUE) { 4 $page = htmlspecialchars($_GET['jump'], ENT_QUOTES, 'UTF-8'); 5 $current = $page; 6} else { 7 $page = ''; 8 $current = $max; 9} 10?> 11<!doctype html> 12<html> 13<head> 14<meta charset="utf-8"> 15<title></title> 16</head> 17<body> 18<?php 19$file = file_get_contents($current . '.html'); 20print ($file); 21?> 22<table border="0" align="center" width="1000"> 23 <tr> 24 <td width="250"></td> 25 <?php 26 if ($current === 1) { 27 ?> 28 <td width="100"></td> 29 <?php 30 } else { 31 $page = $current - 1; 32 ?> 33 <td> 34 <form name="back_and_next" method="GET" action="index.php" target="_top"> 35 <input type="hidden" name="jump" value="' . $page . '"> 36 <a href="javascript:back_and_next.submit()"><img src="images/back.png"></a> 37 </form> 38 </td> 39 <?php 40 } 41 ?> 42 <td width="300"></td> 43 <?php 44 if ($current === $max) { 45 ?> 46 <td width="100"></td> 47 <?php 48 } else { 49 $page = $current + 1; 50 ?> 51 <td> 52 <form name="back_and_next" method="GET" action="index.php" target="_top"> 53 <input type="hidden" name="jump" value="' . $page . '"> 54 <a href="javascript:back_and_next.submit()"><img src="images/next.png"></a> 55 </form> 56 </td> 57 <?php 58 } 59 ?> 60 <td width="250"></td> 61 </tr> 62</table> 63</body> 64</html>

4.htmlの内容(1~3も同様):

html

1<!doctype html> 2<html> 3<head> 4<meta charset="utf-8"> 5<title></title> 6<link rel="stylesheet" type="text/css" href="style.css" /> 7</head> 8<body> 94 10</body> 11</html>

index.phpを表示すると、4.htmlの内容の下に「前」のリンクが表示されます
(「次」はif ($current === $max)のため表示されません)。
「前」をクリックすると正常に3.htmlの内容の下に「前」「次」の2つのリンクが表示されるのですが、いずれもなぜかvalueに「3」が入っており、クリックしてindex.phpに飛んでもおはなしの内容が3.htmlのまま変わりません。
$currentが「3」の時はvalueに「2」と「4」が、
$currentが「2」の時はvalueに「1」と「3」がというように順番に変わる様に値を入れたいのですが、なぜか「3」のままです。
どうすればよいでしょうか。

すごく基本的な部分でミスをしているかもしれません。
どなたかご教示願えれば幸いです。

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

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

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

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

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

guest

回答2

0

この行が<?php~?>の外で行われているからでは。

PHP

1<input type="hidden" name="jump" value="' . $page . '">

こう書きべきでは。

PHP

1<input type="hidden" name="jump" value="<?=$page?>">

あと気になった点として、1~4.htmlの中身を丸ごと出力しているようなので、htmlタグとかは不要では。
body内だけで良いと思います。

投稿2016/07/07 01:50

ttyp03

総合スコア16996

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

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

hideki0227

2016/07/07 02:21

ありがとうございます。 確かにおっしゃる通りですね。そうしました。
guest

0

ベストアンサー

必要なところだけ書きました。
GET で渡すことが前提なら、form要素 じゃなくて a要素で十分。わざわざ小難しいことをしている印象受けます。

php

1<table border="0" align="center" width="1000"> 2 <tr> 3 <td width="250"></td> 4 <?php if ($current === 1) : ?> 5 <td width="100"></td> 6 <?php else: ?> 7 <?php $page = $current - 1; ?> 8 <td> 9 <form name="back_and_next" method="GET" action="index.php" target="_top"> 10 <input type="hidden" name="jump" value="' . $page . '"> 11 <a href="javascript:back_and_next.submit()"><img src="images/back.png"></a> 12 </form> 13 </td> 14 <?php endif; ?> 15 <td width="300"></td> 16 <?php if ($current === $max): ?> 17 18 <td width="100"></td> 19 20 <?php else: ?> 21 22 <?php $page = $current + 1; ?> 23 <td> 24 <form name="back_and_next" method="GET" action="index.php" target="_top"> 25 <input type="hidden" name="jump" value="<?php echo $page ?>"> 26 <a href="javascript:back_and_next.submit()"><img src="images/next.png"></a> 27 </form> 28 </td> 29 30 <?php endif; ?> 31 32 <td width="250"></td> 33 </tr> 34</table>

投稿2016/07/06 16:45

編集2016/07/06 17:16
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

hideki0227

2016/07/06 23:42

ありがとうございます。が、 formを使わずにaだけでGETで渡す方法がわかりません。わざわざというより、これしか思いつかないのです。 <talbe>から</talbe>までをごっそりコピペして、なおかつ2か所ともに「value="' . $page . '"」を「value="<?php echo $page ?>"」に変えましたが、動作は変わりませんでした。 恐れ入りますが、さらに詳しく伺ってもいいでしょうか? ・なぜvalueに$pageの値が正しく入らないのでしょうか? ・どこかに間違いや誤解がありますでしょうか? ・formを使わずにaだけでGETで渡すとはどういうことでしょうか?
moonphase

2016/07/06 23:56

1ページ目の場合 <a href="index.php?jump=2">次</a> 2ページ目の場合 <a href="index.php?jump=1">前</a> <a href="index.php?jump=3">次</a> 3ページ目の場合 <a href="index.php?jump=2">前</a> <a href="index.php?jump=4">次</a> 4ページ目の場合 <a href="index.php?jump=3">前</a>
hideki0227

2016/07/07 02:23

あー、なるほど。そういう書き方があるんですねえ。 そうしたところ(あと、$currentの比較を全て===から==に変えたところ)、 全て上手く行きました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問