当我想在模态弹出窗口中编辑用户时,我正在尝试在电子邮件字段上实现验证。电子邮件已填写用户电子邮件,当我进行验证时,它表示电子邮件已被使用。所以我决定使用数组过滤数据库中的所有电子邮件,并从数组中排除用户电子邮件。如果我手动设置用户id变量但我无法从表单动态获取用户ID,我希望有人可以提供帮助。 我相信问题在这里:
url: form.action,
type: form.method,
data: $(form).serialize(),
非常感谢
这是我的html表单:
<div class="modal fade" id='EditUserModal' tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="close">
<span aria-hidden="true"></span>
</button>
<h4 class="modal-title">Modifica informazioni cliente</h4>
</div>
<div class="modal-body">
<form id="formedituser" action="../controllers/ctrl_admin_user_app/ctrl_admin_update_user_details.php" method="post">
<div class="form-body">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="control-label">Nome Cliente
<span class="required"> * </span>
</label>
<div class="input-icon">
<i class="fa fa-id-badge"></i>
<input type="text" id="firstName" class="form-control" placeholder="Inserici il nome del cliente" name="firstName">
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label">Cognome Cliente
<span class="required"> * </span>
</label>
<div class="input-icon">
<i class="fa fa-id-badge"></i>
<input type="text" id="lastName" class="form-control" placeholder="Inserisci il cognome del cliente" name="lastName">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="control-label">Email Cliente
<span class="required"> * </span>
</label>
<div class="input-icon">
<i class="fa fa-envelope"></i>
<input type="text" id="userEmail" class="form-control" placeholder="Inserisci email cliente" name="userEmail">
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label">Telefono Cliente
<span class="required"> * </span>
</label>
<div class="input-icon">
<i class="fa fa-phone"></i>
<input type="text" id="userTel" class="form-control" placeholder="Inserisci telefono utente" name="userTel">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="control-label">Codice Fiscale</label>
<div class="input-icon">
<i class="fa fa-id-card"></i>
<input type="text" id="userFiscalcode" class="form-control" placeholder="Inserisci codice fiscale" name="userFiscalcode">
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label">Data di nascita</label>
<div class="input-icon">
<i class="fa fa-calendar"></i>
<input type="text" id="userBirth" class="form-control" placeholder="Inserisci la data di nascita" name="userBirth">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="control-label">Documento di identità</label>
<div class="input-icon">
<i class="fa fa-id-card"></i>
<input type="text" id="userDocument" class="form-control" placeholder="Inserisci documento del cliente" name="userDocument">
</div>
</div>
</div>
<div class="col-md-6" id="showrole">
<div class="form-group">
<label class="control-label">Ruolo Cliente
<span class="required"> * </span>
</label>
<select class="form-control bs-select" id="userRole" name="userRole">
<option value="client">Cliente</option>
<option value="admin">Amministratore</option>
</select>
</div>
</div>
</div>
<div class="row" id="showgroup">
<div class="col-md-6">
<div class="form-group">
<label class="control-label">User Group
<span class="required"> * </span>
</label>
<select class="form-control bs-select" id="userGroup" name="userGroup">
<?php
$select_group_query="SELECT group_id, group_name FROM user_group";
$run= mysqli_query($conn, $select_group_query);
while($row= mysqli_fetch_array($run)) {
echo "<option value= '".$row['group_id']."' >" . $row['group_name'] . "</option>";
}
?>
</select>
</div>
</div>
</div>
<input type="hidden" id="user_id" name="user_id"/>
</div>
<div class="form-actions">
<button type="submit" class="btn blue" onclick='UpdateUserDetail()'>Aggiorna</button>
</div>
</form>
</div>
</div>
</div>
</div>
这是php
require_once('../../../config/config.php');
$user_email = $_GET['userEmail'];
$user_id = $_GET['user_id'];
$query = "SELECT user_email FROM users WHERE user_id NOT LIKE ? ";
$stmt = mysqli_prepare($conn, $query);
mysqli_stmt_bind_param($stmt, 'i', $user_id);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
while($row = mysqli_fetch_assoc($result)) {
$times[] = $row['user_email'];
}
if(in_array($user_email, $times)){
echo 'false';
}else{
echo 'true';
}
这是javascript
function GetUserDetail(id) {
$("#user_id").val(id);
var user_id = $('#user_id').val();
$.ajax({
url:"../controllers/ctrl_admin_user_app/ctrl_admin_get_user_details.php",
method:"POST",
data:{user_id:user_id},
dataType:"json",
success: function(data){
console.log(data);
$('#firstName').val(data.user_first);
$('#lastName').val(data.user_last);
$('#userEmail').val(data.user_email);
$('#userTel').val(data.user_telephone);
$('#userFiscalcode').val(data.user_fiscalcode);
$('#userBirth').val(moment(data.user_birth).format('DD/MM/YYYY'));
$('#userDocument').val(data.user_iddocument);
$('#userRole').val(data.user_role);
// ricarico il campo per falo funzionare con il plugin bs-select
$('#userRole').selectpicker('refresh');
// Mostro il campo user group solo pe ri clienti e non gli amministratori
if($("#userRole").val() == "client"){
$("#showgroup").show();
$("#showrole").show();
}else{
$("#showgroup").hide();
$("#showrole").hide();
};
// $('#userPippo').selectpicker('val', data.group_id).selectpicker('refresh');
$('#userGroup').val(data.group_id);
// // ricarico il campo per falo funzionare con il plugin bs-select
$('#userGroup').selectpicker('refresh');
$("#EditUserModal").modal("show");
}
});
}
// Funzione per agggiornare i dettagli del cliente lato admin_view_users
function UpdateUserDetail() {
$(document).ready(function() {
$.validator.methods.email = function( value, element ) {
return this.optional( element ) || /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/.test( value );
};
$.validator.methods.fiscalcode = function( value, element ) {
return this.optional( element ) || /^(?:[B-DF-HJ-NP-TV-Z](?:[AEIOU]{2}|[AEIOU]X)|[AEIOU]{2}X|[B-DF-HJ-NP-TV-Z]{2}[A-Z]){2}[\dLMNP-V]{2}(?:[A-EHLMPR-T](?:[04LQ][1-9MNP-V]|[1256LMRS][\dLMNP-V])|[DHPS][37PT][0L]|[ACELMRT][37PT][01LM])(?:[A-MZ][1-9MNP-V][\dLMNP-V]{2}|[A-M][0L](?:[\dLMNP-V][1-9MNP-V]|[1-9MNP-V][0L]))[A-Z]$/i.test( value );
};
// Script per la gestione della validazione form
$("#formedituser").validate({
errorElement: 'span',
errorClass: 'help-block help-block-error',
ignore: "",
// imposto le regole di validazione
rules: {
firstName: {
required : true
},
lastName: {
required: true
},
userEmail: {
required: true,
email: true,
remote: "../controllers/ctrl_admin_user_app/check_email_validation_existing_user.php",
async: false
},
userTel: {
required: true,
number: true
},
userFiscalcode: {
required: true,
fiscalcode: true
},
userBirth: {
required: false,
dateITA : true
}
},
// mostro messaggi di errore personalizzati
messages: {
firstName: "Ops, il campo nome è richiesto!",
lastName: "Ops, il campo cognome è richiesto!",
userEmail: {
required: "Ops, il campo email è richiesto!",
email: "Ops, il formato email non è corretto!",
remote: "Ops, questo indirizzo email esiste già, per favore scegline un altro!"
},
userTel: {
required: "Ops, il campo telefono è richiesto!",
number: "Ops, il formato del numero non è corretto!"
},
userFiscalcode: {
required: "Ops, il campo codice fiscale è richiesto!",
fiscalcode: "Ops, non sembra un codice fiscale valido!"
},
userBirth: {
dateITA : "Ops, Il formato data deve essere nel formato giorno/mese/anno"
}
},
highlight: function (element) {
$(element)
.closest('.form-group').addClass('has-error');
},
success: function(label) {
label.closest('.form-group').removeClass('has-error');
label.remove();
},
// invio i dati del form utilizzando ajax
submitHandler: function(form) {
$.ajax({
url: form.action,
type: form.method,
data: $(form).serialize(),
// se tutto va a buon fine mostro un messaggio di successo utilizzando sweetalert
success: function(response) {
console.log(response);
$("#EditUserModal").modal("hide");
swal({
title: response.title,
text: response.message,
type: response.status
},
function(){
location.reload();
}
);
},
error: function(jqXHR, exception) {
$("#EditUserModal").modal("hide");
if (jqXHR.status === 0) {
swal('Il server non risponde', 'Siamo spiacenti non è stato possibile eseguire questa operazione, per favore contatta l\'amministratore di sistema.', 'info');
} else if (jqXHR.status == 404) {
swal('Errore 404', 'Siamo spiacenti non è stato possibile eseguire questa operazione, per favore contatta l\'amministratore di sistema.', 'info');
} else if (jqXHR.status == 500) {
swal('Errore 500', 'Siamo spiacenti non è stato possibile eseguire questa operazione, per favore contatta l\'amministratore di sistema.', 'info');
} else if (exception === 'parsererror') {
swal('Si è verificato un errore!', 'Siamo spiacenti non è stato possibile eseguire questa operazione, per favore contatta l\'amministratore di sistema.', 'info');
} else if (exception === 'timeout') {
swal('Time Out', 'Siamo spiacenti non è stato possibile eseguire questa operazione, per favore contatta l\'amministratore di sistema.', 'info');
} else if (exception === 'abort') {
swal('Richiesta Annullata', 'Siamo spiacenti non è stato possibile eseguire questa operazione, per favore contatta l\'amministratore di sistema.', 'info');
} else {
swal('Errore non previsto', 'Siamo spiacenti non è stato possibile eseguire questa operazione, per favore contatta l\'amministratore di sistema.', 'info');
}
}
});
}
});
// rimuovo le notifiche di errore
$('#EditUserModal').on('hidden.bs.modal', function () {
$('#formedituser').validate().resetForm();
$('.has-error').removeClass('has-error');
});
});
}
答案 0 :(得分:0)
您的隐藏字段没有价值。它应该是:
<input type="hidden" name="user_id" value="$user_id" />
答案 1 :(得分:0)
我已经设法将其添加到Jquery验证
中remote: {
url: "../controllers/ctrl_admin_user_app/check_email_validation_existing_user.php",
type: "post",
data: {
user_id: function() {
return $( "#user_id" ).val();
}
}
},