php - ajaxCRUD : two questions about insert

标签 php jquery mysql ajax


我开始玩ajaxCRUD这似乎是一个简单但有效的类(class)。
我有一个这样的表用户:

CREATE TABLE tbl_users (
  usr_id        INT NOT NULL AUTO_INCREMENT ,
  usr_name      VARCHAR( 64 ) NOT NULL DEFAULT '' ,
  usr_surname   VARCHAR( 64 ) NOT NULL DEFAULT '' ,
  usr_pwd       VARCHAR( 64 ) NOT NULL ,
  usr_level     INT( 1 ) NOT NULL DEFAULT 0,
  PRIMARY KEY ( usr_id )
) ENGINE = InnoDB;

我的 PHP 代码是:

<?php
  $tblUsers->omitPrimaryKey();

  $tblUsers->displayAs("usr_name", "Nome");
  $tblUsers->displayAs("usr_surname", "Cognome");
  $tblUsers->displayAs("usr_pwd", "Password");
  $tblUsers->displayAs("usr_level", "Livello");
  $tblUsers->omitField("usr_pwd");

  $tblUsers->modifyFieldWithClass("usr_pwd", "password");

  $allowable_vals = array(1 => "USER", 2 => "ADMIN", 3 => "SUPERUSER");

  $tblUsers->defineAllowableValues("usr_level", $allowable_vals);
  $tblUsers->formatFieldWithFunction('usr_level', 'make_usr_level');
  $tblUsers->onAddExecuteCallBackFunction("AddCallBack");

  $tblUsers->addButtonToRow("Dettagli", "UserDetails.php");
  $tblUsers->addButtonToRow("Collega case", "HousesList.php"); 

  $tblUsers->setLimit(30);

  #my self-defined functions used for formatFieldWithFunction
  function make_usr_level($val){
    return FAUser::LevelToString($val);
  }  

  function AddCallBack($array)
  { 
    //these indexes are the fields of the db
    $success = qr("INSERT INTO tbl_users 
                    ( usr_id, 
                      usr_name, 
                      usr_surname, 
                      usr_pwd, 
                      usr_level )
                   VALUES (NULL, 
                           '" . $array[usr_name] . "', 
                           '" . $array[usr_surname] . "', 
                           AES_ENCRYPT('" . $array[usr_pwd] . "', 
                                       SHA2('FonteAlma_2013', 512)), 
                           " . $array[usr_level] . ");");
  }

  #actually show to the table
  $tblUsers->showTable();

?>  

表格显示正确并显示已插入的用户,但是当我添加新用户时,我得到:

4 - TheGivenName - TheGivenSurname - [BLOB - 7 B] - 0

所以密码和用户级别没有设置好。

此外,当我将级别字段编辑到表中(该表是一个包含三个级别的组合框)时,无论我选择什么值,我总是得到 0。

我哪里错了?

问候。

最佳答案

我编写了我的解决方案。

也许这不是最好/正确的解决方案......但似乎有效。

我添加了一个方法 onBeforeAddExecuteCallBackFunction(),该方法在执行 ADD 查询之前调用。
如果此回调返回 FALSE,则执行结束(函数 doAction 返回)。否则继续。

这是差异文件:

263d262
<   var $onBeforeAddExecuteCallBackFunction;
352d350
<     $this->onBeforeAddExecuteCallBackFunction   = '';
653,657d650
<   function onBeforeAddExecuteCallBackFunction($function_name){
<     $this->onBeforeAddExecuteCallBackFunction = $function_name;
<     $this->ajax_add = false;
<   }
< 
900,906d892
<         // Added
<         if ($this->onBeforeAddExecuteCallBackFunction != '') {
<           // If the Callback return FALSE, I quit
<           if (!call_user_func($this->onBeforeAddExecuteCallBackFunction, $submitted_array))
<           return;
<         }
< 

关于php - ajaxCRUD : two questions about insert,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19659843/

相关文章:

mysql - 在 m1 处理器中运行的 Docker 镜像

php - 在多个 PHP 文件中连接 MySQL 的最有效方法

javascript - jhtmlarea 无法在 updatepanel 内工作

PHP max() 和 min() 不同类型的奇怪行为

javascript - Onchange 使用 ajax 提交没有表单 ID 的表单

javascript - 如何删除javascript中的最后一行?

mysql - 更新table2后如何更新table1?

mysql - 如何在 case 语句中使用多个运算符

php - 使用供应商商店名称 (Dokan) 在 WooCommerce 中自定义电子邮件主题

javascript - 使用jquery问题验证和提交表单