Php 使用编辑器Datatables中的其他字段值验证字段
我的数据库如下:Php 使用编辑器Datatables中的其他字段值验证字段,php,datatables,Php,Datatables,我的数据库如下: Editor::inst( $db, 'servidores' ) ->fields( Field::inst('id'), Field::inst('user_id') ->validator(Validate::required(ValidateOptions::inst() ->message('Required field!') )) ->validator(function($val, $
Editor::inst( $db, 'servidores' )
->fields(
Field::inst('id'),
Field::inst('user_id')
->validator(Validate::required(ValidateOptions::inst()
->message('Required field!')
))
->validator(function($val, $data){
$result = mysqli_query($con, "select * from table where data= ????? and user_id= '" . $val . "'");
if (mysqli_num_rows($result) > 0){
return false;
}else{
return true;
}),
Field::inst('date')
->validator(Validate::required(ValidateOptions::inst()
->message('Required field!')
))
)
->process( $_POST )
->json();
如果数据库中存在用户id和日期,我需要阻止插入,例如:
user_id | data
1 | 1
2 | 1
2 | 2
2 | 1 //wrong
我尝试验证如下:
->validator(function($val, $data){
$result = mysqli_query($con, "select * from table where data= ????? and user_id= '" . $val . "'");
if (mysqli_num_rows($result) > 0){
return false;
}else{
return true;
}),
但是我无法获取要在select上使用的数据值。请尝试以下修改的查询
$result = mysqli_query($con, "select * from table where data= '&data' and user_id= '" . $val . "'");
解决办法是:
->validator( function ($editor, $action, $data) {
if ( $action == Editor::ACTION_EDIT || $action == Editor::ACTION_CREATE) {
foreach ($data['data'] as $key => $values) {
$pkey = $editor->pkeyToArray( $key );
$any = $editor->db()->any( 'servidores', function ($q) use ($pkey, $values) {
$q->where( 'cidadao_id', $values['servidores']['user_id']);
$q->where( 'data', $values['servidores']['data'] );
});
if ( $any ) {
return 'False';
}
}
}
}
)
我喜欢这个主意。发布问题,忽略帮助他人发布的正确代码,自己发布答案,然后接受它:哇。你这个好主意让我很开心。敬礼。