0

I wrote a code, but it doesn't work.

Code:

<?php
$number = $_GET["tel"];
echo '<form action="/" method="get">
         <a>Enter the phone number, what you want to call</a>
         <input type="tel" name="tel"/>
         <input type="submit" onclick="call()" value="Call"/>
      </form>
      <script>
          function call() {
              window.open("tel:$number");
          }
      </script>
';
Vadim Kotov
  • 8,084
  • 8
  • 48
  • 62
Bence8OS
  • 11
  • 1
  • 1
  • 2
  • 1
    you're mixing php and javascript. when the user hits the submit-button, the javscript function gets called, but that doesn't have any value for `$number` yet; because this would only be set if after the form is submitted. – Jeff Dec 27 '15 at 13:33

1 Answers1

2

In PHP, variables in strings are only allowed in double quotes. Change your single quotes to double quotes to make the $number work in the string.

See this SO post for more details.

Therefore, your code should look like:

<?php
    $number = $_GET["tel"];
    echo "<form action='/' method='get'>
                <a>Enter the phone number, what you want to call</a>
                <input type='tel' name='tel' />
                <input type='submit' onclick='call()' value='Call' />
            </form>
            <script>
                function call() {
                    window.open('tel:$number');
                }
            </script>
        ";
?>

But this code is strange. Here's how it flows:

  1. get $_GET variable tel (assuming form has already been sent)
  2. echo out the form
  3. on form submit, the number in the $_GET["tel"] is visited, not the number in the form
  4. then, the form gets submitted, but this doesn't work because the window.open() has occurred already

Here's an alternate solution without PHP (and without an actual form send):

<form action='/' method='get'>
<a>Enter the phone number, what you want to call</a>
    <input type='tel' name='tel' />
    <input type='submit' onclick='call();return false;' value='Call' />
</form>
<script>
    function call() {
        var number = document.querySelector("input[name=tel]").value;
        window.open('tel:' + number);
    }
</script>

See it working at JSFiddle.net.

Community
  • 1
  • 1
Jonathan Lam
  • 16,831
  • 17
  • 68
  • 94
  • It opens a new page, and the url is tel:, so it doesn't works – Bence8OS Dec 27 '15 at 14:12
  • @Bence8OS Your code is a bit confusing: You try to send the form to PHP, which will put the variable in the JS. Instead, all you need is JS. I'll show an example. You don't need PHP at all – Jonathan Lam Dec 27 '15 at 14:16