Abiel Muren
Abiel Muren

Reputation: 375

Show specific modal depending on PHP url variable

How I can show a specific modal depending on a variable in php which is modified in the url.

I'm using as responsive framework Bootstrap.

I have a page containing several modals, each corresponding to a product. I need to make a link from other parts of the site to go to page "products.php" and automatically display the required product.

E.g:

href="products.php?prod=1"

So far, I have only succeed in showing the modal when loading the page, but if I add or change the variable, it has no effect, not working at all.

This is what I have:

At the beginning

<?php
    //Variable to choose which modal to show, default = 1
    $prod = 1;
?>

Then the modal which has an id for identification.

<div class="modal fade" id="product1" tabindex="-1" role="dialog" aria-hidden="true">
    <!-- Content of the modal -->
</div>

Then the script that show the modal when the page loads.

<script type="text/javascript">

    $(document).ready(function(){
        <?php if ($prod == 1) {
            echo "$(document).ready(function () {var a = 'PD1'; alert(a); });";
            echo "$('#product1').modal('show');";
        }elseif ($prod == 2) {
            echo "$(document).ready(function () {var a = 'PD2'; alert(a); });";
            echo "$('#product2').modal('show');";
        };
        ?>
    });

</script>

Any idea?

Upvotes: 2

Views: 1339

Answers (2)

Shehary
Shehary

Reputation: 9992

You are doing opposite, should be

<?php if ($prod == "1") { ?>

    <script type="text/javascript">
    $(document).ready(function(){
         var a = 'PD1';
         alert(a);
        $('#product1').modal('show');
    });
    </script>

<?php } elseif ($prod == "2") { ?>

    <script type="text/javascript">
    $(document).ready(function(){
          var a = 'PD2';
          alert(a);
          $('#product2').modal('show');
    });
    </script>

<?php } ?>

Upvotes: 0

Jim_M
Jim_M

Reputation: 273

You not gathering the value of the product variable from the URI. To accomplish this at the top of the page where you have $prod=1; you can put the following line of code :

$prod = (isset($_GET['prod']))?$_GET['prod']:"1";

This tells the system to get the value of the prod= in your url if it can't find it then use "1" as a default.

This is not the ideal answer, there are quite a few reasons not to access $_GET/$_POST variables in this way without proper filtering. I leave that for you to research.

Upvotes: 2

Related Questions