使用AJAX和PHP\mysql进行编辑

使用AJAX和PHP\mysql进行编辑,php,jquery,Php,Jquery,通过大量的访问,我从你们所有人那里找到了有用的答案,希望这也能让我对我的问题有所了解 基本上,我正在尝试用ajax编辑mysql数据。我已经完成了以下代码 步骤1-我使用以下脚本从服务器加载数据 $("#editselected,#addselected").live("click", function(){ var whatto=$(this).attr('id');var edit_ids = new Array(); $(".selectable:checked").each(

通过大量的访问,我从你们所有人那里找到了有用的答案,希望这也能让我对我的问题有所了解

基本上,我正在尝试用ajax编辑mysql数据。我已经完成了以下代码

步骤1-我使用以下脚本从服务器加载数据

$("#editselected,#addselected").live("click", function(){
   var whatto=$(this).attr('id');var edit_ids = new Array();
   $(".selectable:checked").each(function() {
   edit_ids.push($(this).attr('name'));
    });
   $("#editadd").load("ajaxloads/addedit.php?idarray="+edit_ids+"&action="+whatto,Hide_Load());
   //centerPopup();//loadPopup();
     }); 
且其服务器数据为

if($selectall_action=='editselected'){   ?>
    <table id="main" class="editallmainwidth">
    <thead>
    <tr>
    <th scope="col" >Vendor</th>
    <th scope="col" >ItemType</th>
    <th scope="col" >ItemCode</th>
    <th scope="col" >ItemName</th>
    <th scope="col" >SerialNo</th>
    <th scope="col" >AssetCode</th>
    <th scope="col" >Ownership</th>
    <th scope="col" >PO</th>
    </tr>
    </thead>
    <tbody>
    <?php
   $ids= split(",",$selectall_id_array);
foreach($ids as $sid)
{

$stock=mysql_query("select * FROM $region where id='$sid'");

            while($q=mysql_fetch_array($stock))
            {
    echo "<tr>";      

    echo "<td width=\"5%\"><input type='hidden' name='id_all' value='{$q[8]}' /><input type='text'  name='vend_all' value='$q[0]' /></td>";
    echo "<td width=\"5%\"><input type='text' name='type_all' value='$q[1]' /></td>";
    echo "<td width=\"8%\"><input type='text' name='code_all' value='$q[2]' /></td>";
    echo "<td width=\"20%\"><input type='text' name='desc_all' value='$q[3]' /></td>";
    echo "<td width=\"10%\"><input type='text' name='seno_all' value='$q[4]' /></td>";
    echo "<td width=\"5%\"><input type='text' name='acode_all' value='$q[5]' /></td>";
    echo "<td width=\"2%\"><input type='text' name='os_all' value='$q[9]' /></td>";
    echo "<td width=\"5%\"><input type='text' name='porder_all' value='$q[12]' />  </td>";

    echo "</tr>";
            }

     }  
     ?>
      </tbody>
      </table>
      <fieldset id="add">
            <input type="submit" id='editall' name="Modify" value="EditAll" />   </fieldset>
并使用以下服务器端代码完成更新

if(isset($_POST[ifedited])=='EditAll')

{

$id_count= $_POST[tcount];
$idarray=split(",",$_POST[id_arrays]);
$vendarray=split(",",$_POST[vend_arrays]);
$typearray=split(",",$_POST[type_arrays]);
$codearray=split(",",$_POST[code_arrays]);
$descarray=split(",",$_POST[desc_arrays]);
$senoarray=split(",",$_POST[seno_arrays]);
$acodearray=split(",",$_POST[acode_arrays]);
$osarray=split(",",$_POST[os_arrays]);
$poarray=split(",",$_POST[po_arrays]);
//print_r($idarray);

       for($i=0;$i<=$id_count;$i++)
 {
 //echo $id_count;
 echo $idarray[$i];
 echo $typearray[$i];
 echo $vendarray[$i];
 echo $codearray[$i];
 echo $descarray[$i];
 echo $senoarray[$i];
 echo $acodearray[$i];
 echo $osarray[$i];
 echo $poarray[$i];

 mysql_query("update Query");



 }

    }
if(isset($\u POST[ifedited])=='EditAll')
{
$id\u count=$\u POST[t计数];
$idarray=split(“,”,$\u POST[id\u数组]);
$vendarray=split(“,”,$\u POST[vendarray]);
$typearray=split(“,”,$\u POST[type\u array]);
$codearray=split(“,”,$\u POST[code\u arrays]);
$descarray=split(“,”,$\u POST[desc\u array]);
$senoarray=split(“,”,$\u POST[seno\u数组]);
$acodearray=split(“,”,$\u POST[acode\u数组]);
$osarray=split(“,”,$\u POST[os\u数组]);
$poarray=split(“,”,$\u POST[po\u array]);
//印刷费($idarray);

对于($i=0;$ii reccomend,您可以使用JSON来执行此操作

{
  "foo": "The quick brown fox jumps over the lazy dog.",
  "bar": "ABCDEFG",
  "baz": [52, 97]
}
$.getJSON('ajax-mysql/json.php', function(data) {
  $('.result').html('<p>' + data.foo + '</p>'
    + '<p>' + data.baz[1] + '</p>');
});
使用jQuery像这样获取它

{
  "foo": "The quick brown fox jumps over the lazy dog.",
  "bar": "ABCDEFG",
  "baz": [52, 97]
}
$.getJSON('ajax-mysql/json.php', function(data) {
  $('.result').html('<p>' + data.foo + '</p>'
    + '<p>' + data.baz[1] + '</p>');
});
等等

var mysql_field=new Array();
mysql_field[0] = 'field1';
mysql_field[1] = 'field2';
mysql_field[2] = 'field3';

var jq = new Array();
for(i=0;i<data.length;i++){jq[i] = mysql_field[i]+'=\''+data[i]+'\'';}
jq=jq.join('&');
ajaxupdate.php
文件中,您可以使用

$field[0] = $_POST['field1'];
$field[1] = $_POST['field2'];
$field[2] = $_POST['field2'];
$db->query_update("table",$field,"id=1"); //update where id=1
这个查询就是你如何使用这个很棒的mysql包装类来完成的。看看它,它会让你的生活变得非常简单。你所要做的就是把它放在php文件的顶部

require("Database.class.php");
$db = new Database("server_name", "mysql_user", "mysql_pass", "mysql_database"); 
对于这个问题:“如何使用关联数组创建JSON”。请尝试使用该函数

你也可以:

  • 停止使用使用正则表达式的[Disprecated]拆分函数,并使用explode函数

  • 在数组调用中使用引号,如下所示:
    $\u POST[tcount]
    $\u POST['tcount']

  • 虽然isset返回布尔值,但这个测试非常奇怪:
    if(isset($\u POST[ifedited])=='EditAll'){

  • 停止使用
    SELECT*FROM…
    但写入
    SELECT field1,field2 FROM…

  • 在此调用中添加第三个参数:
    mysql\u fetch\u数组($stock,mysql\u NUM)

  • 在这里:

    foreach($id作为$sid) {

    $stock=mysql_查询(“从$region中选择*,其中id='$sid')

尝试使用WHERE子句的IN运算符来避免多个查询


您的代码很难阅读,因为解析不好,但仍有许多改进会影响性能…

感谢您的紧急响应,您似乎建议通过php使用json编码,然后创建html?但我将如何将编辑后的数据数组发送回php服务器?能否请gi我举个简单的例子是的,这就是我基本上说的。你能澄清一下你想发送回mysql服务器的内容吗..还有,签出和:)发送回mysql意味着,正如您所知,在我的示例中,我首先使用ajax加载页面,数据以名称和值存储在textbox数组中。根据您对JSON的理解,我将使用$.getjson而不是Load。但是在html元素中加载JSON后,我将如何迭代每个html元素,以创建相同类型的JSON和decoPHP中的de。简单地说,我将如何创建一个带有字段名的已编辑值JSON以用于更新查询。事实上,我不知道。那么,在编辑值之后,您是打算使用
ajax
进行更新,还是在同一页面上不使用ajax进行更新?如果要使用ajax更新已编辑的值,使用JSON非常简单,如果不..那么你甚至不需要JSON来做这件事。你肯定我会使用ajax。请给我一个用JSON编辑的小例子。谢谢你的帮助性改进。但这里我的注意力被JSON描绘了出来,看起来有点简单。我希望有人能给我一点关于如何用JSON转换现有代码的想法JSON
require("Database.class.php");
$db = new Database("server_name", "mysql_user", "mysql_pass", "mysql_database");