2013-04-18 84 views
0

我有一個PHP頁面,該頁面顯示錶中MYSQL數據庫的記錄。我希望能夠通過單擊單元格來編輯表格單元格中的記錄。過程中,我的圖片會是這樣的:使用AJAX將PHP表單提交到MYSQL數據庫

1)onclick()事件的表格單元格觸發ajaxfunction()
2)ajaxfunction()細胞數據發送到PHP網頁,其中querys數據庫並顯示下拉選項列表。
3)用戶從下拉列表
4選項)onchange()事件提交表單數據庫
5)表單元格或頁面被刷新,以顯示當前表單元數據。 (目前不在我現有的代碼中)

現在我有兩個PHP頁面ac_sched.phpModSched.php

下面是每個頁面的結構:

ac_sched.php

  • PHP創建的表顯示MYSQL記錄
  • ajaxfunction查詢可用的電池選項

ModSched.php數據庫:

  • PHP代碼從數據庫中選擇可用的單元格選項並創建下拉菜單。
  • PHP用於從下拉列表中選擇選項更新數據庫的代碼。

這裏是代碼的有關章節,從每一頁:

ac_sched.php: 

<script> 
function ACSchedQuery(reg) 
    { 
    if (window.XMLHttpRequest) 
     {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
     } 
    xmlhttp.onreadystatechange=function() 
     { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
      { 
      document.getElementById(reg).innerHTML=xmlhttp.responseText; 
      } 
     } 
    xmlhttp.open("GET","../process/ModSched.php?ModSched_Reg="+reg,true); 
    xmlhttp.send(); 
    } 
</script> 

<table> 

<tr> 
<td id="ABC-Day-3" onclick="ACSchedQuery(this.id)"></td> 
</tr> 

......rest of table here...... 
</table> 


ModSched.php: 

// This is to request the options from the database 
if(isset($_GET['ModSched_Reg'])) 
    { 
    $ModSched_Array = explode("-",$_GET["ModSched_Reg"]); 
    $ModSched_Reg = $ModSched_Array[0]; 
    $ModSched_Day = $ModSched_Array[1]; 
    $ModSched_ID = $ModSched_Array[2]; 

    $sql4 = ("SELECT * FROM aircraft_sched_options WHERE SchedOpt_ID != 0"); 

    if(!$result_sql4 = $mysqli->query($sql4)) 
     { 
     echo QueryCheck("getting the schedule options ","from the aircraft sched options",$mysqli); 
     } 
    ?> 
    <form action="../process/ModSched.php" method="post">// I did try: action="" 
     <table cellpadding="0" cellspacing="0" border="0"> 

     <tr> 
     <td> 
    <?php 
    echo "<select name=\"ModSched_ID\">"; 

    while($SchedOpt = $result_sql4->fetch_assoc()) 
     { 
     echo "<option value=\"" . $ModSched_Reg . "-" . $ModSched_Day . "-" . $SchedOpt['SchedOpt_ID'] . "\" onchange=\"formSubmit(this.form)\""; 
     if($SchedOpt['SchedOpt_ID'] == $ModSched_ID) 
      { 
      echo " selected=\"selected\""; 
      } 
     echo ">" . $SchedOpt['SchedOpt_Name'] . "</option>"; 
     } 

    echo "</select>"; 
    ?> 
     </td> 
     </tr> 

     </table> 
    </form> 
    <?php 
    } 

// This is to submit the selected option to the database 
if(isset($_POST['ModSched_ID'])) 
    { 
    $ModSched_Array = explode("-",$_POST["ModSched_ID"]); 
    $ModSched_Reg = $ModSched_Array[0]; 
    $ModSched_Day = $ModSched_Array[1]; 
    $ModSched_ID = $ModSched_Array[1]; 

    $sql4 = ("UPDATE aircraft_status SET $ModSched_Day = $ModSched_ID WHERE AC_Reg = $ModSched_Reg"); 

    if(!$result_sql4 = $mysqli->query($sql4)) 
     { 
     echo QueryCheck("updating the aircraft schedule ","into the aircraft sched",$mysqli); 
     } 

    } 

我知道這是一個很大的代碼,但我認爲這一切都需要的,以便顯示整個故事。
我想如果有人只是看看我有的代碼結構,那會告訴我,如果我在正確的軌道上,這將是一個很大的幫助。以下是關於我的代碼的問題:

1)表單是否在正確的位置提交更改? - 我之前有第二個ajaxfunction()將選定的選項提交到表單提交頁面。這不起作用,但它可能是我的代碼而不是結構本身。

2)我是否應該在自己的頁面上填寫表單提交代碼?

本週我剛剛開始使用AJAX,所以我可能會在這裏脫穎而出。任何幫助是極大的讚賞。

+0

你有沒有考慮過使用類似jqGrid或DrasticTools的庫? – Barmar 2013-04-18 06:23:04

+0

你應該肯定看看jquery – Breezer 2013-04-18 06:23:12

+0

@Barmar不,我從來沒有聽說過這些。 – 2013-04-18 06:25:12

回答

0

你可以實現一些框架,如cakephpsymphony,這個框架可以幫助你在這個過程中學習這門語言和最佳實踐。

+0

所建議的那樣,我對這些框架有所瞭解,但我從未使用它們。他們會幫助我處理這種情況嗎?也許是時候去冒險了。 – 2013-04-18 06:39:56