限定しりとり

$colの結果は5件です。
次のfor文を流すと、cnt=1の場合の
$SyaNo . $cnt = $col2['SyaName'];

print $SyaNo . $cnt
によって表示されますが、
cnt=1のみの結果がループします。
cnt=2、cnt=3、cnt=4の結果はどうしたら表示されるでしょうか?
どうしてループしてしまうのでしょうか?

---------
while($col = mysql_fetch_array($result1)){
for($cnt=1; $cnt<=4; $cnt++){
print $cnt . " ";
print $col[SyaNo.$cnt] . " ";
if ($col[SyaNo.$cnt] != ""){
$sql = "select SyaName from Syain where SyaNo = " . $col[SyaNo.$cnt];
$result2 = mysql_query($sql,$link);
$col2 = mysql_fetch_array($result2);
$SyaNo . $cnt = $col2['SyaName'];
print $SyaNo . $cnt;
}
}

-------------
$body .= "<td>" . $SyaNo1 . "</td>\n";
$body .= "<td>" . $SyaNo2 . "</td>\n";
$body .= "<td>" . $SyaNo3 . "</td>\n";
$body .= "<td>" . $SyaNo4 . "</td>\n";

A 回答 (4件)

${'SyaNo'.$cnt}



でしたね。すみません。
中かっこ内が文字列としたときに使いたい変数名になってる必要があると言うことです。
    • good
    • 0
この回答へのお礼

ありがとうございました。
解決しました。

こちらこそ、わけもわからず使い、質問してしまい、
すみませんでした。

またよろしくお願いします!

お礼日時:2009/08/31 17:16

>どうしてループしてしまうのでしょうか?


ループしているのではなく、5件実行したいwhileが
一回だけで抜け出してしまっているのではないでしょうか?
(ループしていたらリセットする以外停止しないでしょうから)

本題に戻ります。
2,3,4,5が実行されないのは
while($col = mysql_fetch_array($result1))文の
mysql_fetch_array($result1)が以降の文の実行1回で変更
されている以外あり得ないと思います。
中身が判らないので直し方を書けないのですが、こういう時は
print文等で怪しげなものを1つずつ確認してゆくのが
デバッグの早道(大昔さんざんやりました)と思います。


while($col = mysql_fetch_array($result1)){
でも動くとは思いますが、本来はNO1のかたの言われている
while($col == mysql_fetch_array($result1)){
が正解だと思います。

この回答への補足

コメントありがとうございます。

月曜日に見てみます。

補足日時:2009/08/29 07:31
    • good
    • 0

質問者さんがやりたいのは、可変変数を使ってその変数値に値を代入したいということではないですか?


<?php
$SyaNo . $cnt = $col2['SyaName'];
print $SyaNo . $cnt;
?>
ここの部分、
これを
<?php
${$SyaNo.$cnt} = $col2['SyaName'];
print ${$SyaNo.$cnt};
?>
としてみてください。

この回答への補足

コメントありがとうございます。

月曜日に、検証してみますね。

補足日時:2009/08/29 07:30
    • good
    • 0
この回答へのお礼

正しく出力されました!
ありがとうございました。

ただし、${$SyaNo.$cnt} が $SyaNo1であり、
「浅野優斗」という文字の場合、

$body .= "<td>" . $SyaNo1 . "</td>\n";
$body .= "<td>" . $SyaNo2 . "</td>\n";
$body .= "<td>" . $SyaNo3 . "</td>\n";
$body .= "<td>" . $SyaNo4 . "</td>\n";

の、$SyaNo1では、「浅野優斗」と表示されるはずなのですが、
表示されません。
上でセットした値が正しく保持されていないのでしょうか。
それとも、「$SyaNo1」という表記が正しくないのでしょうか?
もし、原因がお分かりでしたら、教えていただけませんでしょうか。
よろしくお願いします。

お礼日時:2009/08/31 10:50

while($col = mysql_fetch_array($result1)){



while($col == mysql_fetch_array($result1)){
でないといけないのでは?

この回答への補足

コメントありがとうございます。

他のプログラムは、
while($col = mysql_fetch_array($result1)){
で通っているのです。。。

補足日時:2009/08/28 20:14
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!