JohnG
JohnG

Reputation: 497

How to display text on dropdown select

I'm trying to do something very simple in PHP, but keep getting an error message. Essentially, when someone selects "Cat", I want "Miaow" to appear.

My idea was:

<select name="demo">
  <option value="Dog">Dog</option>
  <option value="Cat">Cat</option>
  <option value="Fish">Fish</option>
</select>

<?php if ($_POST['demo'] == 'Cat') { echo 'Miaow'; } ?>

However, in PHPFiddle,

I get 'E_NOTICE : type 8 -- Undefined index...'

as soon as the code runs. Am I missing something basic? Thanks!

Upvotes: 2

Views: 1705

Answers (3)

RyhanRakib
RyhanRakib

Reputation: 1

Maybe this will help, I write some block as far as I understand...

  <form action="#" method="post">
    <select name="demo">
          <option value="Dog">Dog</option>
          <option value="Cat">Cat</option>
          <option value="Fish">Fish</option>
    </select>
    <input type="submit" name="sub" />
</form>
<?php 
    if(isset($_POST['sub'])){
        if($_POST['demo'] == "cat"){
            echo "Miao";
        }
    }
?>

Upvotes: 0

rybo111
rybo111

Reputation: 12588

Is it even possible to do this using PHP so that "Miaow" comes up automatically on select, rather than having to submit the form?

You are looking for JavaScript code, not PHP. Here is a jQuery example:

$(document).on('change', '.animals', function(){
  $('.noise-target').html( $('option:selected', this).data('noise') );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="animals">
  <option>Select</option>
  <option data-noise="Woof">Dog</option>
  <option data-noise="Meow">Cat</option>
</select>
<div class="noise-target"></div>

Upvotes: 0

Florian Lemaitre
Florian Lemaitre

Reputation: 5748

Your form might be passing data by $_GET instead of $_POST. Did you specify the method ?

<form method="post" action="index.php">
    <select name="demo">
      <option value="Dog">Dog</option>
      <option value="Cat">Cat</option>
      <option value="Fish">Fish</option>
    </select>
    <input type="submit" value="Submit">
</form>

You can var_dump($_POST); and var_dump($_GET); to see what those variables contains in your PHP file.

Or you can do it in javascript like this :

function animal(value) {
  if(value == "Cat") {
    document.getElementById("myAnimal").innerHTML = "Miaouw";
  } else {
    document.getElementById("myAnimal").innerHTML = "Rooooah";
  }
}
<form action="#">
    <select name="demo" onchange="animal(this.value)">
        <option value="Dog">Dog</option>
        <option value="Cat">Cat</option>
        <option value="Fish">Fish</option>
    </select>
</form>
<span id="myAnimal"></span>

Upvotes: 1

Related Questions