Не могу отправить значение флажка на php - PullRequest
0 голосов
/ 28 апреля 2020

Привет, я новичок в PHP, а также OOP, поэтому, когда я отправляю в базу данных, я хочу опубликовать ее MorseCoded. Проблема в том, что, когда я ставлю флажок, значение флажка равно 0, и оно должно быть одним. index. php Это флажок

        <input type="checkbox" id="NSSIOWYDBEI" value="1"  name="cipher" class="bootstrap-switch"/>  

Внимание. php Здесь может быть что-то не так

case 'postConfession':
  $cipher = $_POST['ciphered'] === '1' ? '1' : '0';
  $conn = new Manner;
  $conn->postconfession($_POST['confession'], $_POST['id'], $cipher);
  break;

JAVASCRIPT

   $(document).ready(function () {
    //comment button click

   $("#confessbtn").click(function () {
var text = $("#content");
var ew = $("#drFSDUGAHEVUIEU");
var mew = $("#NSSIOWYDBEI");

if ($.trim(text.val()) === "") {
  $("#error").html("<span class='help-inline is-invalid'>"+$languages.message+"</span>")
  return;
}

$.ajax({
  url: 'CEngine/CAction.php',
  type: 'post',
  data: {
    action: 'postConfession',
    confession: text.val(),
    id: ew.val(),
    ciphered: mew.val()

  },
  beforeSend: function() {
    $("#confessbtn").html('<i class="fa fa-spinner fa-spin"></i> &nbsp; Confessing...')
  },
  success: function (result) {
    location.reload();
  }
});
});

Возможно вот этот код для отправки в базу данных

 public function postconfession($confession, $id, $ciphered) {

try {
  $uid = $this->generateuid();
  //$confession = $_POST['confession'];
  //$id = $_POST['id'];
  $ip = $_SERVER['REMOTE_ADDR'];
  $message = htmlentities($confession, ENT_QUOTES);
  $stmt = $this->db->prepare("INSERT INTO confessions (uid, message, user_id, ciphered, ip) VALUES (:u, :m, :id, :c, :i)");
  $stmt->bindParam(":u", $uid, PDO::PARAM_STR);
  $stmt->bindParam(":m", $message, PDO::PARAM_STR);
  $stmt->bindParam(":id", $id, PDO::PARAM_STR);
  $stmt->bindParam(":c", $ciphered, PDO::PARAM_INT);
  $stmt->bindParam(":i", $ip, PDO::PARAM_STR);
  $stmt->execute();

} catch (PDOException $e) {

  echo "There is some problem in connection: " . $e->getMessage();
}


 }

1 Ответ

0 голосов
/ 28 апреля 2020

Флажки (и радиокнопки) работают немного иначе, чем другие входы. Их значение фактически никогда не изменяется, но у них есть дополнительный атрибут checked. Поэтому, если вы хотите, чтобы ваш CheckBox был проверен по умолчанию, вы должны установить атрибут HTML checked.

<input type="checkbox" id="NSSIOWYDBEI" value="1" checked="checked"  name="cipher" class="bootstrap-switch"/>

JQuerys .val() функция возвращает значение ввода, как и ожидалось, но так как никогда Изменяя флажки, вы всегда получите предварительно заданное значение.

В Javascript вы можете проверить атрибут checked элемента, который возвращает логическое значение. Чтобы получить это значение в jquery, вы можете использовать .prop("checked").

$.ajax({
    data: {
        ciphered: mew.prop("checked")
  },
};

Поскольку это возвращает логическое значение, вы должны настроить PHP проверку также.

$cipher = $_POST['ciphered'] === 'true' ? '1' : '0';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...