aタグの中にPHPを入れるとなぜか正常に動作しない...


<a href="http://xxx/xxx/?page=<?php print($page + 1); ?>">次のページへ</a>
次のページに遷移するような仕組みが作りたかったので、このように書いたのですが
上手く動作しません。
何か間違っているのでしょうか?
ちなみに$pageには現在のページの数字が入っています。
そして+1することで次のページに遷移するように書いたつもりなのですが...

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/06/22 09:55:03

回答2件)

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149

その部分だけを見れば間違いではないかもしれませんが、
例えば、下記みたいにして、式ではなく文字として代入してたりすると思い通りにはなりません。

<?php
$page = '123';
$hoge = '<a href="http://xxx/xxx/?page=<?php print($page + 1); ?>">次のページへ</a>';
print $hoge;

例えば、下記みたいにして、以下同文

<?php
print<<<EOT
<a href="http://xxx/xxx/?page=<?php print($page + 1); ?>">次のページへ</a>
EOT;

例えば・・・例えば・・・ほかにもいろいろ考えられますが、
書き間違いによる文法エラーを除けば、
エラーの原因は、エラー発生箇所以外にある場合がほとんどです。

そのため、問題解決するためには、下記のような情報が必須です。
・具体的にどのような状態になっているかを説明した図や文章
・本当はどのような状態にしたいのかを説明した図や文章
・エラーが発生するコード全部
 (自己判断で部分的に見当がつくくらいなら質問する必要はまずもって無い)
・エラーメッセージが出ている場合はエラーメッセージと発生箇所

これからも多数の質問をすることでしょうから、覚えておいてください。


さて、本題に戻って、ここからは過去の質問から想像して書きますが、
多分下記のようにすれば良いでしょう。

<?php
$page = '123';
$hoge = '<a href="http://xxx/xxx/?page=' . ($page + 1) . '">次のページへ</a>';
print $hoge;

phpの学習を進める前に、
演算子には優先順位があるということをまずは理解してください。
http://php.net/manual/ja/language.operators.precedence.php

id:papa-tomo No.2

回答回数362ベストアンサー獲得回数107

もしそのままブラウザに送信されているなら、これをチェック

  • ドキュメントの拡張子がhtml(phpとかcgiになっていない)
  • CGIとして動作していない
  • 1行目に「#! /usr/local/bin/php」というような記述が無い
他4件のコメントを見る
id:papa-tomo

今、コメントを見ました。

それであれば、ご質問のページ部分には問題ないと思います。問題は、インデックスページのCGI(PHP?)かブラウザのキャッシュの問題だと思います。

キャッシュの問題:
http://tech.bayashi.net/pdmemo/browsercache.html

2012/06/15 11:33:25
id:papa-tomo

もしキャッシュの問題であれば、そもそもWebサーバーにはリクエストが届いていないので、Webサーバーのアクセスログを調べて、ちゃんとリクエストがきているかどうかチェックした方が良いと思います。

2012/06/15 11:35:49
  • id:tdoi
    正常に動作しないというのは、どういう症状が起きてるのでしょうか?
    そのページ自体が表示されなくなるのか、期待した結果にならないだけなのか。
    どちらでしょう?
  • id:taishi5410
    すいません、説明不足でした。
    期待した結果にならないだけです!
  • id:windofjuly
    うぃんど 2012/06/15 10:50:30
    >期待した結果にならないだけです!

    http://xxx/xxx/?page=123 のようにならないというのは伝わっている。
    だがしかし、実際にはどのようになってるのかがまってく伝わってこない。

    「プリンを作ってるのだけど、期待した結果にならない」と言われたら、
    「どうやって作ったんだ?」
    「期待したより味がまずいのか?形がまずいのか?色か?匂いか?・・・・」などと聞き返さないかな?

    どうやって・・・プログラムならコードを示せってこと。
    味がまずいのか?・・・状況を詳しく説明しろってこと。
  • id:papa-tomo
    あー確かに、もう少し具体的に書くべきですね。

    http://xxx/xxx/?page=123 となるはずが http://xxx/xxx/?page=122 となってしまうとか。
    http://xxx/xxx/?page=123 となるはずが http://xxx/xxx/?page= と抜け落ちたようになってしまうとか。
    ソースを見るとそのまま表示されているとか・・・
  • id:taishi5410
    すいません!もっと具体的に書きます。
    http://xxx/xxx/?page=2になればなと思って書いて
    しっかりリンク先がhttp://xxx/xxx/?page=2になりました。(ソースで確認しました)

    ただ、リンク先にとばないのです。
    クリックしても
    http://xxx/xxx/にとぶだけなんです。
  • id:taishi5410
    すいません!もっと具体的に書きます。
    リンク先が http://xxx/xxx/?page=2になればなと思って
    <a href="http://xxx/xxx/?page=<?php print($page + 1); ?>">次のページへ</a>
    と書いたところ
    しっかりリンク先がhttp://xxx/xxx/?page=2になりました。(ソースで確認しました)

    ただ、リンク先にとばないのです。
    クリックしても
    http://xxx/xxx/にとぶだけなんです。
  • id:windofjuly
    うぃんど 2012/06/15 11:42:24
    >しっかりリンク先がhttp://xxx/xxx/?page=2になりました。(ソースで確認しました)

    それを先に言って欲しかったが、まだ不明点がある。

    http://xxx/xxx/?page=2 をアドレス欄に直接入れて動くのかな?
    http://xxx/xxx/index.php?page=2 などと書く必要があるのではないかな?
  • id:taishi5410
    >http://xxx/xxx/?page=2 をアドレス欄に直接入れて動くのかな?

    今、確認したところ動きます!
  • id:tdoi
    index.phpでリダイレクトしているか、JavaScriptで制御されているかくらいですかねぇ。
    まずは、動きを確認するとよいと思うので、FireFoxのLive HTTP Headersとかのプラグイン使ってみたら?と提案だけしておきます。
  • id:papa-tomo
    するとクリックした時のアドレス欄は、http://xxx/xxx/?page=2 にならないと言う事ですか?
  • id:papa-tomo
    このケースでは、index.phpでリダイレクトしている可能性は無いと思います。他を探るべきだと思いますが、最初にするべき事は、Webサーバのアクセスログをチェックして、リンクをクリックした時刻に、アクセスの記録があるかどうかを調べる事だと思います。もし無ければ、キャッシュ対策を考えなくてはならないと思います。
  • id:taishi5410
    関係あるのかないのかわからないのですが、
    実はこれfacebookのアプリで、この質問のソースコードはサーバーのindex.phpにアップしているんです。なにかindex.phpでリダイレクトするという問題と関係ありますかね?
  • id:taishi5410
    パパトモさん
    クリックしたときに反応はするのですが、アドレス欄に変化はないです。
    わかりました!アクセスログを調べてみます!

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません