2009-10-26 100 views
2

實例保存性別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()); 
    } 

如何讓當我們點擊性別該值將自動保存到數據庫。讓我知道。

回答

7

東西來設置你關閉一個漂亮路徑:

// $_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> 
+0

現在更加清晰的感謝! – wow 2009-10-26 19:42:32

+1

@bob - 這只是爲了提供額外的洞察力,並希望引發一些好奇心。請注意,適當的異常處理丟失了,並且有很大的改進空間(總是!) – karim79 2009-10-26 19:49:05

+0

是的,總是:)附加問題intval )好於(int)? – wow 2009-10-26 19:58:54

3

你不能單獨使用PHP來做到這一點......你需要在該頁面上執行一些JavaScript代碼,並執行一個單選按鈕並執行一個PHP腳本。這就是所謂的異步JavaScript和XML或「AJAX」,並簡要介紹將http://www.w3schools.com/ajax/default.asp

+0

的onchange =「this.form.submit();對於這個工作謝謝:) – wow 2009-10-26 19:16:18

1

+1到karim79您指出的jQuery/AJAX和$ _ POST啄。很重要。

這裏是沒有的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事件處理函數在javascript:

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

幾個重要的事情需要注意。

  • $ _POST是比$ _REQUEST更好的選項。
  • 使用<?php代替php標籤<?的縮寫形式。它將在未來的PHP版本中被棄用。
  • 投資時間在學習的jQuery/AJAX是100%值得我加入的時間和精力
+0

任何人都可以告訴我獲得正確的HTML代碼片段在這裏工作? – 2009-10-26 19:36:25

+0

在輸入屏幕上使用101010的cody按鈕。 – karim79 2009-10-26 19:46:30

+0

karim79。我做了,它正確地調整了編輯器中的代碼,但在提交後不工作:( – 2009-10-26 19:49:08

相關問題