- ベストアンサー
PHPを使用して犬の情報をHTMLで出力する方法
- PHPを使用して、テーブルから犬の情報を取得し、HTMLで出力する方法について教えてください。
- 具体的には、テーブル名が「dog_table」で、フィールドには「id」「tosi」「name」「sumai」「seibetu」「birthday」があります。
- 質問者は、8歳の犬の名前、住まい、誕生日の情報のみを出力したいとしています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
補足ありがとうございました。 自分はMySQL以外やった事がありませんので、確認させていただきました。 DB名は分かりませんでしたので、仮に「dogs」としております。 そちらのご希望のものになっているか分かりませんが、 色々やっているうちに 無駄に長くなってしまいました。 <?php $db = mysql_connect("localhost", "root" , "" ); mysql_select_db("dogs",$db) or die(mysql_error()); $sql = "SET NAMES utf8"; mysql_query($sql); //------------------------------------------ $me = $_SERVER[PHP_SELF]; $age = $_POST[age]; //------------------------------------------ $sql = "select name,sumai,birthday from dog_table"; if ($age) { $sql.= " where tosi=$age"; } // 年齢が選択されていた場合、抽出 $result = mysql_query($sql); $row = mysql_num_rows($result); //------------------------------------------ if ($row) { if ($age) { $out = "年齢" . $age . "歳の犬は $row 匹いました。<br>\n"; } else { $out = "全件表示<br>\n"; } $out.= "<table border=1><tr bgcolor=cornsilk><td>名前</td><td>住まい</td><td>誕生日</td></tr>\n"; while($dt = mysql_fetch_assoc($result)) { $out.= "<tr>\n"; $out.= "<td>" . $dt[name] . "</td>\n"; $out.= "<td>" . $dt[sumai] . "</td>\n"; $out.= "<td>" . $dt[birthday] . "</td>\n"; $out.= "</tr>\n"; } $out.= "</table>\n"; } else { $out = "年齢" . $age . "歳では、該当がありませんでした。<br>\n"; } //------------------------------------------ $out.= "<hr> 年齢を選択してください。 <form action=$me method=post> <select name=age>\n"; for($i=1;$i<20;$i++) { $chk = ($i == $age) ? "selected" : ""; $out.= "<option value='$i' $chk>$i 歳\n"; } $out.= "</select> <input type=submit name=submit value='抽出'> </form>\n"; $out.= "<hr><a href=$me>全件表示</a>\n"; //------------------------------------------ ?> <html> <head> <meta http-equiv=content-type content=text/html; charset=utf-8> </head> <body> <?= $out; ?> </body> </html>
その他の回答 (2)
- bm_hiro
- ベストアンサー率51% (200/388)
んー、実は 自分の環境では、問題なく動作する為、原因がわかりません。 まぁ、多分、ageが ちゃんと 送信されてないか、受け取れていないかだろうとは思うのですが。 一番上に表示されるのは 常に「全件表示」になってないですか? 8歳を選択した場合は、「年齢8歳の犬は 3 匹いました。」となる予定なのですが。 ちなみに、PHPのバージョンなんて分かりますか? 分からない場合は、前回のスクリプトの先頭に、 phpinfo(); って、入れてもらえれば だらだらと表示されると思います。 一番上にバージョンでますので、それを教えてください。
補足
bm_hiro様、毎度ご回答ありがとうございます。 実は、昨日家にある自宅サーバではたとえ8歳を選択したら8歳のデータではなく、全体データが表示されましたけど、今日レンタルサーバでやったらちゃんと8歳を選んだら8歳だけのデータが出力されました。 おそらく、自宅のサーバのなんらかの設定が間違っていると思います。 ダメだった自宅のサーバのバージョンは今の所学校なので、確定できません、すみません。レンタルサーバならPHPバージョンはVersion 5.2.11です。今日、家に戻る次第二つのサーバを比べながら、原因を模索したいと思います。 ご教授して頂きありがとうございました。 これからもよろしくお願い致します。
- bm_hiro
- ベストアンサー率51% (200/388)
以下の補足お願いします。 ・どの程度 PHPを扱えますか? ・DBは MySQLですか?他のですか?
補足
bm_hiro様 >・どの程度 PHPを扱えますか? ソースを見てある程度理解できます。 >・DBは MySQLですか?他のですか? MySQLです。 よろしくお願いします。
補足
bm_hiro様、ご回答ありがとうございます。 まだMySQLをし始めて間もないので勉強になりました。 ところで、歳を抽出するところですが、歳を選択して「抽出」を押しても、 いつも1歳(1歳~10歳の中で)が表示され、データは1歳から10歳までのすべてのデータが表示されます。 自分で、原因を調べて見ましたが、勉強不足でわかりません。 ぜひ、教えていただけますよう、宜しくお願い致します。