PHP – Как обновить данные в MySQL при нажатии переключателя

Пример сохранения гендерного

<form action="save.php?id=<?=$id?>" method="post"> <p><label><input name="gender" type="radio" value="male" <?php if($gender=='male'){?>checked="checked"<? }?> /> Male</label></p> <p><label><input name="gender" type="radio" value="female" <?php if($gender=='female'){?>checked="checked"<? }?> /> Female</label></p> </form> 

Здесь приведен пример обновления значения

  if ($_REQUEST['gender']) { mysql_query("UPDATE users SET gender='$gender' WHERE id='" . $id . "'") or die(mysql_error()); } 

Как сделать, когда мы нажмем на пол, значение будет автоматически сохранено в db. Дай мне знать.

Solutions Collecting From Web of "PHP – Как обновить данные в MySQL при нажатии переключателя"

Что-то, что вас устраивает по более красивому пути:

  // $_POST is way cooler than $_REQUEST if (isset($_POST['gender']) && !empty($_POST['gender'])) { // sql injection sucks $gender = my_real_escape_string($_POST['gender']); // cast it as an integer, sql inject impossible $id = intval($_GET['id']); if($id) { // spit out the boolean INSERT result for use by client side JS if(mysql_query("UPDATE users SET gender=$gender WHERE id=$id")) { echo '1'; exit; } else { echo '0'; exit; } } } 

Предполагая одну и ту же разметку, решение ajaxy (используя jQuery ):

 <script> var id = <?=$id?>; // when the DOM is ready $(document).ready(function() { // 'click' because IE likes to choke on 'change' $('input[name=gender]').click(function(e) { // prevent normal, boring, tedious form submission e.preventDefault(); // send it to the server out-of-band with XHR $.post('save.php?id=' + id, function() { data: $(this).val(), success: function(resp) { if(resp == '1') { alert('Saved successfully'); } else { alert('Oops, something went wrong!'); } } }); }); }); </script> 

Вы не можете сделать это с помощью PHP в одиночку … вам понадобится JavaScript на этой странице, который будет onchanged на рации (и) и исполняет PHP-скрипт. Это называется асинхронным JavaScript и XML или «AJAX», а краткое введение – http://www.w3schools.com/ajax/default.asp

+1 для karim79 для указания jQuery / AJAX и $ _POST thingy. Очень важно.

Вот решение без jQuery (если вам сейчас не интересно изучать jQuery)

Шаг 1: добавьте onchange даже в теги checkbox, как это:

 <p><label><input name="gender" type="radio" value="male" onchange="do_submit()" <?php if($_POST['gender']=='male'){?>checked="checked"<? }?> /> Male</label></p> <p><label><input name="gender" type="radio" value="female" onchange="do_submit()" <?php if($_POST['gender']=='female'){?>checked="checked"<? }?> /> Female</label></p> 

Шаг 3. Добавьте атрибут name для создания тега:

 <form name="myform" action="check.php" method="post"> 

Шаг 3: Напишите функцию обработчика событий onchange в javascript:

 <script type="text/javascript"> function do_submit() { document.forms['myform'].submit(); } </script> 

Несколько важных замечаний.

  • $ _POST – лучший вариант, чем $ _REQUEST.
  • Используйте <?php вместо короткой формы тега php <? , Он будет устаревшим в будущих версиях php.
  • Инвестирование времени в обучение jQuery / AJAX на 100% стоит времени и усилий