- PR -

【PHP】 変数の受け渡しについて!

1
投稿者投稿内容
アイオリア
会議室デビュー日: 2008/04/17
投稿数: 6
投稿日時: 2008-05-31 03:34

abc.php のファイルで、掲示板の一覧を表示し、ソートボタンが押されたらソートの順に一覧を表示させる仕組みにしています。

◆ abc.php のファイル

// プルダウン検索の部分
function puru($AAA){
…省略
return $date;
}

// ページボタンの部分
function page1(){       // A
…省略
<TR><TD><A href="abc.php?page='.$a.'&ddd=$i-10">前の10件</A></TD></TR>
…省略
<TR><TD><A href="abc.php?page='.$b.'&ddd=$i">次の10件</TD></TR>
…省略
}

// 一覧表示の部分
function list(){
$log = file_read("log.php");
$su=10;
$iu=1;
if($_POST[bbb] ){$qaz=1;} // ソートボタンが押されたらの処理
for($i = $iu; $i < sizeof($log); $i++){      // @
…省略

if($qaz==1){ // なら一覧をソート順に表示
…省略
}


// メインヘッダーの部分(ソートするプルダウン)
<SELECT size=1 name="bbb">'.puru($AAA).'</SELECT>
<INPUT type="submit" value="ソート" name="ccc">

ここまではやってみましたが、一覧表示の部分の @ のところの $i の変数の値を処理後、ページボタンの部分の A
のところの $i に値を代入したいのですが、どうしたら良いのでしょうか?分らないので教えて下さい?宜しくお願い致します。

イメージ的には、一覧表示の部分の @ のところの $i の変数の値を処理後、ページボタンの部分の A のところの $i に値を
代入したいのです。

冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2008-05-31 09:06
疑問点が分からない。

function puru($AAA)で、引数を使っているので引数の使い方が分からない、という事ではなさそうだし、
$i++なんて変数のインクリメントを使用している所を見ると、計算して変数の値を変更する、という事も分かっていそうだし。

結局のところ、「一体、何をする処理が分からない」という事なのでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-05-31 11:18
$i のスコープを意識できていないだけかな。 list() で下準備 page1() で HTML の吐き出しと見受けました。 ところで、変数名、メソッド名ともにきちんと名前つけてあげましょうね。 ただのサンプル コードにしても安易すぎます。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
アイオリア
会議室デビュー日: 2008/04/17
投稿数: 6
投稿日時: 2008-05-31 19:43
冬寂さん、じゃんぬねっとさん早々のご回答有り難う御座います。

分りにくい質問内容のようだったので少し訂正します。すみません。
【訂正】
// ページボタンの部分
function page1($a,$b,$i){       // (2)
…省略
<TR><TD><A href="abc.php?page='.$a.'&ddd='.$i-10.'">前の10件</A></TD></TR>
…省略
<TR><TD><A href="abc.php?page='.$b.'&ddd='.$i.'">次の10件</TD></TR>
…省略
}

(1)の $i の値を処理後この関数の(2)の$iに値を渡したいのですが、どのようにしたら、(1)の $i の値を処理後(2)の$iに値を渡しす事が出来るのかが分らないのです。(汗)

これだけの仕組みのコードだとA のところの $i の変数に値を渡すことができていません。(汗)
ようは下の関数コードで使用した $i の値を、上の関数コードの $i の値に渡したいと言う事です。

うまく私の旨伝たえる事ができなくてすみません。(汗)
hidemaru
常連さん
会議室デビュー日: 2004/03/22
投稿数: 44
投稿日時: 2008-06-01 13:23
それならば、$i をグローバル変数にしてはいかがですか?

abc.php で $i = 0; とかで宣言しておいて、
function list で
global $i; の宣言をして、$i を使う。
同様に、
function page1 で
global $i; の宣言をして、$i を使う。
こうすれば、同じ $i を参照することになります。
Haya
常連さん
会議室デビュー日: 2003/03/28
投稿数: 22
お住まい・勤務地: 関東
投稿日時: 2008-06-03 12:08
ちょっと省略されすぎてて、何がどうなっているのは定かではないのですが、
何かエラーが出ているのでしょうか?
最終的に出力されているHTMLが期待通りではないということですか?

とりあえず、「自分ではこのように出力されると思っているのに、実際にはこのようになった」
といった感じで整理できれば、より的確にアドバイスできるのではないかと思います。

何となくこんな感じのことしたいのかなレベルでサンプル作ってみました。

一応、下記のコードなら動くようですが……。
# 一部出力は整形してます

コード:
<?php
 function page1($a,$b,$i)
 {
   echo '<TR><TD><A href="abc.php?page=' . $a . '&ddd=' . ($i-10) . '">前の10件</A></TD></TR>';
   echo '<TR><TD><A href="abc.php?page=' . $a . '&ddd=' . $i    . '">次の10件</A></TD></TR>';
 }

 for( $i = 1;$i < 10;$i++)
 {
   echo "current:" . $i;
 }
 echo "end of process:" . $i;
 page1( 'dummy_a','dummy_b',$i );
?>



下記はその実行結果です。
コレを見るとちゃんと渡されているように見えますが、そういうことではないのでしょうか。

コード:
current:1
current:2
current:3
current:4
current:5
current:6
current:7
current:8
current:9
end of process:10
<TR><TD><A href="abc.php?page=dummy_a&ddd=0">前の10件</A></TD></TR>
<TR><TD><A href="abc.php?page=dummy_a&ddd=10">次の10件</A></TD></TR>


アイオリア
会議室デビュー日: 2008/04/17
投稿数: 6
投稿日時: 2008-06-03 22:26
hidemaruさん、Hayaさん、ご回答有り難う御座います。

私の質問内容が分りにくくて、うまい事皆さんに質問の旨を伝える事が出来てなくて、本当にすみませんでした。

ですが、今回、私の質問に対して的を得ていたご回答がありました。

hidemaruさんのご回答により解決する事が出来ました。
「 global 」について調べ、「 global 」使って宣言すれば、変数を他の関数内でも使用できるようになると言う事を知る事が出来ました。

お恥ずかしながら私はPHP初心者でして「グローバル」の事を知りませんでした。(汗)
便利ですねこれは!

と言う事で、今回、沢山のご回答を下さり本当に有り難う御座いました。
非常に皆さんのご回答は各参考になりました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-06-05 12:55
引用:

アイオリアさんの書き込み (2008-06-03 22:26) より:

私の質問内容が分りにくくて、うまい事皆さんに質問の旨を伝える事が出来てなくて、本当にすみませんでした。
ですが、今回、私の質問に対して的を得ていたご回答がありました。


どなたもそれなりに的を射ていると思いますけどね。(的は '得る' ものではなく '射る' ものですよ)

引用:

「 global 」について調べ、「 global 」使って宣言すれば、変数を他の関数内でも使用できるようになると言う事を知る事が出来ました。


詭弁ですが私が "スコープ" と書いたのはこれと大いに関係します。 スコープというのは、参照できる場所の範囲という意味で考えて頂ければと思います。 最近はどの言語でもこのスコープという概念がありますので覚えておくと良いです。

引用:

お恥ずかしながら私はPHP初心者でして「グローバル」の事を知りませんでした。(汗)
便利ですねこれは!


便利かもしれませんが、あまり頼らない方が (つまり、スコープは小さくした方が) 可読性に優れます。 初心者だからご存知なかったと仰っておりますが、経験則的には初心者だからこそグローバルに頼るような実装になりがちなのでご注意ください。

# PHP なら使ったとしても public な静的変数かな。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)