2017-08-26 29 views
0

我想在电子邮件字段上实现验证,当我想要编辑模式弹出窗口上的用户时。电子邮件填充了用户的电子邮件,当我进行验证时,表示电子邮件已被使用。所以我决定使用数组过滤数据库中的所有电子邮件,并排除数组中的用户电子邮件。这似乎很好,如果我手动设置用户ID变量,但我不能从窗体动态获得用户ID,我希望有人可以帮助。 我相信这个问题是在这里:检查电子邮件已存在错误undefined索引:user_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!#$%&amp;'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&amp;'*+/=?^_`{|}~-]+)*|"(?:[\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

我已经成功地梳理出来将此代码添加到jQuery验证

remote: { 
        url: "../controllers/ctrl_admin_user_app/check_email_validation_existing_user.php", 
        type: "post", 
        data: { 
         user_id: function() { 
         return $("#user_id").val(); 
         } 
        } 
       }, 
0

你的隐藏字段没有值。它应该是:

<input type="hidden" name="user_id" value="$user_id" /> 
+0

嗨@Faust感谢您的答案隐藏提交的值由功能GetUserDetail填充(id)当我打开模态窗口时被触发。这是我看到使用谷歌开发者控制台 pippo