reiver
reiver

Reputation: 117

Get select value in the same page

I have this select button:

<form method="post">
    <label>
        <select id="label" name="challengeX" style="margin-top:150px;">
            <option selected value="0"> Global Statistics </option>
            <option value="1">Challenge 1</option>
            <option value="2">Challenge 2</option>
            <option value="3">Challenge 3</option>
        </select>
    </label>
</form>

In the same page, few lines bellow, I have:

<div id="challenge">
    <?php
        $Ch = $_POST['challengeX']; 
        echo "Challenge: ".$Ch;

        showSomething($Ch,1,1);
    ?>
</div>

But when I change the option, it didn't change the post value.

Upvotes: 0

Views: 8411

Answers (4)

Punitha Subramani
Punitha Subramani

Reputation: 1477

In the way you can use Javascript. If you dont want to use any server like PHP or something

<form method="post">
  <label>
    <select id="label" name="challengeX" style="margin-top:150px;">
        <option selected value="0"> Global Statistics </option>
        <option value="1">Challenge 1</option>
        <option value="2">Challenge 2</option>
        <option value="3">Challenge 3</option>
    </select>
    <input type="submit" /> /* add this line */
 </label>
</form>

By Javascript

  <select id="label" name="challengeX" style="margin-top:150px;" onChange="getSelect(this)">
    <option selected value="0"> Global Statistics </option>
    <option value="1">Challenge 1</option>
    <option value="2">Challenge 2</option>
    <option value="3">Challenge 3</option>
  </select>
  <div id="resultSelect"></div>
  <script>
    function getSelect(thisValue){
        document.getElementById('resultSelect').innerHTML=thisValue.options[thisValue.selectedIndex].text;
    }
  </script>

Upvotes: -1

Quentin
Quentin

Reputation: 944500

PHP runs on the server and delivers HTML (or other data) to the browser.

If you want to process the form data with PHP then you must include it in a new HTTP request (typically by submitting the form) and have PHP generate a new page using that data.

Alternatively, if you want to process the data on the client then you will need to use a programming language that is supported in the browser. Unless you want to start using plugins (or browser specific technologies), that limits you to JavaScript. You can bind a change event listener to the select element and then manipulate the DOM with the results.

Upvotes: 0

Awlad Liton
Awlad Liton

Reputation: 9351

you need to submit form on change of dropdown.

Change html like this:

<form method="post">
    <label>
        <select id="label" name="challengeX" style="margin-top:150px;" onchange="this.form.submit()">
            <option selected value="0"> Global Statistics </option>
            <option value="1">Challenge 1</option>
            <option value="2">Challenge 2</option>
            <option value="3">Challenge 3</option>
        </select>
    </label>
</form>

for your php execution you can try like this:

<div id="challenge">
    <?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {


        $Ch = $_POST['challengeX']; 
        echo "Challenge: ".$Ch;

        showSomething($Ch,1,1);

       function  showSomething($Ch,1,1){

         //do your stuff
       }
 }
    ?>
</div>

Upvotes: 1

Jenz
Jenz

Reputation: 8369

$Ch = $_POST['challengeX'];

won't get value until you submit the form. Add a submit button to your form.

<form method="post" action="">
    <label>
        <select id="label" name="challengeX" style="margin-top:150px;">
            <option selected value="0"> Global Statistics </option>
            <option value="1">Challenge 1</option>
            <option value="2">Challenge 2</option>
            <option value="3">Challenge 3</option>
        </select>
    </label>
    <input type="submit" value="Submit">
</form>

And access the form values in the same page only if the form is submitted.

<div id="challenge">
    <?php
        if(isset($_POST))    // checks whether any value is posted
        {
          $Ch = $_POST['challengeX']; 
          echo "Challenge: ".$Ch;
          showSomething($Ch,1,1);
        }
    ?>
</div>

Upvotes: 2

Related Questions