データベース検索結果がない場合の表示方法について

このQ&Aのポイント
  • データベース検索結果がない場合に表示する方法について教えてください。
  • データベースとPHPを使用してWEBページを作成していますが、検索結果がない場合に表示する方法について困っています。
  • 現在、データベースとPHPを利用してWEBページを制作していますが、検索結果がない場合にどのように表示すればよいか分かりません。教えていただけますか?
回答を見る
  • ベストアンサー

出力結果がないときの処理方法

何もかもが初心者です。 どういう風に質問すればよいのかもわからないので理解しづらいものがあるとは思いますが、あたたかいご回答、よろしくお願いいたします。 只今、データベースとPHPを使ってWEBページを作っているのですが、データベースに検索結果がないときの表示方法でつまづいています。 <?php $data = array("aaa","bbb","ccc"); foreach ( $data as $val ): if( $val == ddd ): echo <<<EOM "<p>$val</p>"; EOM; else: echo "<p>該当データがありません</p>"; endelse; endif; endforeach; ?> このようにすると、「該当データがありません」が3つ続けて出てきてしまうのです。 1つしか出さないようににする方法を教えてください。 よろしくお願いします。

  • PHP
  • 回答数3
  • ありがとう数6

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

なるほどね。 であれば出力はforeach内で行い、breakしなければいいでしょう。 (breakをしているのはヒットしたらそのあとを検証する必要がないと 考えたからなので) <?php $data = array("aaa","bbb","ccc","aaa","bbb","ccc"); $val="aaa"; $flg=false; foreach($data as $v){ if($val==$v){ echo <<<EOM <p>$val</p> EOM; $flg=true; } } if(!$flg){ echo "<p>該当データがありません</p>"; } ?>

abc333xyz
質問者

お礼

yambejp様、完璧に出来ました^^ うれしくて小躍りしております^^ yambejp様の肩でもあればオモミしたいところです。 yambejp様のおかげで次のステップに進めます。 本当に、本当にありがとうございました。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

foreachで回すならフラグをたてる <?php $data = array("aaa","bbb","ccc","ddd"); $val="ddd"; $flg=false; foreach($data as $v){ if($val==$v){ $flg=true; break; } } if($flg){ echo <<<EOM <p>$val</p> EOM; }else{ echo "<p>該当データがありません</p>"; } ?>

abc333xyz
質問者

補足

yambejp様、ご回答ありがとうございます。 この通りにすれば確かにできます。 しかし、本当に本当に申し訳ないのですが、私の説明不足でした。 $dataに格納されているものの重複をお伝えできていませんでした。 <!-- $data = array("aaa","bbb","ccc","aaa","bbb","ccc"); foreach ( $data as $val ): if( $val == aaa ): --!> 以下省略いたします。 上記のもので試してみると、はじめの質問でお伝えしたPHPなら2つ「aaa」が出力されるのですが、今回のyambejp様のご回答にこれをあてはめると、「aaa」が1つになってしまいます。 「aaa」は2つ出力されて、「該当データがありません」は1つの出力にするにはどうすればよいのでしょうか? PS. お聞きすることがとても心苦しく、5時間ぐらい格闘したのですが答えが見つからず、途方に暮れてyambejp様に再度質問してしまう形になったことを申し訳なく思っております。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

この場合ループ必要ですか? <?php $data = array("aaa","bbb","ccc"); $val="ddd"; if(in_array($val,$data)){ echo <<<EOM "<p>$val</p>"; EOM; }else{ echo "<p>該当データがありません</p>"; } ?>

abc333xyz
質問者

お礼

yambejp様、早速のご回答ありがとうございます。 見事に出来ました^^ ありがとうございます。 これから早速実践したいと思います。 PS:また壁にぶつかってしまったらお助けください。

abc333xyz
質問者

補足

yambejp様、お忙しいところ申し訳ありません。 実践したところ、今度は「該当データがありません」しか出なくなってしまいました。 実践したものはかなり装飾しなければならないので、現在どうしているかをうまくお伝えすることができず申し訳ないのですが、foreachを使っての解決策はございますでしょうか?

