D3_JMultiply
D3_JMultiply

Reputation: 1080

Change Form Elements Depending On Selected Option

I have seen several sites where there is a form, starting with a dropdown box, and depending on the box chosen there is different form elements, for example, let's say I wanted to make an uploader script, the dropdown box might hold:

Upload
Delete

And is Upload is selected I would want a browse file element, while with Delete selcted maybe only the name should be imputted into a text field. How can I make it do so? I plan on using php for it and using the echo syntax to create the html for the forms, but is ther a way to have, for example an if statment, that changes the other form elements that show based on the option selected.

I have seen people use jQuery for it, but I can ONLY use PHP ad HTML for my project.

Upvotes: 0

Views: 4304

Answers (4)

CBusBus
CBusBus

Reputation: 2357

This isn't a direct solution but if you intend on carrying out this task exclusively with php/html then you should consider setting up a system such as this in the php file which serves the page.

<?php

/*Check to see if the user has submitted the form*/
if(isset($_POST['action']))
    $action = $_POST['action'];

/*If no action has been sent from the client side, generate form*/
if(!isset($action)){ ?>
    <form name="test" action="example.php" method="POST">
        <select name="action">
            <option value="update">Update</option>
            <option value="delete">delete</option>
        </select>
    </form>
<?}

/* if update action, load file dialog*/
elseif($action == "update"){?>
    <!-- relevant HTML or action for file load -->
<?}

/*Default to delete*/
else{?>
    <!-- some action to place the input field -->
    <input name="fileName" value="<? echo $FILE_NAME; ?>" />
<?}
?>

Essentially you're going to have to handle both page serving and form processing within the one page, using the value from the form select element to determine which blocks of HTML need to be loaded. Note that you will still have to provide a submit button for the form in order to trigger the action since there's no javascript events.

I want to distance myself from this solution as I know of it only through experiencing the Dunning Kruger effect and I'm sure the lack of client side involvement will be frowned upon by most.

Upvotes: 3

Andrew Cooper
Andrew Cooper

Reputation: 32596

You can't do what you want in purely server-side code without some sort of submission from the browser to trigger the check. PHP code runs on the server and returns the page to the browser. Once the page has left the server there's nothing PHP can do to it.

Sites I've seen that do this kind of thing on the server-side reload usually have an initial page where you choose the action you want, and then load the form for the chosen action. That's really all you can do without some kind of javascript on the client side.

If you can use javascript then you have many more options:

  1. Trigger a reload of the form when the drop-down box is changed.
  2. Send an ajax request when the drop-down box is changed and dynamically add the HTML returned by the server to the form.
  3. Send fields for all options in the original page, and use the change event on the drop-down to show/hide the relevant fields.

Based on your comments to other answers there seems to be some confusion as to the role of javascript in the application. The server doesn't need to know about Javascript, or even JQuery. The server runs your PHP code to build the HTML for your page. The HTML can reference CSS stylesheets, images, Javascript files, etc, which, as far as the server is concerned, are just static files requested by the browser. Once the client browser gets the javascript file from the server it can execute it and enable whatever dynmiac page behaviour is intended. There is no Javascript code in your server-side application. The application is just a bunch of PHP files, with a collection of other static files to support the generated HTML.

Upvotes: 1

Silvertiger
Silvertiger

Reputation: 1680

jQuery is just a pre-written javascript subset, are you not allowed to use javascript? if you can not use it, then your ability for dynamic pages diminishes greatly.

AJAX uses javascript as well and is the solution I use to load dynamic content. do you need examples or a way to do this without javascript.

Upvotes: 0

puelo
puelo

Reputation: 25

Im no expert, but i guess since PHP is a Server-Side Scripting Language, there is no way to do this purely in php, other than to reload the page evertime you switch the dropdown option. Maybe you could accomplish it with frames (but who wants to use those?).

Upvotes: 1

Related Questions