• ベストアンサー

宜しくお願いします。

宜しくお願いします。 PHP5 + MySQL5 で組んでいます。DBからデータを取って表示させるのですが、ボタンアクションがないとデータを呼び出してくれません。 これを、ページのアドレスにアクセスしたらデータが表示されるようにしたいのですが、どのような仕組みにすれば、可能になるのでしょうか? 表示させるデータは、管理画面で登録した文字を表示するだけのものです。 不足情報があれば仰って下さい。どんな情報でも結構です。宜しくお願いします。

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

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

>ボタンアクションがないとデータを呼び出してくれません そもそもボタンアクションなどという概念はMySQLにはありませんので かなり高い確率で勘違いをしているのでは? もしくはなにかライブラリをつかっていて必須項目を見逃しているのでしょう 基本的には (1)MySQLにアクセスする (2)データを呼び出す (3)表示する (4)MySQLのアクセスを閉じる(※なくても勝手に閉じる) の処理さえかけば表示されるはずです

kaidnu
質問者

お礼

ご教授頂き有難うございました。

kaidnu
質問者

補足

早速お返事有難うございます。一応以下にソースを添付します。 すみませんちゃんと私が見てなかったということをお詫びします。 プリペアードステートメント部でsubmitで値をもらうのを待ってるのでボタン押さないと値が返って来ないのは当然ですよね...なので、質問内容を変えさせて頂きます。 プリペアドステートメント使った際、既に入力済みのデータをページ初回アクセス時点で、一覧表示させておきたいのですが、このようにするにはどう行えば宜しいのでしょうか? 具体的なソースでなくても結構ですので、御教授いただければ幸いです。 <?php // データベース設定 $dbServer = 'localhost'; $dbUser = 'root'; $dbPass = 'password'; $dbName = 'kir014335_tsta'; $flag = TRUE; $mysqli = mysqli_connect($dbServer, $dbUser, $dbPass, $dbName); if (mysqli_connect_errno()) { $flag = FLASE; } else if (!$mysqli->set_charset("utf8")) { $flag = FLASE; } # $flagの値の判定をします。 if ($flag === FALSE) { echo 'データベースエラー'; } else if ((strlen(@$_POST['news']) > 0)) { $value = $_POST['news']; # 値が数値かどうかを判定し、プリペアドステートメントを準備します。 if (ctype_digit($value)) { $sql = "SELECT id FROM news WHERE id = ?"; $stmt = $mysqli->prepare($sql); $stmt->bind_param("i", $value); } else { $sql = "SELECT id FROM news WHERE comments = ?"; $stmt = $mysqli->prepare($sql); $stmt->bind_param("s", $value); } # プリペアドクエリを実行します。 $stmt->execute(); # 値を取得して結果を表示します。 if ($stmt->fetch()) { printf("「%s」はデータベースに登録済みです。", h($value)); } else { echo '「' . h($value) . '」はデータベースに登録がありません。'; } # プリペアドクエリを閉じます。 $stmt->close(); # データベースの中身を表示するためのクエリを実行します。 $sql = 'SELECT * FROM news'; $query = $mysqli->query($sql); if (!$query) { echo 'データベースエラー'; } else { ?> <table border="1"><tr><th>ID</th><th>タイトル</th> </tr> <?php while ($row = $query->fetch_array()) { echo ' <tr>'; echo ' <td>' . h($row['id']) . '</td>'; echo ' <td>' . h($row['comments']) . '</td>'; echo ' </tr>'; } ?> </table> <?php }} function h($string) { // HTMLでのエスケープ処理をする関数 return htmlspecialchars($string, ENT_QUOTES); } ?> <form method="post" action=""> <p>数字か文字を入力してください</p> <input type="text" name="news" value="" /> <input type="submit" value="送信する" /> </form>

その他の回答 (1)

回答No.2

こんばんは。 なんかよーわからんが・・・、 最初っから何か出したいなら、$valueにデフォルト値を入れておけばいいのでは? 入れる場所は、 ># $flagの値の判定をします。 の上ぐらいで、 if(strlen($_POST['news']) > 0){ $_POST['news'] = デフォルト値 } まぁ、いろいろ書き方はあるので、批判は覚悟の上ですが・・・。

kaidnu
質問者

お礼

ご教授いただき、有難うございました。

kaidnu
質問者

補足

お礼遅くなり失礼しました。結果だけ言えば自己解決しました。 ご意見の件、参考になりました有難うございました。

関連するQ&A

専門家に質問してみよう