私は PHP に比較的慣れていないので、練習プロジェクトとして基本的な調査に取り組んでいます。
ユーザーがログインして質問に答えると、データがデータベースに送信されます。ここまでは順調ですね。
ただし、ログインの設定は調査を行うためだけのものなので、いつでも戻って回答を変更できるようにしてほしい.
ユーザーがデータベースの情報を既に入力しているかどうかを確認し、以前に入力したことがある場合は新しい行を追加するのではなく、値を編集するように設定しました。
しかし、私は今、彼らが行った選択を見て編集できるようにしたいと考えています.
データを取得してページにエコーする方法は知っていますが、ユーザーの以前の選択で設定されたデフォルト値でフォームを表示する方法がわかりません。
表示上の問題についてはお詫びします。少し不安定です。
たとえば、次のようになります。
<?php if(!isset($_SESSION['username'])){
// are logged in
header("location:login.php");
} ?>
<form name="questionnaire" action="submit_survey.php" method="post">
<input name="Q1" type="radio" method="post" value="1">1
<input name="Q1" type="radio" method="post" value="2">2
<input name="Q1" type="radio" method="post" value="3">3
<input name="Q1" type="radio" method="post" value="4">4
<input name="Q2" type="radio" method="post" value="1">1
<input name="Q2" type="radio" method="post" value="2">2
<input name="Q2" type="radio" method="post" value="3">3
<input name="Q2" type="radio" method="post" value="4">4
</form>
データベースへの PHP 送信:
include('db_login2.php');
$con = mysqli_connect("$host", "$username", "$password", "$db_name");
if(mysqli_connect_errno($con)) {
echo "failed to connect" . mysql_connect_error();
}else {
$username = $_SESSION['username'];
//Question 1.1
$Q1 = $_POST['Q1'];
$Q2 = $_POST['Q2'];
//INJECTION PREVENTION (Not shown)
$resulting = mysqli_query($con, "SELECT username FROM users WHERE username='$username'");
$counting = mysqli_num_rows($resulting);
if($counting != 0){
mysqli_query($con,"UPDATE users SET Public_Services='$Q1', Politicians='$Q2'
WHERE username='$username'");
$_SESSION['completed'] = true;
header("location:login.php");
mysqli_close($con);
} else {
$sql= "INSERT INTO users(username, Public_Services, Politicians)
VALUES ('$username','$Q1', '$Q2')";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
//if it works
$_SESSION['completed'] = true;
header("location:loggedin.php");
mysqli_close($con);
}
}
?>
データベースからデータを取得するための PHP
include('db_login2.php');
$con = mysqli_connect("$host", "$username", "$password", "$db_name");
if(mysqli_connect_errno($con)) {
echo "failed to connect" . mysql_connect_error();
}else {
$username = $_SESSION['username'];
$result = mysqli_query($con,"SELECT * FROM users WHERE username='$username'");
echo $row = mysqli_fetch_array($result);
mysqli_close($con);
}
?>
ユーザーの最初の選択の値に応じて、html 形式でインライン php を実行するようなことができるかどうか疑問に思っていました。
何かご意見は?
助けてくれてありがとう!