2016-12-30 9 views
0

私は簡単なメッセージボードのMySQLデータベースを作成してレビューを作成し、HTMLフォームを介して1ページに送信し、すべてのレビューを別のページに一度表示するあなたのレビューを投稿しました。PHPでMySQLにHTMLフォームデータを挿入する

私の問題は、HTMLフォームのフィールドの2つがMySQLデータベースに挿入されていないため、すべてのレビューページに名前とタイトルが表示されません。私はそれだけでPHPとMySQLのクエリを実行が、私は仕事に私のHTMLフォームを必要とする試験したとき、

Link to what the "Read all Reviews" page looks like.

コードは、どの問題なく動作します。

HTMLフォーム:process.phpため

<form action ="process.php" method = "post"> 
      <fieldset> 
       <legend>Review Field</legend> 
       Reviewer Name: <br /> 
       <input type="text" name "name" id = "name"><br /> 
       Title of Review:<br /> 
       <input type="text" name "title" id = "title"><br /> 
       Enter your review below: 
       <!--Textbox start--> 
       <textarea name="body" id = "body" rows="10" cols="100"> 
       </textarea> 
        <!--Textbox end-->  
       <br /> 
       <input type="submit" name = "submit" id="submit"> 
       <br /> 
      </fieldset> 
      </form> 

コード:

<?php // Create a database connection. 
$dbhost = "localhost"; 
$dbuser = "root"; 
$dbpass = "password"; 
$dbname = "ya_reviews"; 
$connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname); 

//Test if connection occurred. 
if (mysqli_connect_errno()) { 
die("Database connection failed: " . 
mysqli_connect_error() . 
" (" . mysqli_connect_errno() . ")" 
); 
} 

//Perform database query 
$name = $_POST['name']; 
$title = $_POST['title']; 
$body = $_POST['body']; 

//This function will clean the data and add slashes. 
// Since I'm using the newer MySQL v. 5.7.14 I have to addslashes 
$name = mysqli_real_escape_string($connection, $name); 
$title = mysqli_real_escape_string($connection, $title); 
$body = mysqli_real_escape_string($connection, $body); 

//This should retrive HTML form data and insert into database 
$query = "INSERT INTO reviews (name, title, body) 
      VALUES ('".$_POST["name"]."','".$_POST["title"]."','".$_POST["body"]."')"; 

     $result = mysqli_query($connection, $query); 
     //Test if there was a query error 
     if ($result) { 
      //SUCCESS 
     header('Location: activity.php'); 
     } else { 
      //FAILURE 
      die("Database query failed. " . mysqli_error($connection)); 
      //last bit is for me, delete when done 
     } 

mysqli_close($connection); 
?> 

すべてのレビューを見る:

<?php 

     //This will fetch the data from the database 
     $query = "SELECT * FROM reviews"; 
     $result = mysqli_query($connection, $query); 
     //Test if there was a query error 
     if (!$result) { 
      die("Database query failed."); 
     } 

     // This will let me display the data. 
     // The loop will be spilt so I can format with HTML 
     while ($row = mysqli_fetch_assoc($result)) { 
      //output data from each row 
     ?> 

     Name: <?php echo $row["name"] . "<br />"; ?> 
     Title: <?php echo $row["title"] . "<br />"; ?> 
     Review: <?php echo $row["body"] . "<br />"; 
      echo "<hr>"; ?> 
     <?php 
     } ?> 

注:上記のコードの前にprocess.phpに表示されているのと同じコードでデータベースに接続しましたが、スペースを節約するために除外しました。

+0

mysqli-で準備文を使用してください。パスワードを変更するのを忘れないでください。 – Strawberry

答えて

4

HTML属性の構文が正しくありません。そのとvalueの間にある=記号がありません。あなたはエスケープ値を使用していないname="title"insert中にも

<input type="text" name="name" id = "name"><br /> 
      Title of Review:<br /> 
<input type="text" name="title" id = "title"><br /> 

からname="name"name "title"

変更name "name"

$_POST["name"]の代わりに$nameを挿入クエリで使用してください。同じタイトルとボディ値になります。

+0

ありがとうございました! ^^ 構文エラーと私の変数の混乱は私の死の敵と思われる。 > – stressedgradstudent

0

私はあなたがそれは確かに動作しますHTML

<form action ="process.php" method = "post"> 
      <fieldset> 
       <legend>Review Field</legend> 
       Reviewer Name: <br /> 
       <input type="text" name="name" id = "name"><br /> 
       Title of Review:<br /> 
       <input type="text" name="title" id = "title"><br /> 
       Enter your review below: 
       <!--Textbox start--> 
       <textarea name="body" id = "body" rows="10" cols="100"> 
       </textarea> 
        <!--Textbox end-->  
       <br /> 
       <input type="submit" name = "submit" id="submit"> 
       <br /> 
      </fieldset> 
      </form> 

の構文で台無しだと思います!

1

問題は、name属性がHTMLで正しくないことです。

<input type="text" name="name" id = "name"><br /> 

<input type="text" name="title" id = "title"><br /> 
0

あなただけのあなたが名前から「=」記号が欠落している

<input type="text" name "title" id = "title"> 

、それはそれらの要素からデータを収集することになると、したがって、エラーを作成する、いくつかの構文を逃しているヨ、パラメータ

関連する問題