• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPプログラムでデータを追加する方法。)

PHPプログラムでデータを追加する方法

このQ&Aのポイント
  • PHPを利用して、phpMyAdminのテーブルに新しい商品データを追加するプログラムの作成方法について教えてください。
  • 追加する商品データの価格には数値以外の入力ができないようにし、追加の成功・失敗メッセージを表示したいです。
  • 現在のPHPプログラムではデータの追加がうまくいかず、どうすればいいか分かりません。初心者なので、教えていただけると助かります。

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

  • ベストアンサー
回答No.1

恐らく、20150908rin様が行いたい動作を現状ソースを修正して行うには、簡単に書くと以下のような感じになるかと思います。 <?php $host = "******"; // データベースのホスト名又はIPアドレス $username = '******'; // MySQLのユーザ名 $passwd = '******'; // MySQLのパスワード $dbname = '******'; // データベース名 $params = $_POST; $link = mysqli_connect($host, $username, $passwd, $dbname); // 接続成功した場合 if ($link) { // 文字化け防止 mysqli_set_charset($link, 'utf8'); if(isset($params['goods_name']) && isset($params['price'])){ $insert_query = "INSERT INTO home_center VALUES('{$params['goods_name']}',{$params['price']})"; $insert_result = mysqli_real_query($link, $insert_query); if($insert_result){ echo "SUCCESS!"; }else{ echo "FAILED"; } } $query = 'SELECT goods_name, price FROM home_center ORDER BY price ASC'; // クエリを実行します $result = mysqli_query($link, $query); // 1行ずつ結果を配列で取得します while ($row = mysqli_fetch_array($result)) { $goods_data[] = $row; } // 結果セットを開放します mysqli_free_result($result); // 接続を閉じます mysqli_close($link); // 接続失敗した場合 } else { print 'DB接続失敗'; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <style type="text/css"> table, td, th { border: solid black 1px; line-height: 1.5; } table { width: 250px; } </style> </head> <body> <h1>ホームセンター商品一覧</h1> <form action="/hoge.php" method="POST"> <p> 商品名:<input type="text" name="goods_name" size="20">&emsp;価格:<input type="text" name="price" size="10"> 円<br><input type="submit" value="送信"><input type="reset" value="リセット"></p> </form> <table> <tr> <th>商品名</th> <th>価格</th> </tr> <?php foreach ($goods_data as $value) { ?> <tr> <td><?php print htmlspecialchars($value['goods_name'], ENT_QUOTES, 'UTF-8'); ?></td> <td align=right><?php print htmlspecialchars($value['price'], ENT_QUOTES, 'UTF-8'); ?></td> </tr> <?php } ?> </table> </body> </html> 行った対応としては、以下になります。 ・$_POST変数より、submitボタンで送られてきたパラメータを$param変数に格納。 ・goods_name,price共にパラメータがある場合は、SELECT文でデータを取得する前にINSERT文でデータを追加。 ・INSERTの成功、失敗でSUCCESSとFAILDを表示 後は、html部分のformタグにactionとmethodを追加しています。 ご参考になれば幸いです。

20150908rin
質問者

お礼

ありがとうございました、正常に作動しました。 このまま実行すると、「下ヘ下ヘ」の追加ではなく価格順の追加になってしまいますが、phpMyAdminの方でgoods_idというカラムを新規で作成、(goods_nameとprice以外のカラムは絶対作ってはいけないというワケではないので。)A_I+PRIMARY KEYを設定して、 $insert_query = "INSERT INTO home_center VALUES('{$params['goods_name']}',{$params['price']})"; を $insert_query = "INSERT INTO home_center(goods_name, price) VALUES('{$params['goods_name']}',{$params['price']})"; に、そして $query = 'SELECT goods_name, price FROM home_center ORDER BY price ASC'; を $query = 'SELECT goods_name, price FROM home_center ORDER BY goods_id'; に変更する事で自己解決しました。 ようやく勉強が一歩進みます。本当にありがとうございました!

関連するQ&A