2

i created an HTML form and trying to save the data from its fields to the database. Inputs, drop-down menus and radio button are stored correctly however the textarea is always added to the database as empty field. Here is the code:

HTML:

    <head>
    <link rel="stylesheet" type="text/css" href="feedback_form_style.css">
</head>
<form name="feedbackform" method="post" class="basic-grey" action="feedback_form_send.php">
<h1>Feedback form
    <span>Please answer the questions below.</span>
</h1>
<table width="450px">
</tr>
<tr>
    <td valign="top">
        <label for="School">School</label>
    </td>
    <td valign="top">
        <input type="text" name="School" placeholder="Name of your school" maxlength="50" size="30" required/> <! required not supported in Safari>
    </td>
</tr>

<tr>
    <td valign="top">
        <label for="Year">Year</label>
    </td>
    <td valign="top">
        <input type="text" name="Year" placeholder="Which year you are" maxlength="50" size="30"/>
    </td>
</tr>

<tr>
    <td valign="top">
        <label for="Gender">Gender</label>
    </td>
    <td valign="top">
        <select name="Gender">
            <option value="male"/>Male</option>
            <option value="female"/>Female</option>
        </select>
    </td>
</tr>
</table>

<p></p> <!emptyline>

<table>
<tr>
    <td valign="top">
        <label for="What do you think and engineer does">What do you think an engineer does? </label>
    </td>
</tr>
<tr>
    <td valign="top">
        <textarea name="What do you think an engineer does" placeholder="Your answer here" maxlength="1000" cols="60" rows="10"/></textarea>
    </td>
</tr>

<tr> <td><p></p></td></tr> <!emptyline>

<tr>
    <td valign="top">
        <label for="What was the most enjoyable part about the visit today?">What was the most enjoyable part about the visit today? </label>
    </td>
</tr>
<tr>
    <td valign="top">
        <textarea name="What was the most enjoyable part about the visit today" placeholder="Your answer here" maxlength="1000" cols="60" rows="10"></textarea>
    </td>
</tr>

<tr> <td><p></p></td></tr> <!emptyline>

<tr>
    <td valign="top">
        <label for="Was there anything you did not like?">Was there anything you did not like? </label>
    </td>
</tr>
<tr>
    <td valign="top">
    <input type="radio" name="Was there anything you did not like?" value="yes">Yes (plese give details below)
    &nbsp;
    <input type="radio" name="Was there anything you did not like?" value="no">No
    </td>
</tr>
<tr>
    <td valign="top">
        <textarea name="Was there anything you did not like (comment)?" placeholder="Details here" maxlength="1000" cols="60" rows="10"></textarea>
    </td>
</tr>

<tr> <td><p></p></td></tr> <!emptyline>

<tr>
    <td valign="top">
        <label for="Would you consider studying Engineering at university?">Would you consider studying Engineering at university? </label>
    </td>
</tr>
<tr>
    <td valign="top">
    <input type="radio" name="Would you consider studying Engineering at university?" value="yes">Yes
    &nbsp;
    <input type="radio" name="Would you consider studying Engineering at university?" value="no">No
    &nbsp;
    <input type="radio" name="Would you consider studying Engineering at university?" value="unsure">Unsure
    </td>
</tr>

<tr> <td><p></p></td></tr> <!emptyline>

<tr>
    <td valign="top">
        <label for="Has today's session inspired you to consider becoming an engineer?">Has today's session inspired you to consider becoming an engineer? </label>
    </td>
</tr>
<tr>
    <td valign="top">
    <input type="radio" name="Has today's session inspired you to consider becoming an engineer?" value="yes">Yes
    &nbsp;
    <input type="radio" name="Has today's session inspired you to consider becoming an engineer?" value="no">No
    &nbsp;
    <input type="radio" name="Has today's session inspired you to consider becoming an engineer?" value="unsure">Unsure
    </td>
</tr>

<tr> <td><p></p></td></tr> <!emptyline>

<tr>
    <td valign="top">
        <label for="Before today's session did you know much about engineering?">Before today's session did you know much about engineering? </label>
    </td>
