2013-12-19 26 views
2

我一直試圖在同一時間處理多個mySQL更新。我有4個選擇/ optiion框,從數據庫表中拉入條目。我想能夠使用JQuery更新db onChange。我設法使用一個選擇模塊來完成這個工作,但是一旦我添加了更多的模塊,它就會旋轉。我知道主要的錯誤代碼是db_submit.php,但真的不知道該怎麼寫。我知道必須有一個更乾淨的方式來做到這一點。通過PHP和JQuery提交多個數據庫更新

FORM PAGE- INPUT.PHP

<html> 
<head> 
<script src="../assets/scripts/jquery-2.0.3.min.js"></script> 
<script> 
    function updateDb() { 
    $.post("db_submit.php", $("#console").serialize()); 
    } 
</script> 
<?php 
include 'db_connect.php'; 
?> 
</head> 

<body> 
<form id="console"> 
    <select id="frame1" name="frame1" onChange="updateDb()"> 
     <option value="">Select Channel</option> 
      <?php 
      $result = mysqli_query($con,"SELECT * FROM feedContent"); 
      while ($row = mysqli_fetch_array($result)) { 
       echo "<option value='" . $row['url'] . "'>" . $row['name'] . "</option>"; 
      } 
      ?> 
    </select> 
    <select id="frame2" name="frame2" onChange="updateDb()"> 
     <option value="">Select Channel</option> 
      <?php 
      $result = mysqli_query($con,"SELECT * FROM feedContent"); 
      while ($row = mysqli_fetch_array($result)) { 
       echo "<option value='" . $row['url'] . "'>" . $row['name'] . "</option>"; 
      } 
      ?> 
    </select> 
    <select id="frame3" name="frame3" onChange="updateDb()"> 
     <option value="">Select Channel</option> 
      <?php 
      $result = mysqli_query($con,"SELECT * FROM feedContent"); 
      while ($row = mysqli_fetch_array($result)) { 
       echo "<option value='" . $row['url'] . "'>" . $row['name'] . "</option>"; 
      } 
      ?> 
    </select> 
    <select id="frame4" name="frame4" onChange="updateDb()"> 
     <option value="">Select Channel</option> 
      <?php 
      $result = mysqli_query($con,"SELECT * FROM feedContent"); 
      while ($row = mysqli_fetch_array($result)) { 
       echo "<option value='" . $row['url'] . "'>" . $row['name'] . "</option>"; 
      } 
      ?> 
    </select> 
</form> 
</body> 
<?php 
mysqli_close($con); 
?> 
</html> 

處理PAGE- DB_SUBMIT.PHP

<?php 
include 'db_connect.php'; 
$frame1= mysqli_escape_String($con,$_POST['frame1']); 
$frame2= mysqli_escape_String($con,$_POST['frame2']); 
$frame3= mysqli_escape_String($con,$_POST['frame3']); 
$frame4= mysqli_escape_String($con,$_POST['frame4']); 

$query = "UPDATE frameContent SET url='".$frame1."' WHERE name='frame1'"; 
$query = "UPDATE frameContent SET url='".$frame2."' WHERE name='frame2'"; 
$query = "UPDATE frameContent SET url='".$frame3."' WHERE name='frame3'"; 
$query = "UPDATE frameContent SET url='".$frame4."' WHERE name='frame4'"; 
mysqli_query($con,$query); 

mysqli_close($con); 
?> 

我知道,不斷地設置$ query變量導致的問題,但我不知道是怎麼回事我可以在一頁上做到這一點。任何幫助將非常感激。

謝謝!

回答

3

首先確保$queries已連接,然後用分號終止每個查詢。在這些之後,您可以使用mysqli_multi_query在一次來自php的調用中執行全部四個更新。

$query = "UPDATE frameContent SET url='".$frame1."' WHERE name='frame1';"; 
$query .= "UPDATE frameContent SET url='".$frame2."' WHERE name='frame2';"; 
$query .= "UPDATE frameContent SET url='".$frame3."' WHERE name='frame3';"; 
$query .= "UPDATE frameContent SET url='".$frame4."' WHERE name='frame4';"; 
mysqli_multi_query($con,$query); 
+0

