I have a PHP snippet which generates the required output in a variable $ans1
. What I want to do is print this variable $ans1
in a <textarea>
. I tried to write the following code but it generates the output as usual and not in the textbox. The following is my PHP code:
while($row = mysqli_fetch_array($result)) {
if($submit3 == "Positive") {
$ans1 = $row['reply_yes'];
echo $ans1;
} else if($submit3 == "Negative") {
$ans1 = $row['reply_no'];
echo $ans1;
}
echo "<br/>";
break;
}
And following is my HTML code:
<form method="post" action="fetch_page.php">
<input type="submit" name="submit1" value="Positive" onclick="enter()"/>
<input type="submit" name="submit2" value="Negative" onclick="enter()"/>
<textarea name="txt1" cols="66" rows="10" id="txt1"> </textarea>
<script>
function enter()
{
document.getElementById('txt1').value= <?php echo htmlspecialchars($ans1);?>;
}
</script>
</form>
Please tell me where am I going wrong.
Adding quotes like this isnt working either
document.getElementById('txt1').value= "<?php echo htmlspecialchars($ans1);?>";
As you can see in the following image, the answer(the not bold part) should get printed in the textbox also according to my html code
You can add the text you want to be displayed in the textarea between the <textarea>
tag.
<textarea name="txt1" cols="66" rows="10" id="txt1">
<?php echo $ans1; ?>
</textarea>
If the text still doesn't appear or you get an error then make sure you access variables from the global scope. Like below.
<textarea name="txt1" cols="66" rows="10" id="txt1">
<?php echo $GLOBALS['ans1']; ?>
</textarea>
You need to add quotes
around the echoed value:
document.getElementById('txt1').value = "<?php echo htmlspecialchars($ans1);?>";
And your script should be situated in <head>
Edit
What about using this:
document.getElementById('txt1').value = "<?php Print($ans1); ?>";
You didn't surround the php with quotes. The following works:
<form method="post" action="fetch_page.php">
<input type="submit" name="submit1" value="Positive" onclick="enter()"/>
<input type="submit" name="submit2" value="Negative" onclick="enter()"/>
<textarea name="txt1" cols="66" rows="10" id="txt1"> </textarea>
<script>
function enter()
{
document.getElementById('txt1').value = "<?php echo htmlspecialchars($ans1); ?>";
}
</script>
</form>
Your question is not a PHP problem. You can't see any output from the function because your script is halted upon submission! So change the submit buttons to type="button"
and add a ID, then use the script below. Using jQuery (to minimize t he code you need to write) and use a timeout to actually have time for the function be able to display the results.
$(".button").click(function() {
var buttonName = $(this).attr('name'),
elm = $(this);
$('#txt1').val( buttonName + ' was clicked.' ); // Add response
setTimeout(function(){
elm.get(0).form.submit(); // Submit form
}, 5000); // After 5 seconds
});