love lio
love lio

Reputation: 137

disabling particular date in input box using jquery in php not working

i have a php website, there is a form which user can submit, i want to disable few dates if they are already present in database, so i did like below:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<input id="niy" name="idate" value=""/>

 <?php
    $queryusersz = "SELECT * FROM invoice";
    $dbz = mysqli_query($con, $queryusersz);
    while($row = mysqli_fetch_array($dbz)) {
   $names[] = $row['idate'];      
    ?>
    
    <script>
    var array = <?php $names ?>;

$('#niy').datepicker({
    language:'TR',
    beforeShowDay: function(date){
        var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
        return [ array.indexOf(string) == -1 ]
    }
});
    </script>
  <?php }?>

however the input box doesnt show date and neither i get any errors in console, can anyone please help me with this, thanks in advance.

Upvotes: 0

Views: 68

Answers (1)

KHIMAJI VALUKIYA
KHIMAJI VALUKIYA

Reputation: 626

For jQuery DatePicker, You need to add jQuery UI JS and CSS.

There are two things you need to follow:

  1. You can not directly write var array = <?php $names ?>; in JS as It will give error, You need to do JSON Encode or You need to add it in quote.

For Exmaple: var array = <?php echo json_encode($names); ?> or var array = '<?php echo implode(",",$names); ?>'

  1. One more thing you missed in code is You didn't added echo for PHP variable which you are using in JS.

For Example: Right now your code is var array = <?php $names ?>;, It is without echo so that $name value will not store in JS variable until you echo it.

For more reference see below code:

        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
    <link href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/ui-lightness/jquery-ui.css" rel="stylesheet">

    <input id="niy" name="idate" value=""/>

    <?php
        $queryusersz = "SELECT * FROM invoice";
        $dbz = mysqli_query($con, $queryusersz);
    while ($row = mysqli_fetch_array($dbz)) {
        $names[] = $row['idate'];      
        ?>
        
        <script>
        var array = '<?php echo implode(",",$names) ?>';

            $('#niy').datepicker({
                language:'TR',
                beforeShowDay: function(date){
                    var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
                    return [ array.indexOf(string) == -1 ]
                }
            });
        </script>
    <?php }?>

Upvotes: 2

Related Questions