Reputation: 141
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)
<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
<input type="radio" name="Would you consider studying Engineering at university?" value="no">No
<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
<input type="radio" name="Has today's session inspired you to consider becoming an engineer?" value="no">No
<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
<input type="radio" name="Before today's session did you know much about engineering?" value="no">No
<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
<input type="radio" name="Has todays session taught you much about engineering?" value="no">No
<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.
Upvotes: 2
Views: 1425
Reputation: 6773
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
));
Upvotes: 1
Reputation: 261
$comment = test_input($_POST['Comments']);
$sql = "INSERT INTO form1 (Comment) VALUES ('$comment')";
$res = mysql_query($sql);
Upvotes: 0