Как изменить свойство флажка - PullRequest
1 голос
/ 26 сентября 2019

В таблице в базе данных содержится столбец даты, флажок.Как можно отключить флажок, если введенная дата уже есть в базе данных. Например, если в таблице содержится дата = 13/9/2019 и checkbox = h1, то если мы введем дату 13/9/2019, флажокh1 отключен и наоборот

$(document).ready(function {
  $("#date").change(function {
    var date = $("#date").val();

    $.ajax({
      url: "variable.php",
      method: "POST",
      data: {
        date2: date
      },
      dataType: "text",
      success: function(html) {
        //what to put here?
      }
    });
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="date" id="date">
<input type="checkbox" name="checkbox[]" id="checkbox" name="h1">
<input type="checkbox" name="checkbox[]" id="checkbox" name="h2"">
<?php  $db = mysqli_connect('localhost','root','','mydatabase');
if (isset($_POST['date2'])){
$query = mysqli_query($db, "SELECT * FROM mytable where date = 
 '".$_POST["date2"]."'");
// what to put here?
}
?>

Ответы [ 5 ]

2 голосов
/ 26 сентября 2019

Прежде всего ваш PHP-скрипт нуждается в улучшении.Вы должны включить сообщение об ошибке и использовать подготовленные операторы.Значение также должно быть проверено перед использованием.

<?php

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = new mysqli('localhost','root','','mydatabase');
$db->set_charset('utf8mb4');

if (isset($_POST['date2'])) {
    $date = (new DateTime($_POST["date2"]))->format('Y-m-d'); //validate format
    // prepare -> bind -> execute
    $stmt = $query = $db->prepare("SELECT 1 FROM mytable WHERE date = ? ");
    $stmt->bind_param('s', $date);
    $stmt->execute();
    // get a single column from the first row of the mysql result
    $exists = (bool)$stmt->get_result()->fetch_row();

    // send JSON response to AJAX
    echo json_encode(['exists' => $exists]);
}

Затем в вашем AJAX вам необходимо проверить возвращаемое значение.

$(document).ready(function {
  $("#date").change(function {
    var date = $("#date").val();

    $.ajax({
      url: "variable.php",
      method: "POST",
      data: {
        date2: date
      },
      dataType: "text",
      success: function(response) {
        $obj = JSON.parse(response); // Since the datatype is text we need to make in a valid JSON
        $("#checkbox_h1").attr("disabled", $obj.exists); // $obj.exists has the return value from mysql
      }
    });
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="date" id="date">
<input type="checkbox" name="checkbox[]" id="checkbox_h1" name="h1">
<input type="checkbox" name="checkbox[]" id="checkbox_h2" name="h2"">

Это очень грубый код, который дает вам только представление.Вы можете написать что-то подобное.

0 голосов
/ 26 сентября 2019

вы должны вернуть true | false в обратном вызове ajax success и поместить ниже кода в успешном обратном вызове

$.ajax({
  url: "variable.php",
  method: "POST",
  data: {
    date2: date
  },
  dataType: "text",
  success: function(result) {
   if(result == true || result == 'true'){ // # just to be safe side
       $("input[type='checkbox']").attr("disabled",true); // #disable the checkbox
    }
  }
});
0 голосов
/ 26 сентября 2019

В ваш php файл положите.

 <?php  $db = mysqli_connect('localhost','root','','mydatabase');
 if (isset($_POST['date2'])){
 $result = mysqli_query($db, "SELECT * FROM mytable where date = 
  '".$_POST["date2"]."'");
   if ($result) 
   { 
     // it return number of rows in the table. 
     $row = mysqli_num_rows($result); 

     if($row > 0){
          echo 1; //exist
     } else {
          echo 0; // not exist
     // close the result. 
     mysqli_free_result($result); 
   } 
 }
 ?>

и в ajax

$.ajax({
  url: "variable.php",
  method: "POST",
  data: {
    date2: date
  },
  dataType: "text",
  success: function(html) {
    if(html == 1){
        // hide checkbox
        $(".checkboxClass").attr("disabled","disabled");
    }
  }
});
0 голосов
/ 26 сентября 2019
<?php  
$db = mysqli_connect('localhost','root','','mydatabase');
if (isset($_POST['date2'])){
    $query = mysqli_query($db, "SELECT * FROM mytable where date = 
           '".$_POST["date2"]."'");
    // what to put here?
    retunr mysqli_num_rows($query);
}
?>

Сначала верните количество строк.Если количество строк больше 0, это означает, что дата существует в базах данных.На входной стороне установите этот флажок и снимите флажок, если он больше 0.

$(document).ready(function {
  $("#date").change(function {
    var date = $("#date").val();

    $.ajax({
      url: "variable.php",
      method: "POST",
      data: {
        date2: date
      },
      dataType: "text",
      success: function(html) {
        if(html > 0){
          $('#checkbox').attr("disabled", true);
        }
      }
    });
  });
});
0 голосов
/ 26 сентября 2019

После mysqli_query сделайте что-то вроде этого

if (isset($_POST['date2'])){
    $query = mysqli_query($db, "SELECT * FROM mytable where date = '".$_POST["date2"]."'");
    if (mysqli_num_rows($query) > 0)
    {
        // print/echo or return(if a return-function) - true/1/successful
        // eg.
        print 1;
        exit();
    }
}

И получите результат в ответе Ajax

$.ajax({
  url: "variable.php",
  method: "POST",
  data: {
    date2: date
  },
  dataType: "text",
  success: function(html) {
    //what to put here?
    if (html == 1) {
        //disable checkbox
    }
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...