0

I am fetching subject details of student based on name and admission_year which is getting from ajax call but ajax can not give success response so subject field can not display subject. Plz need solution how to get success message. Is there any wrong in my coding? The whole coding is shown below. script:

<script type="text/javascript">
    $('#branch_name,#class_name').on('change', function(){
    //gender_new = $('#gender_new option:selected').val();

    class_name = $('#class_name option:selected').val();
    branch_name = $('#branch_name option:selected').val();
    name=$('#name').val();
    admission_year=$('#admission_year').val();

    $.ajax({
        type :'POST',
        dataType:'json',
        data : { class_name : class_name, branch_name : branch_name, name : name, admission_year : admission_year },
        url : 'tc_search.php',
        success : function(result){
         $('#subject1').val(result['subject1']);
         $('#subject2').val(result['subject2']);

        }
    });

});
</script>

tc_search.php

<?php
include('connection.php');

$class_name=$_POST['class_name'];
$admission_year=$_POST['admission_year'];
$name=$_POST['name']
$branch_name=$_POST['branch_name'];

$query = "SELECT * FROM admit_senior WHERE name = '$name' and admission_year='$admission_year'";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
echo json_encode($row);

?>

html:

<input type="hidden" class="form-control" id="admission_year" name="admission_year" readonly <?php echo "value='{$row1['admission_year']}' "?>/>

    <div class="form-group">
    <label class="col-sm-3 control-label">Name :</label>
    <div class="col-sm-3">
    <input type="text" class="form-control" id="name" name="name" <?php echo "value='{$row1['name']}' "?>/>
    </div>
    </div>
    <div class="form-group">
    <label class="col-sm-3 control-label">2) He/She appeared/did not appear examination:</label>
    <label class="col-sm-3 control-label">Branch Name:</label>
    <div class="col-sm-3">
    <select id="branch_name" name ="branch_name" class="form-control">
    <option selected disabled readonly>Select branch</option>
    <option value="B.A">B.A</option>
    <option value="B.Com">B.Com</option>
    </select>
    </div>
    </div>

    <div class="form-group">
    <label class="col-sm-3 control-label">Class Name:</label>
    <div class="col-sm-3">
    <select id="class_name" name ="class_name" class="form-control">
    <option selected disabled readonly>Select Class</option>
    <option value="Part-I">Part-I</option>
    <option value="Part-II">Part-II</option>
    <option value="Part-III">Part-III</option>
    </select>
    </div>
    </div>

    <div class="form-group">
    <label class="col-sm-1 control-label">1.</label>
    <div class="col-sm-3">
    <input type="text" class="form-control" name="subject1" id="subject1"/>
    </div>

    <label class="col-sm-1 control-label">2.</label>
    <div class="col-sm-3">
    <input type="text" class="form-control" name="subject2" id="subject2"/>
    </div>

1 Answers1

1

First of all mysql_* is deprecated long time ago and closed in PHP 7.

Use mysqli_* or PDO with prepared statement, which will help you to prevent your code with SQL Injection.

Second, use mysqli_num_rows() to check either getting result or not then you can use mysqli_fetch_array.

Issue in your code is that, you are using json_encode() for your result. but fetching result like result['subject2'] which is wrong, you can get the result from json response as like

result.subject2

its better to use console.log(result) and check result in browser console for debugging.

Some useful links:

Are PDO prepared statements sufficient to prevent SQL injection?

How can I prevent SQL injection in PHP?

devpro
  • 16,184
  • 3
  • 27
  • 38