2016-11-28 258 views
0

我想在表格中编辑可编辑的单元格,然后在不刷新整个页面的情况下点击“输入”更新数据库。从表格单元更新数据库而不刷新页面

首先我填充我的表像从SQL查询:

//up there - no important things 

echo'<table> 
     <tr>';     
     while($row = mysql_fetch_assoc($result)) 
     {      
      foreach($row as $key=>$value) 
      { 
       if(!($value == "id_p" || $value == "pass" || $value == "salt" || $value == "login")) 
       {    
       echo'<th>'.$value.'</th>'; 
       } 
      } 
     } 
     echo '</tr>'; 

     if(mysql_num_rows($result2) > 0) 
     { 
      while($row2 = mysql_fetch_assoc($result2)) 
      {       
       echo '<tr>'; 
       foreach($row2 as $key=>$value) 
       {       
        if(!($key == "id_p" || $key == "pass" || $key == "salt" || $key == "login")) 
         echo'<td>'.$value.'</td>'; 
       } 
       echo '</tr>'; 
      } 
     } 
     else 
      echo '<tr><td colspan="9">Brak wyników.</td></tr>'; 

echo'</table>'; 

然后我改变与脚本(不是我的脚本)细胞<td>

$(function(){ 
     $("td").click(function(event) 
     { 
      if($(this).children("input").length > 0) 
        return false; 
      var tdObj = $(this); 
      var preText = tdObj.html(); 
      var inputObj = $("<input type='text' />"); 
      tdObj.html(""); 
      inputObj.width(tdObj.width()) 
       .height(tdObj.height()) 
       .css({border:"0px",fontSize:"17px"}) 
       .val(preText) 
       .appendTo(tdObj) 
       .trigger("focus") 
       .trigger("select"); 
      inputObj.keyup(function(event){ 
       if(13 == event.which) // if ENTER 
       { 
        var text = $(this).val(); 
        tdObj.html(text); 

// SOMETHING HERE TO UPDATE DATABASE?? 

       } 
       else if(27 == event.which) { // if ESC 
         tdObj.html(preText); 
       } 
       }); 
       inputObj.click(function(){ 
         return false; 
       }); 
     }); 
}); 

,现在我卡住了。我怎样才能发送新的数据更新(无需刷新整个页面)?我不擅长js/ajax。 我已经创建了新的一页update_db.php

if(isset($_POST['post_name'])) 
{ 
    echo 'processing...'; 
    //mysql things... 
} 

但这是我的一切。

回答

1

除非您使用AJAX,否则无法进行刷新。

if(13 == event.which) // if ENTER 
{ 
    var text = $(this).val(); 
    tdObj.html(text); 
    $.POST("update_db.php", { tdVal: text }); 
} 

现在,您可以得到update_db.php

$_POSTtdVal自其从PHP取出7

+0

感谢回复我也建议使用的mysqli替代的MySQL。我想知道如何在成功或错误时打印消息?以及如何POST另一个变量(例如'id_p')?我想使用'mysqli',但是我遇到了'mysqli_real_escape_string'的问题,并且强制使用'mysql':( – Kafus

+0

这个不起作用:( – Kafus

+0

)你可以在这里添加'.done(function(data){// sth here });'在这个帖子结束之后:'.POST(“update_db.php”,{tdVal:text})。done(function(data){// body})。fail(function(err) {console.log(err);});' 因为你可以在控制台上看到错误是什么 –