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());
  }

كيفية القيام بذلك عندما نضغط على الجنس، سيتم حفظ القيمة تلقائيًا في قاعدة البيانات.اسمحوا لي أن أعرف.

هل كانت مفيدة؟

المحلول

وشيء لضبط قبالة لكم على مسار أجمل:

  // $_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 (باستخدام مسج ):

<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 وحدها ... ستحتاج بعض جافا سكريبت على تلك الصفحة التي ينفذ onchanged من زر راديو (ق) وينفذ برنامج نصي PHP. وهذا ما يسمى جافا سكريبت غير المتزامنة وXML أو "أجاكس"، وسوف يكون مقدمة سريعة HTTP: // www.w3schools.com/ajax/default.asp

إجراء 1+ إلى karim79 للإشارة إلى jQuery/AJAX و $_POST thingy.مهم جدا.

إليك الحل بدون jQuery (إذا لم تكن مهتمًا بتعلم jQuery الآن)

الخطوة 1: إضافة على التغيير حتى على علامات مربع الاختيار الخاصة بك مثل هذا:

<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: اكتب وظيفة معالج حدث 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