質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

0回答

334閲覧

php フォームからmysqlにインサートされない

sa-t

総合スコア4

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2022/01/23 06:40

前提・実現したいこと

php,mysqlを使って、phpmyadminに登録されたデータをテーブル表示したいです。

発生している問題・エラーメッセージ

フォームかから入力されたのがうまくインサートされません。どこに問題あるかわかりますでしょうか。

テーブル情報

practice_table

名前:practice_day,coat,weather,wind,tyousi
タイプ:date,int,int,int,int

該当のソースコード

html

1<!DOCTYPE html> 2<html lang="ja"> 3 <meta charset="utf-8"> 4 <title>練習登録</title> 5 6 <link rel="stylesheet" href="practice.css"> 7 8 <body style="background-color: rgba(35, 175, 13, 0.577);"> </body> 9 <h1 style="text-align:">練習日記フォーム</h1> 10 11 <form method="POST"action="tennis_practice.php"> 12 13 <p style="text-align:">日付 14 <input type="date" name="practice_day"></p> 15 16 <p style="text-align:">使用コート: 17 <select name="coat"> 18 <option value="ハード">ハード</option> 19 <option value="クレー">クレー</option> 20 <option value="グラス">グラス</option> 21 <option value="砂入り人工芝">砂入り人工芝</option> 22 </select> 23 24 <p style="text-align:">天気: 25 <select name="weather"> 26 <option value="晴れ">晴れ</option> 27 <option value="曇り">曇り</option> 28 <option value=""></option> 29 <option value=""></option> 30 </select> 31 32 <p style="text-align:">風の強さ: 33 <select name="wind"> 34 <option value="強風">強風</option> 35 <option value="弱風">弱風</option> 36 <option value="無風">無風</option> 37 </select> 38 39 <p style="text-align:">プレーの調子: 40 <select name="tyousi"> 41 <option value="非常に良い">非常に良い</option> 42 <option value="良い">良い</option> 43 <option value="普通">普通</option> 44 <option value="悪い">悪い</option> 45 <option value="非常に悪い">非常に悪い</option> 46 </select> 47 48 <br> 49 <p style="text-align:"></pstyle><input type="submit" value="OK"></p> 50 </form> 51 <br> 52 <br> 53 <div class="container"> 54 <div class='back'> <a href='player.html'>戻る</a></div> 55 </body> 56</html> 57

php

1<!DOCTYPE html> 2<html lang="ja"> 3 <meta charset="utf-8"> 4 <title>指導者</title> 5 6 <link rel="stylesheet" href="register_senyou.css"> 7 8 <body style="background-color: rgba(35, 175, 13, 0.577);"> </body> 9 <h1 style="text-align:center">練習日記データ</h1> 10 </body> 11</html> 12 13<?php 14$host = 'localhost'; // データベースのホスト名又はIPアドレス 15$username = 'root'; // MySQLのユーザ名 16$passwd = 'root'; // MySQLのパスワード 17$dbname = 'tennis'; // データベース名 18$link = mysqli_connect($host, $username, $passwd, $dbname); 19 20if(isset($_POST['practice_day'],$_POST['coat'],$_POST['weather'],$_POST['wind'],$_POST['tyousi'])===TRUE){ 21 $practice_day = $_POST['practice_day']; 22 $coat = $_POST['coat']; 23 $weather = $_POST['weather']; 24 $wind = $_POST['wind']; 25 $tyousi = $_POST['tyousi']; 26 27 $conf = "SELECT practice_day FROM practice_table WHERE practice_day = :practice_day"; 28 //クエリを実行します 29 $rs = mysqli_query($link,$conf); 30 $rows = mysqli_num_rows($rs); 31 32 if($rows == 0){ 33 $stmt = ("INSERT INTO practice_table (practice_day,coat,weather,wind,tyousi) 34 VALUES('".$practice_day."','".$coat."','".$weather."','".$wind."','".$tyousi."')"); 35 36 //クエリを実行します 37 mysqli_query($link,$stmt); 38 print "<center> 練習日記の登録に成功しました。</center>"; 39 40 } else{ 41 print "<center>この日付は".$practice_day." は既に登録されています。</center>"; 42 $practice_day = 1; 43 } 44} 45 46// 接続成功した場合 47if ($link) { 48 // 文字化け防止 49 mysqli_set_charset($link,'utf-8'); 50 51 $query = 'SELECT practice_day,coat,weather,wind,tyousi FROM practice_table'; 52 53 // クエリを実行します 54 $result = mysqli_query($link,$query); 55 56 // 1行ずつ結果を配列で取得します 57 while ($row = mysqli_fetch_array($result)) { 58 $practice_date[] = $row; 59 } 60 // 結果セットを開放します 61 mysqli_free_result($result); 62 63 // 接続を閉じます 64 mysqli_close($link); 65 66 // 接続失敗した場合 67}else{ 68 print 'DB接続失敗'; 69} 70 71?> 72 73<!DOCTYPE html> 74<html lang="ja"> 75 76<head> 77 <meta charset="UTF-8"> 78 79 <style type="text/css"> 80 table, 81 table { 82 margin-left: auto; 83 margin-right: auto;} 84 td, 85 th { 86 border: solid black 2px; 87 } 88 89 table { 90 width: 1000px; 91 } 92 </style> 93 94</head> 95 96<body> 97 98 <table> 99 <tr> 100 <th>日付</th> 101 <th>コート</th> 102 <th>天気</th> 103 <th>風の強さ</th> 104 <th>コンディション</th> 105 </tr> 106 <?php 107 foreach ($practice_date as $value) { 108 $sql = 'SELECT * FROM practice_table WHERE practice_day,coat,weather,wind,tyousi'; 109 ?> 110 <tr> 111 <td><?php print htmlspecialchars($value['practice_day'], ENT_QUOTES, 'UTF-8'); ?></td> 112 <td><?php print htmlspecialchars($value['coat'], ENT_QUOTES, 'UTF-8'); ?></td> 113 <td><?php print htmlspecialchars($value['weather'], ENT_QUOTES, 'UTF-8'); ?></td> 114 <td><?php print htmlspecialchars($value['wind'], ENT_QUOTES, 'UTF-8'); ?></td> 115 <td><?php print htmlspecialchars($value['tyousi'], ENT_QUOTES, 'UTF-8'); ?></td> 116 </tr> 117 <?php 118 } 119 ?> 120 <br></br> 121 </table> 122 <br></br> 123 <div class="container"> 124 <div class='logout'> <a href='player.html'>戻る</a></div> 125 </body> 126 127</html>

試したこと

インサート文を色々変えてみたが、変わらず。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

AbeTakashi

2022/01/23 14:43

「うまくインサートされません」という表現だと、実際に何が起きているのかが分かりにくいです。画面上にエラーメッセージが出るのが、何も表示されないのか?、Apacheもしくはエラーログに何か表示されていないか?、どういうログが表示されているか?などをもう少し詳しく書いた方が、回答が出やすいと思います。文字で伝えるのが難しいなら、画面キャプチャなどを添付するのもありでしょう。ソースコードだけでは第三者が判断するのはけっこう難しいです。 参考) https://teratail.com/help/question-tips 「3. 正しく伝わる質問の仕方」が参考になると思います。
yambejp

2022/01/24 01:46

とりあえずprepare処理に書き換えてみてください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問