PHP- 라디오 버튼을 클릭 할 때 MySQL에 데이터를 업데이트하는 방법

StackOverflow https://stackoverflow.com/questions/1626730

  •  06-07-2019
  •  | 
  •  

문제

성별을 저장하는 예

<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 Radiobutton (들)의 PHP 스크립트를 실행합니다. 이것을 비동기 JavaScript 및 XML 또는 "Ajax"라고하며 빠른 소개는 http://www.w3schools.com/ajax/default.asp

jquery/ajax 및 $ _post thingy를 지적하기위한 +1에서 Karim79에서. 매우 중요.

다음은 jQuery가없는 해결책입니다 (지금 jQuery를 배우는 데 관심이 없다면)

1 단계: 추가 onchange 다음과 같은 확인란 태그에서도 다음과 같습니다.

<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 단계 : : 을 추가하다 이름 다음과 같은 태그를 양식하는 속성 :

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

3 단계 : : javaScript로 onchange 이벤트 핸들러 기능을 작성하십시오.

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

주목해야 할 중요한 것들.

  • $ _post는 $ _request보다 더 나은 옵션입니다.
  • 사용 <?php 짧은 형태의 PHP 태그 대신 <?. 향후 버전의 PHP에서는 더 이상 사용되지 않습니다.
  • jquery/ajax를 배우는 데 시간 투자 시간은 시간과 노력의 가치가 100%입니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top