Crazy Developer
Crazy Developer

Reputation: 105

select box value changes on form reloading with php validation

I need a solution for this. Here I want to validate form elements. I did it with PHP but what my problem is on clicking submit button validation process takes place but select box value changes to select dept. FOR EXAMPLE, if you just click submit button without giving student id by only select dept.. the message shows enter studentid but select box value changes to select dept again as it page reloads first..

php:

if($_POST['submit']!='')
{
    $c=0;
    if($_POST['studid']=='' ) {
        $msg_id="Enter stud id";
        $c++;
    }
    if($_POST[studdept]=='') {
        $msg_dept="Enter stud dept";
        $c++;
    }
    if($c==0) {
        echo "form has been submitted..";
    }
}

HTML:

<form id="myform" action="" method="post">
    <table>
        <tr>
        <td> Studid: *</td> <td> <input type="text" name="studid" maxlength="10" value="<?=$_POST[studid]?>"> </td> <td> <?php echo $msg_id; ?> </td> </tr>
        <tr>
            <td> StudDept: *</td>
            <td>
                <select name="studdept">
                    <option value="" selected="selected" >select dept</option>
                    <option value="cse" >cse</option>
                    <option value="eee" >eee</option>
                    <option value="mech" >mech</option>
                    <option value="ece" >ece</option>
                </select>
            </td>
            <td><?php echo $msg_dept; ?> </td>
        </tr>
        <tr>
            <td><input type="submit" name="submit" value="submit"> </td>
        </tr>
    </table>
</form>

can someone help me here?

Thanks in Advance...

Upvotes: 1

Views: 2405

Answers (4)

Smile
Smile

Reputation: 2758

You have to generate your <option></option> list through loop (if you're generating Department list from Database Table) where you have to put condition which you had put it for first <option> pair.

Or You can put a Turnary Operator (if you're using static list).

<select name="studdept">
    <option value="none" <?php echo ($_REQUEST['studdept']=='none'?'selected="selected"'):'';?> >select dept</option>
    <option value="cse" <?php echo ($_REQUEST['studdept']=='cse'?'selected="selected"'):'';?> >cse</option>
    <option value="eee" <?php echo ($_REQUEST['studdept']=='eee'?'selected="selected"'):'';?> >eee</option>    
    <option value="mech" <?php echo ($_REQUEST['studdept']=='mech'?'selected="selected"'):'';?> >mech</option>
    <option value="ece" <?php echo ($_REQUEST['studdept']=='ece'?'selected="selected"');:''?> >ece</option>
</select>

And use $_REQUEST instead $_GET or $_POST.

Upvotes: 2

DS9
DS9

Reputation: 3033

Beacause you use method POST for send data and you are trying to get value using $_GET['studdept'].

so you have two ways:

(1) just change the method to GET or
(2) change $_GET['studdept'] to $_POST['studdept'].

Upvotes: 0

nytrm
nytrm

Reputation: 509

Your specifies that the form data will be submitted using the POST method.

The way that PHP does this is to store all the "posted" values into an associative array called "$_POST". Be sure to take notice the names of the form data names, as they represent the keys in the "$_POST" associative array.

Use: $_POST['studdept'] instead of: $_GET['studdept']

Upvotes: 0

Daniel
Daniel

Reputation: 446

The method of your form is POST and you are trying to get the department using GET <? echo ($_GET['studdept'] == 'cse' ? 'selected="selected"' : '') ?>.

Anyway, you'll need to improve your HTML so you check if any of the deptartments are selected (not just 'cse'). A for/while loop will do the job.

In addition, I would add " " to the post variables, as you did in if($_POST['studid']=='' ) (but you didn't in if($_POST[studdept]==''))

Upvotes: 0

Related Questions