1

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 enter image description here

9
  • Any error into your browser console? What is the type of this variable? Commented Apr 13, 2014 at 5:49
  • I ask for the type because if it's a string you'll have to add quotes around the value, something like this : .value = '<?php echo htmlspecialchars($ans1);?>';. Also take care to escape quotes already included into the value, unless htmlspecialchars() does this job for you. Commented Apr 13, 2014 at 5:52
  • 4
    Stop posting the same answer everytime guys. Commented Apr 13, 2014 at 5:57
  • "Not in the textbox" is that because you're echoing the variable before using it in the JavaScript? You also specify a action to your post, so nothing will happen when you click the submit button because the pages script is halted to start the load of the new page. You need to clear the default submit behavior first, then do your javascript, and submit the form afterwards with .submit() See W3C School Documentation on submit() Commented Apr 13, 2014 at 6:11
  • 1
    @JordanThompson there is no such thing as W3C School its W3Schools, more importantly note that w3c has no affiliation with W3School. Commented Apr 13, 2014 at 6:17

4 Answers 4

2

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>
Sign up to request clarification or add additional context in comments.

1 Comment

Hey, using GLOBALS really worked....thank you so much! I really appreciate your help!! :)
2

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); ?>";

1 Comment

please check my edits in the question. Adding quotes isnt working as i have displayed through the image.
1

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>

6 Comments

Enter is called by buttons just before the textarea.
BTW It was my answer)))
Using json_encode is a better option than adding quotes since it automatically escape any quotes for you. E.g. document.getElementById('txt1').value = <?php echo json_encode(htmlspecialchars($ans1)); ?>;
@NoGray No. htmlspecialchars() is what you use. Especially to encode quotes as json_encode() will not do. Unless you don't want to do that, in which case htmlspecialchars(VAR, ENT_NOQUOTES) will still be faster. That's why for handling HTML on JSON you still use json_encode( htmlspecialchars(VAR, ENT_NOQUOTES) )
Guys,please check my edits in the question. Adding quotes isnt working as i have displayed through the image.
|
0

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
 });

JSFIDDLE

2 Comments

OK! Will try this!! Thanks!
@AkhileshBhatia Updated to be more reliant and use native functions.

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.