関連するQ&A

  • xmlからphpでうまくデータを出力できない

    WEBサービスでリクエストに対して取得したxmlの中で、下記のようなデータがあるのですが、それがうまくphpで出力できなくて困っています。 [xmlのデータ(一部)] <aaa>  <bbb>   <ccc>    <ddd>あいうえお</ddd>    <Date date="05" month="09" year="2009"> [phpのソース] echo $aaa->bbb->ccc->ddd ; echo $aaa->bbb->ccc->year ; ・・・(※) (※)の行は思いつきで書いてしまっているのですが、この状態で実行すると、「あいうえお」は取得できますが、日付が当然取得できません。質問は以下です。 (※)の部分は、どう書けばいいのでしょうか?

    • 締切済み
    • PHP
  • 変数名の連結

    以下のような配列があるとします。 $str[0] = aaa; $str[1] = bbb; $str[2] = ccc; foreachでまわし変数名を連結し代入するというような事は可能なの でしょうか? foreach ($str as $key => $val) { //$keyをechoすると012と表示 //ここで変数名を$data0,$data1のようにしたいがうまくいかない $data . $key = $val; //配列にするぶんには正常に動作しました $data[$key] = $val; }

    • ベストアンサー
    • PHP
  • 【エクセル】空セルを埋める方法

    お世話になります。 下記のような表があります。 1行目:AAA,BBB,CCC,DDD 2行目:空セル,BBB,CCC,DDD 3行目:空セル,BBB,CCC,DDD 4行目:aaa,BBB,CCC,DDD 5行目:空セル,BBB,CCC,DDD ・・・ こんなパターンの行が結構あります。 空セル部分を下記のように埋めたいのですが 1行目:AAA,BBB,CCC,DDD 2行目:AAA,BBB,CCC,DDD 3行目:AAA,BBB,CCC,DDD 4行目:aaa,BBB,CCC,DDD 5行目:aaa,BBB,CCC,DDD てっとり早く埋める方法ありませんか? いまは、【ctrl+↓】 ⇒【↑】⇒【ctrl+D】を延々繰り返しています。 宜しくお願いいたします。

  • 分岐SQLを一発のSQLで実現したい

    【データベース:SQLServer2005】 SQLのアドバイスを頂きたいです。 【テーブル】 テーブル名:Table1 フィールド名:種類、キー1、キー2 テーブル名:Table2 フィールド名:種類、キー1、キー2 テーブル名:Table3 フィールド名:種類、キー1、キー2 【データ】 Table1 種類、キー1、キー2 001  AAA  BBB 001  AAA  CCC 001  AAA  DDD Table2 種類、キー1、キー2 002  AAA  BBB 002  AAA  CCC NULL  AAA  DDD Table3 種類、キー1、キー2 NULL  AAA  BBB NULL  AAA  CCC NULL  AAA  DDD これをUNIONで取得します。 種類、キー1、キー2 001  AAA  BBB 001  AAA  CCC 001  AAA  DDD 002  AAA  BBB 002  AAA  CCC NULL  AAA  DDD NULL  AAA  BBB NULL  AAA  CCC 実現したいのは、 1)同種類、キー1、キー2のデータで、 種類にNULLが含まれていたら、NULLのデータは取得しない 2)同種類、キー1、キー2のデータで、 種類にNULLしかないデータは、取得する 001  AAA  BBB 001  AAA  CCC 001  AAA  DDD 002  AAA  BBB 002  AAA  CCC NULL  AAA  DDD →いる NULL  AAA  BBB →いらない NULL  AAA  CCC →いらない ↓結果 001  AAA  CCC 001  AAA  DDD 002  AAA  BBB 002  AAA  CCC NULL  AAA  DDD 上記を実現する為、UNION後のSQLでも構わないので、 一発のSQLで取得する事は可能でしょうか? 有識者の方にご享受頂ければ幸いです。 どうぞ宜しくお願い申し上げます。

  • 正規表現で一つ目の区切り文字で区切りたいのですが・・・

    aaa/bbb/ccc/ddd aaa/bbb/ccc/ddd/eee aaa/ccc/ddd $a=~/(.*)\/(.*)/; $1はそれぞれ aaa/bbb/ccc aaa/bbb/ccc/ddd aaa/ccc と成ってしまいます。 このように 「最後の/」で分けられてしまいます。 一つ目の/で分けるにはどうしたらよいでしょうか。

    • ベストアンサー
    • Perl
  • 正規表現

    正規表現 a=/home/aaa/bbb/ccc/ddd.abc echo ${a%.abc}実行したら /home/aaa/bbb/ccc/ddd が表示されますが、 home/aaa/bbb/ccc/ddd に表示したいですがうまくいきません。 ネットで正規表現さがしてみたけど理解できませんでした。 教えていただきたいです。なお 説明文も簡単に記入していただいたら幸いです。

  • 集計方法について教えて下さい。PHP+MYSQL

    こんばんは。よろしくお願い致します。 データベースに下記のようなデータが入っています。 no point name --------------------- 123 100 aaa 123 50 aaa 124 100 bbb 130 30 ccc 131 80 ddd 131 100 ddd 131 20 ddd 133 10 eee このデータを元に、下記のような結果を得たいのです。 noが同じデータのpointを集計し、まとめたレコードの件数をcount項目として欲しいです。 no point name count ------------------------------ 123 150 aaa 2 124 100 bbb 1 130 30 ccc 1 131 200 ddd 3 133 10 eee 1 SQLだけで実現できるのでしょうか?? 具体的にどのような方法で実現できるか、教えて頂けると有難いです。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • エクセル で文字列を分離したい

    例えば、エスセルのデーターベースで [A1]http://www.aaa.bbb//=http://ccc.ddd [A2]http://eee.fff.gg//=http://hh.iii こちらを [B1]http://www.aaa.bbb//=  と、 [C1]http://ccc.ddd に分離したいのですが、 大量に一括で分離する方法を教えてください。

  • Excelの関数に詳しい方、お願いします。

    わかりづらい説明かもしれませんが、よろしくお願いします。 例として、 AAA*BBB*CCC*DDD*EEE*FFF AAA*BBB*CCC*DDD*EEE*FFF AAA*BBB*CCC*DDD*EEE*FFF AAA*BBB*CCC*DDD*EEE*FFF AAA*BBB*CCC*DDD*EEE*FFF ・ ・ ・ といった文字列がエクセルの先頭列A1~A100までずらりと並んでいるとします。 各アルファベットには任意の数字(日付など)が入るとして、この並んだ百件のデータからCCCの部分の最大値を表示するための適切な関数があれば教えていただけないでしょうか? 現在少々急いでいるため言葉足らずで申し訳ありませんが、よろしくお願いいたします.

  • EXCELで行の先頭データが同じ行の削除方法について

    EXCELで次のようなことをしたいのですがどうしたら簡単にできるでしょうか?  AAA   AAA  AAA  AAA  AAA  BBB  BBB  BBB  CCC  DDD  DDD  DDD  DDD 上ようのなデータで重複している部分を削除し、  AAA  BBB  CCC  DDD としたいのですが。 今は一行々々で確認しながら削除してます。3000行程あり困ってます。 どうしたら簡単にできるでしょうか?  

専門家に質問してみよう