0

私は 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 を実行するようなことができるかどうか疑問に思っていました。

何かご意見は?

助けてくれてありがとう!

4

3 に答える 3