0

I am fetching the data from the MySQL table in a while loop, and inserting the form data into another MySQL table in action page in foreach, but I do not get the correct value of the radio button, I am attaching my code, please help.

<?php
$i = 1;
$j = 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'];
            ?>
            <input type="hidden" name="questionid[]" value="<?php echo $questionid; ?>" />
            <input type="hidden" name="question[]" value="<?php echo $question; ?>" />
            <?php 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>
                                                                                                                        ";
                $i++;
            } else if ($row['answer_type'] == "Comments") {
                echo "<textarea name='answer[]' cols='' rows=''></textarea>";
                $j++;
            }
            echo "<br />";
            ?>

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

Action File Code

foreach($_POST['questionid'] as $key=>$questionid){

$questionid = $_POST['questionid'][$key];
$answer = $_POST['answer'][$key];


$result3 = mysqli_query($con, "select question,answer_type from questions where question_id=$questionid;"); 
while($row = mysqli_fetch_array($result3)) {
$question = $row['question'];
$answer_type = $row['answer_type'];

if($answer_type == "Comments") {
$query2 = "insert into review_details (review_id,survey_id,question_id,question,answer_freeresponse) values(1,$_SESSION[surveyid],$questionid,'$question','$answer')";          
$result2 = mysqli_query($con,$query2);                                                          
if(!$result2) {
echo mysqli_error($result2);
}
}
else if($answer_type == "Ratings") {
$query2 = "insert into review_details (review_id,survey_id,question_id,question,answer_rating) values(1,$_SESSION[surveyid],$questionid,'$question',$key)";         
$result2 = mysqli_query($con,$query2);                                                          
if(!$result2) {
echo mysqli_error($result2);
}
}
}

$i++;
}

Output

enter image description here

I want to store the ratings displayed as a radio button, I guess its taking the counter incremented as variable $key, I don't know how to store the values of the radio button.

1 Answer 1

2

I guess you will get your radio button value as,

$ratingKey = "rating".$key;
$rating = $_POST[$ratingKey];

Than use $rating in your insert query instead of $key.

INSERT into review_details (review_id,survey_id,question_id,question,answer_rating) 
values(1,$_SESSION[surveyid],$questionid,'$question',$rating)
Sign up to request clarification or add additional context in comments.

6 Comments

hi! i have 4 questions in the survey, two of them have radio buttons as answer type and rest of two have textarea, so there should be 4 answers in the tabe after submit, but i do not get all of them, and only first 2 are correct.
So you not getting correct data for answer type Comments ?
for the first two questions (no matter rating or comments), i am getting the correct data, after 2 results, i am not getting correct values for either.
Can you var_dump($row) & check if you getting proper data for all 4 questions inside your while loop.
only 3 values are coming in var_dump($row) and all blank!
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.