</tr>
<tr>
    <td valign="top">
    <input type="radio" name="Before today's session did you know much about engineering?" value="yes">Yes
    &nbsp;
    <input type="radio" name="Before today's session did you know much about engineering?" value="no">No
    &nbsp;
    <input type="radio" name="Before today's session did you know much about engineering?" value="unsure">A little
    </td>
</tr>

<tr> <td><p></p></td></tr> <!emptyline>

<tr>
    <td valign="top">
        <label for="Has todays session taught you much about engineering?">Has todays session taught you much about engineering? </label>
    </td>
</tr>
<tr>
    <td valign="top">
    <input type="radio" name="Has todays session taught you much about engineering?" value="yes">Yes
    &nbsp;
    <input type="radio" name="Has todays session taught you much about engineering?" value="no">No
    &nbsp;
    <input type="radio" name="Has todays session taught you much about engineering?" value="unsure">A little
    </td>
</tr>

<tr> <td><p></p></td></tr> <!emptyline>

<tr>
    <td valign="top">
        <label for="Based on today's session, what do you think an engineer does?">Based on today's session, what do you think an engineer does? </label>
    </td>
</tr>
<tr>
    <td valign="top">
        <textarea name="Based on today's session, what do you think an engineer does?" placeholder="Your answer here" maxlength="1000" cols="60" rows="10"></textarea>
    </td>
</tr>

<tr> <td><p></p></td></tr> <!emptyline>

<tr>
    <td valign="top">
        <label for="Comments/Suggestions/Questions">Comments/Suggestions/Questions </label>
    </td>
</tr>
<tr>
    <td valign="top">
        <textarea name="Comments/Suggestions/Questions" placeholder="Enter your comments, suggestions and questions here" maxlength="1000" cols="60" rows="10"></textarea>
    </td>
</tr>

<tr> <td><p></p></td></tr> <!emptyline>

<tr>
    <td colspan="2" style="text-align:center">
        <input type="submit" class="submit" value="Submit">
    </td>
</tr>

<tr>
    <td colspan="2" style="text-align:center">
        Thank you for your feedback
    </td>
</tr>
<tr>
    <td colspan="2" style="text-align:center">
        © Girls in Engineering 2015
    </td>
</tr>

</table>

</form>

PHP:

$value = test_input($_POST['School']);
$value2 = test_input($_POST['What do you think an engineer does']);
$sql = "INSERT INTO form1 (input1,input2) VALUES ('$value', '$value2')";

if($_POST){
echo '<pre>';
print_r($_POST);
echo '</pre>';
}

Output from print_r($_POST):

