Значение из типа ввода = «кнопка» не добавляется в базу данных

У меня возникли проблемы с добавлением значения элементов формы type="button" в базу данных mySql, и мне интересно, не хватает ли я чего-то.

Изменить. Это не похоже на то, что информация для этого элемента передается из html в php, потому что она не отражает значение. Моя единственная проблема связана с этим одним элементом, и остальная часть формы отправляется должным образом.

Я использую это для онлайн-теста, который создает профиль пользователя на основе выбранных ими изображений, и я устанавливаю изображения в качестве фоновых изображений для элементов кнопки, и я пытаюсь сделать это в прямом html (в отличие от используя javascript вместе с переключателями или флажками).

 <input type="button" name="quiz_start" value="jeans" style="background: url(files/start1.jpg) no-repeat; width:54px;height:140px; cursor:pointer; border:none; color: transparent; font-size : 0"> 

Я упростил PHP-код для запроса вопроса (включая указание идентификатора пользователя и ограничение его только на одно поле). Я также включил полный код ниже.

 <?php //Start session & connect to database $user_id = 3; $qry = "INSERT INTO style(user_id, quiz_start) VALUES('$user_id','$_POST[quiz_start]')"; $result = @mysql_query($qry); header("location: page2.html"); exit(); ?> 

Полный запрос:

 $fieldlist=$vallist=''; foreach ($_POST as $key => $value) { $fieldlist.=$key.','; $vallist.='\''.($value).'\','; } $fieldlist=substr($fieldlist, 0, -1); $vallist=substr($vallist, 0, -1); $fieldlist.=', user_id'; $vallist.=','.$user_id; $setlist=''; foreach ($_POST as $key=>$value){ $setlist.=$key .'=\''.$value.'\','; } $setlist=substr($setlist, 0, -1); $result = mysql_query('UPDATE style SET '.$setlist.' WHERE user_id='.$user_id); if (mysql_affected_rows()==0) { $result = mysql_query('INSERT INTO style ('.$fieldlist.') VALUES ('.$vallist.')'); } header("location: page2.html"); exit(); ?> 

Related of "Значение из типа ввода = «кнопка» не добавляется в базу данных"

Увидев, что вы не можете повторить $ _POST ['quiz_start'], это означает, что ваше значение на самом деле не установлено. Это происходит потому, что, когда вы используете кнопку класса, как в <input type='button'> ваша форма фактически не представляется как <input type='submit'>

Одним из решений было бы изменить вашу кнопку на фактический файл отправки и формата, который … или вам нужно вызвать функцию javascript с помощью onClick с вашей кнопки, как показано на рисунке:

 <input type="button" onClick="myfunction()"> 

Для справки о том, о чем я говорю, посмотрите этот пост .

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

  1. Используйте поле выбора или флажок, чтобы люди выбирали тип, в котором вы можете передавать свои данные.
  2. Отправьте свою форму в javascript с <input type="button" onClick="myfunction()"> после чего <input type="button" onClick="myfunction()"> запрос на обновление в javascript.
  3. Наконец, если вы все еще хотите запустить свой запрос в PHP, вы можете запустить функцию javascript, чтобы сделать вызов AJAX для возврата информации JSON, в которой вы можете определить переменную php после загрузки страницы, в которую вы можете подключиться к вашему запросу на обновление.

Попробуй это:

  <?php //Start session & connect to database $user_id = 3; $qry = "INSERT INTO style(user_id, quiz_start) VALUES('".$user_id."','".$_POST['quiz_start']."')"; $result = @mysql_query($qry); header("location: page2.html"); exit(); ?> 

Так как кажется, что тип ввода = «кнопка» не может захватить выбор пользователя, я хотел бы поделиться очень простым способом, который я решил сделать с помощью переключателей или флажков, используя только html.

Все, что вам нужно сделать, это установить элемент ввода в style="display:none" и окружить как изображение, так и элемент ввода тегом метки, чтобы пользователи могли щелкнуть в любом месте изображения, чтобы выбрать элемент 🙂

 <label for="quiz_start"> <img src="files/start1.jpg" /> <input style="display:none" type="radio" id="quiz_start" name="quiz_start" value="jeans"> </label>