[PHP-users 15431]Re: fileとして作成する

Takehiro Amaike tanpa @ nifty.com
2003年 5月 21日 (水) 10:56:57 JST


こんにちは。天池です。

同じ関数を違う目的に使おうとすると工夫が要りますよね。

>   while ($myrow = mysql_fetch_array($result, MYSQL_ASSOC)) {
>     echo "<option value=\"".$myrow["id"]."\">".cnv_dispstr($myrow["kaii
> n_name"])."</option>";
>   }
この部分、DBから取り出したデータをechoして、リストをリターン出力してます
ね。

これを実行するとPHP実行画面生成部分は
> <select size="1" name="kaiin">
> <option value="<?php echo $ctid ?>" selected>選択してください</option>
> <?php rist($dantai); ?>
> </select>
これでecho分が追加されてリストが作られますが、

ファイル生成部分
> $string4="<option selected>選択してください</option>";
> $string5="<?php rist0($dantai); ?>";
> $string6="</select>";
これは何が行われるでしょうか。

> >$string5="<?php rist0($dantai); ?>";
> ここ変じゃないです?
> 右辺文字列無いに<??>とかいてもPHPとして解釈されません。
> 表示された画面ソースを確認するとこのまま出力されてると思います。
Setoさんの言われるとおり、関数は実行されずに単なる文字列代入になります。

では
$string5=rist0($dantai);
なら良いかと言えば、これまた問題で、
【文字列変数 = リスト】
という代入になるので文字として何も入ってきません。
そのうえ実行画面にもう一度echoした文字列が追加されます。

この場合で2つのパターンを1つの関数で使うなら
-----
  while ($myrow = mysql_fetch_array($result, MYSQL_ASSOC)) {
    output .= "<option value=\"".$myrow["id"]."\">".cnv_dispstr($myrow["kaii
n_name"])."</option>\n";
  }
  return output;
-----
こんな感じでタグを出してしまうか、
リスト出力を出てきた先で処理するのが良いと思います。

----
Takehiro Amaike <tanpa @ nifty.com>



PHP-users メーリングリストの案内