Array
(
    [School] => 123
    [Year] => 
    [Gender] => male
    [What_do_you_think_an_engineer_does] => 234
    [What_was_the_most_enjoyable_part_about_the_visit_today] => 
    [Was_there_anything_you_did_not_like_(comment)?] => 
    [Based_on_today's_session,_what_do_you_think_an_engineer_does?] => 
    [Comments/Suggestions/Questions] => 
)

Thanks for your help.

23
  • Are you sure the test_input() function is working correctly? Try debugging its return value. var_dump($data) or print_r($data) Commented Sep 9, 2015 at 4:34
  • 2
    You can not do this: <textarea type="text", try just <textarea Commented Sep 9, 2015 at 4:35
  • @Chris test_input function works fine for other type of fields, but for textarea it does not print anything. Commented Sep 9, 2015 at 4:38
  • @Rasclatt i deleted type="text", still does not work Commented Sep 9, 2015 at 4:39
  • 1
    Also does anything show up in raw print of post?: print_r($_POST); Commented Sep 9, 2015 at 4:41

2 Answers 2

1

use name="Comments" in the textarea. as that is what the $_POST['Comments'] is linked to.

Suppose your code have

<textarea name="What was the most enjoyable part about the visit today" placeholder="Your answer here" maxlength="1000" cols="60" rows="10"></textarea>

your post should be $_POST['What was the most enjoyable part about the visit today']

if you want to pass Comments as an array

<textarea name="Comments[]" placeholder="Your answer here" maxlength="1000" cols="60" rows="10"></textarea>

Hint: Use thed code below for debugging on the page feedback_form_send.php to check what values were sent to it through post on submit;

if($_POST){
echo '<pre>';
print_r($_POST);
echo '</pre>';
}

EDITED

Advice: Your code is vulnerable to Sql injection. use PDO or mysqli instead of mysql

EDITED

my print shows with values

Array
(
    [School] => myschool
    [Year] => 2018
    [Gender] => male
    [What_do_you_think_an_engineer_does] => engineer sleeps
    [What_was_the_most_enjoyable_part_about_the_visit_today] => it was nice
    [Was_there_anything_you_did_not_like?] => yes
    [Was_there_anything_you_did_not_like_(comment)?] => too beutiful
    [Would_you_consider_studying_Engineering_at_university?] => yes
    [Has_today's_session_inspired_you_to_consider_becoming_an_engineer?] => no
    [Before_today's_session_did_you_know_much_about_engineering?] => unsure
    [Has_todays_session_taught_you_much_about_engineering?] => yes
    [Based_on_today's_session,_what_do_you_think_an_engineer_does?] => engineers do hard work
    [Comments/Suggestions/Questions] => no comments, i suggest to do things
)

So Your php variables should be assigned something like this. This is just a demonstration to make it understandable. Always do remember to sanitize the input before using

    $school=$_POST['School'];
    $year=$_POST['Year'];
    $gender=$_POST['Gender'];
    $whatengineerdoes=$_POST['What_do_you_think_an_engineer_does'];
    $enjoyable_part=$_POST['What_was_the_most_enjoyable_part_about_the_visit_today'];
    $youdontlike=$_POST['Was_there_anything_you_did_not_like?'];
    $didnotlike=$_POST['Was_there_anything_you_did_not_like_(comment)?'];
    $wouldyou=$_POST['Would_you_consider_studying_Engineering_at_university?'];
    $session_inspired=$_POST["Has_today's_session_inspired_you_to_consider_becoming_an_engineer?"];
    $before_session=$_POST["Before_today's_session_did_you_know_much_about_engineering?"];
    $has_taught=$_POST['Has_todays_session_taught_you_much_about_engineering?'];
    $based_on=$_POST["Based_on_today's_session,_what_do_you_think_an_engineer_does?"];
    $comments=$_POST['Comments/Suggestions/Questions'];

EDITED

HERE is example how you can insert the above data into your table

$dbhost = "localhost";
$dbname = "mydatabase";
$dbusername = "root";
$dbpassword = "mypppasss";
$link = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbusername,$dbpassword);
$statement = $link->prepare("INSERT INTO form1(input1,input2,input3,input4,input5,input6,input7,input8,input9,input10,input11,input12,input13)
    VALUES(:inp1,:inp2,:inp3,:inp4,:inp5,:inp6,:inp7,:inp8,:inp9,:inp10,:inp11,:inp12,:inp13)");
$statement->execute(array(
    inp1=>$school,
    inp2=>$year,
    inp3=>$gender,
    inp4=>$whatengineerdoes,
    inp5=>$enjoyable_part,
    inp6=>$youdontlike,
    inp7=>$didnotlike,
    inp8=>$wouldyou,
    inp9=>$session_inspired,
    inp10=>$before_session,
    inp11=>$has_taught,
    inp12=>$based_on,
    inp13=>$comments
));
Sign up to request clarification or add additional context in comments.

4 Comments

Debugging function prints all the values I entered in the form. however only first three of them (up to gender) are stored in the database.
could you add what you get though print_r and your insert query to the question :)
@user2758935 edited answer. see whether it solves :)
wc @user2758935 see i have edited again to introduce you to PDO. that's safe way to query to database . good luck :)
0
$comment = test_input($_POST['Comments']);
$sql = "INSERT INTO form1 (Comment) VALUES ('$comment')";
$res = mysql_query($sql);

2 Comments

Please consider editing your post to add more explanation about what your code does and why it will solve the problem. An answer that mostly just contains code (even if it's working) usually won't help the OP to understand their problem.
Please never do this, as it opens up for an extreme case of SQL injection!

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.