謝謝@vinod adhikary - 完美的工作!非常感激! – adroxx

+0

這工作在Chrome瀏覽器,但Safari似乎崩潰了。在Safari中提交時,會清除數據庫中的所有行。有什麼想法嗎? – adroxx

+0

請忽略我最後的評論。我發現了這個問題。我的代碼中有一個錯字。再次感謝! :) – adroxx

0

我想這可能幫助:)但只是你的代碼中的一個小的變化:

<html> 
<head> 
<script src = "js/jquery-1.10.1.js"></script> 
<script> 
function updateDb() 
{ 
// this var id will store all your 4 combobox values in an array 
    var id = [{val1: $("#frame1").val()}, 
      {val1: $("#frame2").val()}, 
      {val1: $("#frame3").val()}, 
      {val1: $("#frame4").val()}]; 

//this .post will submit all data to db_submit.php 
    $.post("db_submit.php",{id:id}, function(data) 
    { 
      alert(data); 
    }); 
</script> 
<?php 
    include 'db_connect.php'; 
?> 
</head> 
<body> 
<select id="frame1" name="frame1"> 
    <option value="">Select Channel</option> 
     <?php 
     $result = mysqli_query($con,"SELECT * FROM feedContent"); 
     while ($row = mysqli_fetch_array($result)) { 
      echo "<option value='" . $row['url'] . "'>" . $row['name'] . "</option>"; 
     } 
     ?> 
</select> 
<select id="frame2" name="frame2"> 
    <option value="">Select Channel</option> 
     <?php 
     $result = mysqli_query($con,"SELECT * FROM feedContent"); 
     while ($row = mysqli_fetch_array($result)) { 
      echo "<option value='" . $row['url'] . "'>" . $row['name'] . "</option>"; 
     } 
     ?> 
</select> 
<select id="frame3" name="frame3"> 
    <option value="">Select Channel</option> 
     <?php 
     $result = mysqli_query($con,"SELECT * FROM feedContent"); 
     while ($row = mysqli_fetch_array($result)) { 
      echo "<option value='" . $row['url'] . "'>" . $row['name'] . "</option>"; 
     } 
     ?> 
</select> 
<select id="frame4" name="frame4"> 
    <option value="">Select Channel</option> 
     <?php 
     $result = mysqli_query($con,"SELECT * FROM feedContent"); 
     while ($row = mysqli_fetch_array($result)) { 
      echo "<option value='" . $row['url'] . "'>" . $row['name'] . "</option>"; 
     } 
     ?> 
</select> 

<input type="button" value="Submit" onClick="updateDb()"/> 
</body> 
<?php 
    mysqli_close($con); 
?> 
</html> 

而在你DB_SUBMIT.PHP

<?php 
include 'db_connect.php'; 
$frame1= mysqli_escape_String($_POST['id'][0]['val1']); 
$frame2= mysqli_escape_String($_POST['id'][1]['val1']); 
$frame3= mysqli_escape_String($_POST['id'][2]['val1']); 
$frame4= mysqli_escape_String($_POST['id'][3]['val1']); 

$query = mysqli_query("UPDATE frameContent SET url='$frame1' WHERE name='frame1'"); 
$query = mysqli_query("UPDATE frameContent SET url='$frame2' WHERE name='frame2'"); 
$query = mysqli_query("UPDATE frameContent SET url='$frame3' WHERE name='frame3'"); 
$query = mysqli_query("UPDATE frameContent SET url='$frame4' WHERE name='frame4'"); 

echo "Data was Successfully updated"; 
mysqli_close($con); 
?> 

我只是添加一個按鈕有爲了方便,但如果你不想要它只是刪除它,並把你擁有的每個combocbox上的onChange放回去:)

+0

感謝您的時間@Aljie :) – adroxx