2013-12-19 23 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