Вставьте значение переключателя в mysql с помощью щелчка

У меня есть опрос, в котором показаны счастливые и грустные лица

Когда пользователь нажимает переключатель, он должен предварительно сформировать событие onclick.

Затем PHP должен отправить его в базу данных, но при нажатии переключателя не запускается php, я пытаюсь подумать о том, как я могу его отправить, мне нужно запустить php из этой страницы и не иметь его как форма действия.

 <html>
<head>
  <title>survey</title>
  <meta charset = "utf-8" />
  <link rel = "stylesheet" type = "text/css" href = "test.css" />

  <meta name = "viewport" content = "width=device-width, initial-scale=1" />

  <script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js" type = "text/javascript"></script>

</head>

<body>

  <div id = "wrapper">
    <img src = "Wincanton.png" alt = "wincantonLogo" class = "wincantonLogo" />
    <img src = "Screwfix.jpg" alt = "screwfixLogo" class = "screwfixLogo" />

    <h1 class = "Survey_Title">Heath and Wellbeing</h1><br />

    <h2 class = "Survey_Question">Did you find the most recent Wellbeing campaign useful?</h2><br/>



      <div class = "cc-selector">
      <form class = "cc-selector" id = "form-id" action = "tester.php" method = "POST">
    <label><input id = "happy" type = "radio" name = "radioAnswer" onclick = "document.getElementById('cc-selector').click();" /></label>
    <label class = "drinkcard-cc happy" for = "happy"></label>
    <label><input id = "sad" type = "radio" name = "radioAnswer" onclick = "document.getElementById('cc-selector').click();" /></label>
    <label class = "drinkcard-cc sad"for = "sad"></label>
  </form>
        </div>
    <script type = "text/javascript">
    $(".cc-selector").html(
    $(".cc-selector").children().sort(function(a, b) {
    return Math.round(Math.random()) - 0.8;
    })
    );
    </script>
  </div>
</body>
</html>



 <?php if (array_key_exists('radioAnswer', $_POST)) {


  $dbhost = 'localhost';
  $dbuser = 'root';
  $dbpass = 'rootpassword';
  $conn = mysql_connect($dbhost, $dbuser, $dbpass);
  if (! $conn )
  {
    die('Could not connect: ' . mysql_error());
  }
  mysql_select_db('test');
  $radioAnswer = $_POST['radioAnswer'];


   ...
}
?>

«Не работает» не так полезен, как вы думаете. Будьте конкретны, включите сообщения об ошибках, а также ожидаемые и фактические результаты. Включите отладку ошибок, если она у вас не включена ... используйте это в верхней части вашего скрипта: ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);. Также функции mysql_* - это обесценившийся и полностью удаленный из php 7+.

IncredibleHat 04.07.2018 16:56

Лучше начать использовать mysqli вместо mysql, если вы новичок и все еще учитесь. Поскольку mysql уже устарел и не используется в последней версии PHP.

dcangulo 05.07.2018 04:31

Вы можете отправить его без действия формы, используя AJAX.

yomisimie 09.07.2018 10:37
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
429
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы должны назвать переключатели так же.

<div class = "cc-selector">
        <label><input id = "happy" type = "radio" name = "radioAnswer" value = "happy"/></label>
        <label><input id = "sad" type = "radio" name = "radioAnswer" value = "sad"/></label>
        <input type = "submit" name = "submit" value = "submit" />
      </div>

теперь, чтобы получить ответ, вы можете использовать

$response = $_REQUEST['radioAnswer'];

это покажет вам, выбрал ли пользователь радостное или грустное радио. Используйте функции mysqli_ * или PDO для запроса базы данных, функции mysql_ * устарели. Вы можете использовать эта ссылка для справки.

Это одна из многих затронутых проблем. Вы можете решить их все ... но вы напишете массу нового кода;)

IncredibleHat 04.07.2018 17:01
Ответ принят как подходящий

Некоторые вещи, я думаю, захотят назвать переключатели одинаково. Так:

<form class = "cc-selector" id = "form-id" method = "POST">
    <label><input id = "happy" type = "radio" name = "radioAnswer" value = "happy"/></label>
    <label><input id = "sad" type = "radio" name = "radioAnswer" value = "sad"/></label>
    <input type = "submit" name = "submit" value = "submit" />
  </form>

И ваш php также нужно будет изменить:

<?php if (array_key_exists('radioAnswer', $_POST)) {


  $dbhost = 'localhost';
  $dbuser = 'root';
  $dbpass = 'rootpassword';
  $conn = mysql_connect($dbhost, $dbuser, $dbpass);
  if (! $conn )
  {
    die('Could not connect: ' . mysql_error());
  }
  mysql_select_db('test');
  $radioAnswer = $_POST['radioAnswer'];


   ...
}

Если вы хотите, чтобы это происходило onclick, вы можете отправить форму с помощью javascript onclick, вот пример того, как:

<input id = "happy" type = "radio" name = "radioAnswer" onclick = "document.getElementById('form-id').submit();" />

Смогу ли я выполнить onclick с помощью переключателя и не отправлять форму с помощью кнопки, будет ли это onclick = "document.getElementById ('radioAnswer'). Click ();"

James24 09.07.2018 09:58

Это близко, это было бы больше похоже на синтаксис jQuery для щелчка. Правильный способ для ванильного javascript будет таким: onclick = "document.getElementById('radioAnswer').onclick = radioBtnClickFunction"<script> function radioBtnClickFunction() { alert("works"); ... code ... }; </script>

benjaminknox 09.07.2018 13:46

Для этого, чтобы отправить форму, присвойте ей идентификатор "form-id". Затем добавьте этот атрибут к каждому входу радиокнопки: onclick = "document.getElementById('form-id').submit();", вот ссылка на ресурс, который может вам помочь: Действие при нажатии

benjaminknox 09.07.2018 15:13
 <form name = "form" action = "sample2.php" class = "cc-selector" method = "post" >

       <label class = "label">
        <input type = "image" name = "Opinion" value = "Positive" src = "happy.png" onclick = "document.getElementById('form').submit();"/>

       </label>

       <label class = "label">
        <input type = "image" name = "Opinion" value = "Negative" src = "sad.png" onclick = "document.getElementById('form').submit();"/>
       </label>
      </form>

Другие вопросы по теме