- ベストアンサー
if文で、レコードが無い場合だけ変数が表示しなくなる
- リストボックスで絞込みを2段階にしています。2段階目で、レコードがあればきちんと表示するのですが、無い場合に、一段階戻したいのです。
- レコードが無いときにうまく表示できません。変数以外の部分は表示するので、分岐は出来てると思うのですが、変な事をしているのだと思いますが、色々やってみてもうまくいきません。
- MySQLのクエリを使ってレコードの件数を取得し、それに応じて表示を切り替える方法をお聞きしたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
前のページに戻りたいなら、 //△△△△△△△うまくいかないのはこの部分△△△△△△△ if($tcnt == 0 ){ // この表記でうまくいくかどうかは、試験環境がないので保証の限りではないですが。 $genre='javascript:history.back()'; $navi .= "<a href=【".$genre."】"."</a>"."【".$sgenre."】は登録がありません。" ; } で戻れそうな感じですが、$sgenreに何をセットすべきかは、この記事の情報では判断できません。$sgenreno をキーにして、テーブルAを検索し、その中のカラムsgenreから値を取り出しているわけですが、$sgenrenoに該当するレコードが1件もないのに、1件もない場合にどんな値が カラムsgenre から取り出されるべきかと問われているようなものです。それは第三者に分かるはずはないのです。 私が書くならこうします。 $navi .= "<a href=【".$genre."】"."</a>"."【".$sgenreno."】に該当する○○は登録がありません。" ;
その他の回答 (1)
- nyaa519323116
- ベストアンサー率51% (41/79)
while($col = mysql_fetch_array($rst)) { $genreno=$col["genreno"]; $genre=$col["genre"]; $sgenre=$col["sgenre"]; } のループは下記の条件で該当レコード0なら1度も通過しない。 select * from テーブルA where genreno = $sgenreno order by id desc limit ゆえに、変数$genreも$sgenreも値を持たない変数になる。他に、これらの変数を初期化している箇所がないので、 $navi .= "<a href='1setubi_search.php?genreno=$genreno'>【".$genre."】"."</a>"."【".$sgenre."】は登録がありません。" ; は多分、 【】【】は登録がありません。 と表示されて終わる~のではないかと。
補足
回答ありがとうございます。 ご指摘どおりです。 【】【】は登録がありませんと表示します。。。 アドバイスを頂いて、もう一度SQL文を発行すればよいのかと思いましたが、 while($col = mysql_fetch_array($rst)) { こうしている限りだめなんですよね? すみません、再度アドバイスをいただけませんか m(__)m
お礼
再度アドバイス、ありがとうございました! 前回のアドバイスを元に、色々な方法を試して データのあるなしに関わらず、ジャンルを表示するように 今朝方、作ったところでした。 ただ、前のページに戻るリンクを張りたかっただけなので アドバイス通り以下のようにしました。 if($tcnt == 0 ){ // この表記でうまくいくかどうかは、試験環境がないので保証の限りではないですが。 $back='javascript:history.back()'; $navi .= "<a href=".$back.">"."登録がありません、前のページに戻ります。"."</a>" ; } このようにさせて頂きました。 色々な方法を考えてみる事が大事だと言うことを考えさせていただきました、 初心者の質問にお付き合い頂いて本当にありがとうございました。