PHP将数据库中的数据放入表单中

时间:2013-06-04 20:25:28

标签: php mysqli phpmyadmin

我是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,这取决于用户原始选择的值。

有什么想法吗?

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

要使用用户之前的答案填充调查问卷,您可以使用$row = mysqli_fetch_array($result);

<?php

... // all your other code 

$row = mysqli_fetch_array($result);
?>
<form name="questionnaire" action="submit_survey.php" method="post">
<input name="Q1" type="radio" value="1" <?php if($row['Public_Services'] == 1) echo 'checked="checked"'?>>1
<input name="Q1" type="radio" value="2" <?php if($row['Public_Services'] == 2) echo 'checked="checked"'?>>2
<input name="Q1" type="radio" value="3" <?php if($row['Public_Services'] == 3) echo 'checked="checked"'?>>3
<input name="Q1" type="radio" value="4" <?php if($row['Public_Services'] == 4) echo 'checked="checked"'?>>4

<input name="Q2" type="radio" value="1" <?php if($row['Politicians'] == 1) echo 'checked="checked"'?>>1
<input name="Q2" type="radio" value="2" <?php if($row['Politicians'] == 2) echo 'checked="checked"'?>>2
<input name="Q2" type="radio" value="3" <?php if($row['Politicians'] == 3) echo 'checked="checked"'?>>3
<input name="Q2" type="radio" value="4" <?php if($row['Politicians'] == 4) echo 'checked="checked"'?>>4
 </form>

或使用php for loop

<?php

... // all your other code 

$row = mysqli_fetch_array($result);

echo '<form name="questionnaire" action="submit_survey.php" method="post">';
for($i=1;$i<=4;$i++){
    echo '<input name="Q1" type="radio" value="'.$i.'"';
    if($row['Public_Services'] == $i) echo 'checked="checked"';
    echo " />".$i."<br />\n";
}
echo "<br />\n";
for($i=1;$i<=4;$i++){
    echo '<input name="Q2" type="radio" value="'.$i.'"';
    if($row['Politicians'] == $i) echo 'checked="checked"';
    echo " />".$i."<br />\n";
}
echo "</form>";
?>

答案 1 :(得分:1)

您可以将表单的结果作为HTML本身的值输出,或者您可以通过PHP创建一个小的Javascript片段,一旦表单加载就会设置适当的值。第二种方法更清晰,但您的客户需要支持Javascript才能使用。这通常不是问题,除非他们明确禁用了Javascript,在这种情况下,该页面只是不会显示表单数据。

使用jQuery,您可以执行以下操作:

$(function() {
  <?php
  if (isset($foo))  { // foo is a value from your database
    echo '$("#fooField").val("' . $foo . '")';
  }

  // ....more fields here
  ?>
}

因此,上述代码将在加载时输出jQuery代码,该代码将为所有表单元素设置适当的值

答案 2 :(得分:0)

您可以在html中包含标签,并根据值回显表单。 或者你只是回应每一行。

编辑:您可能会看一下:http://php.net/manual/en/control-structures.alternative-syntax.php