仅更新form-JQuery,PhP的更新字段的db表

时间:2017-09-04 12:08:23

标签: php jquery

我有一个庞大的多步骤表单,其中包含mysql db中多个表的数据。对于每个字段我的html就像 -

  input type="text" name="names" value="" // value set using php echo

在php上提交我正在为表单的所有字段执行此操作 -

$name=$_POST['names'] ?? ' ' 
  • 以避免未识别的索引和未识别的变量

然后我更新我的第一个表并写入更新后的日志。

$query=mysqli_query($con,"UPDATE teacherpersonal set name='$name' ... where id=$id");
write_mysql_log("teacherpersonal updated", "facultydetails", $id). 

我已定义write_mysql_log

同样,我使用更新的值或空白("")值更新所有剩余的表。

由于您可以看到即使字段未更改,也始终执行更新查询。因此,始终记录表的更新。但这不是我想要的。我想只更新表中那些已更改并保持不变的字段,并仅记录那些更新的表。许多表格不会以这种方式更新,因为用户可能只会更改一些细节。

使用jquery和php。

我的write_mysql_log是

function write_mysql_log($message, $db, $faculty_id)
{

 $con=mysqli_connect("localhost","root","");
 mysqli_select_db($con,"facultydetails");


  // Construct query
  $sql = "INSERT INTO my_log (message, faculty_id) VALUES('$message', '$faculty_id')";

 $query=mysqli_query($con, $sql);
  // Execute query and save data

  if($query) {
   echo 'written to the database';  
  }
  else {
    echo 'Unable to write to the database';
  }

}

3 个答案:

答案 0 :(得分:0)

这可以通过两种不同的方式实现。 1)在jQuery的帮助下检查更新的值,仅将这些值发布到php脚本 2)在更新检查时,使用基于该标准的更新的当前值更新数据库表。

解决方案1将处理过程与另一个进行比较的时间较短。

答案 1 :(得分:0)

您只需要更新用户编辑的值,通过这样做就可以实现它;

$oldvalue = array("username" => "green", "email" => "green@mail.com","dob" => "111");
$newvalue = array( "email" => "green@mail.com","dob" => "111","username" => "blue");
$updates = array_diff($newvalue, $oldvalue);
$implodeArray = implode(', ', $updates);

$sql = ("UPDATE user WHERE userID=$userID SET $implodeArray");
mysql_query($sql,$this->_db) or die(mysql_error());
mysql_close();

输出:

$updates = array_diff($newvalue, $oldvalue);

将:

Array ( [username] => blue )

更改了一个

答案 2 :(得分:0)

在考虑了很多选项之后好了 -

  1. 为旧数据和新数据创建json对象,然后比较并检查更改的值并更新该表并记录它。
  2. 或创建一个包含旧数据和新数据的php数组并检查diff然后执行相同操作(如Ram Karuppaiah所建议的那样)
  3. 或者错误的想法是在每个输入上都有一个标志,然后使用onkeyup jquery事件标记哪些已更改,然后尝试仅更新那些字段表。
  4. 所以最后我做的是让表格提交所有数据。早些时候我把PHP中的数据作为$ name = $ _ POST [' names'] ?? ' ' (如果没有提交任何内容或者提交的内容然后是其值,则为空白)。

    1. 在php中更新语句之前,我正在查询表并将数据库值与我得到的值进行比较,如果所有相同的话我都不做任何事情。如果没有,那么我用新值更新表并记录更改。