Пример сохранения гендерного
<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. Дай мне знать.
Что-то, что вас устраивает по более красивому пути:
// $_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>
Несколько важных замечаний.
<?php
вместо короткой формы тега php <?
, Он будет устаревшим в будущих версиях php.