У меня есть опрос, в котором показаны счастливые и грустные лица
Когда пользователь нажимает переключатель, он должен предварительно сформировать событие 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'];
...
}
?>
Лучше начать использовать mysqli вместо mysql, если вы новичок и все еще учитесь. Поскольку mysql уже устарел и не используется в последней версии PHP.
Вы можете отправить его без действия формы, используя AJAX.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы должны назвать переключатели так же.
<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_ * устарели. Вы можете использовать эта ссылка для справки.
Это одна из многих затронутых проблем. Вы можете решить их все ... но вы напишете массу нового кода;)
Некоторые вещи, я думаю, захотят назвать переключатели одинаково. Так:
<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 ();"
Это близко, это было бы больше похоже на синтаксис jQuery для щелчка. Правильный способ для ванильного javascript будет таким: onclick = "document.getElementById('radioAnswer').onclick = radioBtnClickFunction"<script> function radioBtnClickFunction() { alert("works"); ... code ... }; </script>
Для этого, чтобы отправить форму, присвойте ей идентификатор "form-id". Затем добавьте этот атрибут к каждому входу радиокнопки: onclick = "document.getElementById('form-id').submit();", вот ссылка на ресурс, который может вам помочь: Действие при нажатии
<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>
«Не работает» не так полезен, как вы думаете. Будьте конкретны, включите сообщения об ошибках, а также ожидаемые и фактические результаты. Включите отладку ошибок, если она у вас не включена ... используйте это в верхней части вашего скрипта:
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);. Также функцииmysql_*- это обесценившийся и полностью удаленный из php 7+.