将多行插入到从while循环中获取的mysql

时间:2014-04-07 07:22:05

标签: php mysql ajax

我是stackoverflow的新手,对于这个问题的标题有点困惑,但让我解释一下我的问题。

我正在开发调查系统,我可以选择让管理员从后端输入问题和答案,所以在前端我正在使用表格中的while循环显示问题和答案。

我的问题是如何编写代码以在mysql中输入多个值(由客户填写的调查)。我在这里附上我的代码。

$(function() {
    $('form').bind('submit', function(){
        $.ajax({
            type: 'post',
            url: "/prs/pageCode.php",
            data: $("form").serialize(),
            success: function() {
                alert("Data Saved, Press Next!");
            }
        });
        return false;
    });
});

表格在

之下
<form name="form" id="form" class="form-horizontal" action="#"
method="POST">
<fieldset>
    <div class="control-group">
        <label class="control-label" for="focusedInput">Name</label>
        <div class="controls">
            <input name="pname" class="input-xlarge focused" id="focusedInput"
                type="text" value="" required>
        </div>
    </div>
    <div class="control-group">
        <label class="control-label" for="email">Email</label>
        <div class="controls">
            <input name="pemail" class="input-xlarge focused" id="focusedInput"
                type="text" value="" required>
        </div>
    </div>
    <div class="control-group">
        <label>We would like to post your comments to internet rating sites,
            while we may use your name or an alias name. Please select your
            desire:</label>

    </div>
    <div class="control-group">
        <label class="control-label" for="focusedInput"></label>
        <div class="controls">
            <p>
                <label> <input type="radio" name="choice" value="yes" id="choice_0">
                    Yes, use my name as entered above
                </label> <label> <input type="radio" name="choice" value="no"
                    id="choice_1" onChange="enabletextbox();"> Use the alias name, as
                    I enter below
                </label> <input id="alias" name="alias" type="text"
                    class="input-xlarge focused">
            </p>
        </div>

    </div>
</fieldset>
</div>


<div class="tab-pane" id="tab2">

    <fieldset>
        <?php
        $i=1;
        while($row=mysqli_fetch_array($questions)){
            ?>
        <div class="control-group">

            <label class="control-label" for="focusedInput">(<?php echo $i;?>) <?php 
            $questionid = $row['question_id'];
            $question = $row['question'];
            echo $row['question']; ?></label>
            <div class="controls">
                <?php 
                if($row['answer_type']=="Ratings") {
                    echo "
                    <p>

                    Low<input type='radio' name='rating$i' value='1' id='rating_0'>
                    <input type='radio' name='rating$i' value='2' id='rating_1'>
                    <input type='radio' name='rating$i' value='3' id='rating_2'>
                    <input type='radio' name='rating$i' value='4' id='rating_3'>
                    <input type='radio' name='rating$i' value='5' id='rating_4'>High

                    </p>
                    ";
                }
                else if ($row['answer_type']=="Comments") {
                    echo "<textarea name='answer' cols='' rows=''></textarea>";
                }
                $i++;
                echo "<br />";

                $query2 = "insert into review_details (review_id,survey_id,question_id,question,answer_rating,answer_freeresponse) values (1,$surveyid,$questionid,'$question','$rating$i','$_POST[answer]')";


                $result2 = mysqli_query($con,$query2);

                if(!$result2) {
                    echo mysqli_error($result2);
                }


                ?>

            </div>
        </div>
        <?php }?>
    </fieldset>

</div>



<div class="tab-pane" id="tab3">
    <fieldset>
        <div class="control-group">
            <label class="control-label" for="focusedInput">Testimonial about
                your care by <?php echo $_SESSION['doctorname'];?>
            </label>
            <div class="controls">
                <textarea name="review" cols="5" rows="5" required></textarea>
            </div>

        </div>
        <div class="form-actions">
            <input type="submit" class="btn btn-primary"
                value="Save & Press Finish"></input>
        </div>
    </fieldset>

pageCode.php

<?php
session_start();

require_once('config.php');

$con=mysqli_connect(HOST,USER,PASSWORD,DATABASE);
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$alias = $_POST['choice'];    
if($alias=="yes")
    $aliasname = $_POST['pname'];
else
    $aliasname = $_POST['alias'];       
$sql="INSERT INTO reviews (doctor_id,doctor_name,survey_id,name,email,display_name,overall_review)
    VALUES
    ('$_SESSION[doctorid]','$_SESSION[doctorname]',$_SESSION[surveyid],'$_POST[pname]','$_POST[pemail]','$aliasname','$_POST[review]')";
$result = mysqli_query($con,$sql);

//$result2 = mysqli_query($con,$_SESSION['insertallquery']);

if(!$result) {
    echo mysqli_error($result);
}

?>

我实际上想将答案插入客户填写的数据库中。

2 个答案:

答案 0 :(得分:1)

您需要将答案存储在review表格或单独的表格中。

但总的来说,据我所知,你有questions question ids的单独表格。

因此,您需要在review表中添加列,或者使用question id作为字段名称添加单独的表。

并将相应答案存储在该用户的那些列中。

例如。考虑在现有reviews表中添加列:

INSERT INTO reviews (doctor_id,doctor_name,survey_id,name,email,display_name,overall_review,q1,q2,q3...)

根据您提出的问题数量等等。

此外,当您向questions表添加新问题时,您必须确保使用ALTER TABLE添加此表中的列。


要获得答案,因为问题在while循环中,请创建一个数组。 并使用迭代数组的while循环将这些值插入到mysql中。

while循环中的查询将如下所示:

 INSERT INTO reviews (q.$i) VALUES ($answer[$i]) WHERE docter_id='$_SESSION[doctorid]'

答案 1 :(得分:0)

你可以从ID /类名或标签名中获取值然后你可以将它存储在一个数组中然后你可以将它传递给你的jquery代码($ .ajax)或($ .post)然后接受数组变量在你的javascript中声明 但我们的标签必须包含临时索引值示例。

另一种方法是将答案作为JSON传递然后你可以在php中使用json_encode来访问答案