2017-03-16 2 views
0

私は3つの質問を受け取り、それらをデータベースに投稿して傾向を分析できるようにしようとしています。現在、合計はJSと結果はJqueryによって明らかにされましたが、私はそれを一歩前進させて3つの質問の情報を保持したいと思いますが、私はエラーメッセージを受け取っていませんが、データベースにエントリを作成していません。 JSはまだしかし働いている。私はどこに間違っているのか誰にも考えがありますか?前もって感謝します!複数のtrue falseラジオボタンをmysqlに挿入

<?php 
 

 
$host="XXXXXXXX"; // Host name 
 
$username="XXX"; // Mysql username 
 
$password="XXX"; // Mysql password 
 
$db_name="XXXXXX"; // Database name 
 
$tbl_name="test_mysql"; // Table name 
 

 
// Connect to server and select database. 
 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
 
mysql_select_db("$db_name")or die("cannot select DB"); 
 

 
// Get values from form 
 
$question0=$_POST['question1']; 
 
$question1=$_POST['question2']; 
 
$question2=$_POST['question3']; 
 

 
// Insert data into mysql 
 
$sql="INSERT INTO $tbl_name(Q1, Q2, Q3)VALUES('$question0', '$question1', '$question2')"; 
 
$result=mysql_query($sql); 
 

 
?> 
 

 

 

 
    <p class="click" id="blue"> You are only charged interest on the amount that is remaining at the end of the month<br> 
 
       <input type="radio" name="question0" value="A" class="click" id="blue"> True </radio> 
 
       <input type="radio" name="question0" value="B" class="click" id="blue"> False </radio> 
 
      
 
       <p class="click" id="blue">I have to pay off the balance in full every month <br> 
 
       <input type="radio" name="question1" value="A" class="click" id="blue"> True </radio> 
 
       <input type="radio" name="question1" value="B" class="click" id="blue"> False </radio> 
 
       <p class="click" id="blue">If I don't make a payment my credit score will be unaffected<br id="blue"> 
 
       <input type="radio" name="question2" value="A" class="click" id="blue"> True </radio> 
 
       <input type="radio" name="question2" value="B" class="click" id="blue"> False </radio></p> 
 
       
 
<button type="button" class="btn btn-primary btn-xl page-scroll" onclick = "returnScore()" id="click" width="560px">Results</button>

+1

ええと...あなたは、実際に何かをするPHP部分の入力をPOSTする必要があります。あなたは現在、バックエンドに何も送っていません。少なくとも我々は見ることができません。 – amenadiel

+1

新しいコードを書いているなら、** _ please_は 'mysql_ *'関数**を使わないでください。彼らは古くて壊れていて、PHP 5.5では廃止されました(セキュリティアップデートをもはや受け取っていなくなっています)、PHP 7では完全に削除されました。['PDO'](https://secure.php.net/manual /en/book.pdo.php)または['mysqli_ *'](https://secure.php.net/manual/en/book.mysqli.php)を_prepared statements_と_parameter binding_で置き換えてください。詳細については、http://stackoverflow.com/q/12859942/354577を参照してください。 – Chris

答えて

1

あなたがに似てスキーマを持つ回答を保存するためにENUMタイプを使用することができますまず第一に:次に、PHPにあなたが行うことができます

CREATE TABLE answers (
    id int NOT NULL AUTO_INCREMENT, 
    q1 enum('true','false') DEFAULT 'false', 
    q2 enum('true','false') DEFAULT 'false', 
    q3 enum('true','false') DEFAULT 'false', 
    primary key (id) 
); 

を:

$question1 = $_POST['question1'] == 'A' ? 'true' : false; 
$question2 = $_POST['question2'] == 'A' ? 'true' : false; 
$question3 = $_POST['question3'] == 'A' ? 'true' : false; 

また、それは非常に重要です:

  • mysql_* PHP拡張モジュールは、ここ数年で廃止されてきたとも、もうPHP7で存在しません。 mysqli_*またはPDOにアップグレードすることを検討してください。
  • データベース入力をエスケープしていません。あなたはSQLインジェクションの危険にさらされています.Gabのユートピアの国では、懲役6年の懲役です。データベースの入力を逃れること、さらにはパラメータ化されたクエリを使用することは非常に重要です。
+0

私はこれでやるべきことがさらにあるように見えますが、おかげでトリックを行うべきです! –

関連する問題