• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:phpについて)

phpでデータベースから取得したデータをwhile文で表示する方法とは?

このQ&Aのポイント
  • 質問内容: データベースから取得したデータをwhile文で表示する方法とは?
  • 質問詳細: while文の中でa hrefで取得したデータを表示させたい
  • 質問内容: if文でnullの時に強制的に指定のリンクにする方法は?

質問者が選んだベストアンサー

  • ベストアンサー
  • 4017B
  • ベストアンサー率73% (1336/1814)
回答No.2

>4の方にmoreが… あ~、そういうのが実地で細かく検証出来ないのがオンライン問答の難しいところですね。恐らくDBから読み込まれた各データが、 $row に展開格納される時点で想定外の文字列が含まれてるんだと思いますが… とりあえず「AまたはBの時に~」という条件分岐式の記述は… if ( empty($row[3]) || empty($row[4]) ) { $row[3] = $row[4] = 'more'; } ~みたいな感じでOKです。上記で「 $row[3] または $row[4] のどちらかが "empty" だった場合」という意味になります。 非表示云々~というのがちょっと外野からだとどういう意味なのか分かりませんでしたので。とりあえずの記述例を提示するだけにして置きます。 P.S. 揚げ足取りみたいになりますが、enpty では無く empty です(nでは無くmです)。 PHPに限らずプログラム構文は1文字でも違えば全く別の意味になったり、構文として意味を成さなくなったりします。細かい事ですが、常に正しい表記を意識付けてそれを普段から実践して行かないと、本番でも日頃の変な癖が出てしまいエラーになります。そして本人はそれを普段から無意識で習慣化してしまっているため、なかなかミスに気付く事が出来ません。 最初のうちは面倒でも必ず正規通りの正しい、省略しない書き方を習慣付けて置いた方が後々で面倒が少なくなります。

その他の回答 (1)

  • 4017B
  • ベストアンサー率73% (1336/1814)
回答No.1

とりあえず一番簡単な記述式は… while( $row = $res->fetchArray() ) { if ( empty($row[3]) ) { $row[3] = 'more'; } if ( empty($row[4]) ) { $row[4] = 'more'; } echo '<span><a class="link_button" href="articletable?tag=', $row[3], '" method="get">', $row[3], '</a><a class="link_button" href="articletable?tag=', $row[4], '" method="get">', $row[4], '</a></span>'; } ~みたいな感じですね。ただしPHPは変数の型判別が良い意味でいい加減なので、上記の記述式の場合だと、仮に変数 "" の中身が純粋に null で無く、例えば "0" や未定義だった場合でもマッチして "more" に置換処理されますのでご注意を。厳密に null の時にだけマッチさせたいのであれば… if ( is_null($row[3]) ) {~} ~みたいに記述する必要があります。 P.S. echo文で書き出されるHTMLに奇妙な部分があったので、一般的に正しいとされる構文に修正しています。質問者が何か意図があってそういう記述をしているのであれば、適宜再修正して適用してください。

dhtfyjh
質問者

お礼

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

dhtfyjh
質問者

補足

ご回答ありがとうございます。 if3.4のところなんですが、値は文字のみでして、 ご回答いただいたコードだと3も4もenptyの場合、4の方にmoreが書かれてしまいました。(3は空白のまま) そこでなんですが、両方ともenptyの場合3もしくは4どちらか一方を残し片方を非表示にする方法はありませんか? 難しければ if(enpty($3もしくは4)) {$row[3と4]='more'(3と4両方にmoreを入れるつもり。 } こんな感じですか? 基本的には、非表示の方を実装したいです。

関連するQ&A

専門家に質問してみよう