检查电子邮件是否已存在错误未定义索引:user_id

时间:2017-08-26 16:06:16

标签: javascript

当我想在模态弹出窗口中编辑用户时,我正在尝试在电子邮件字段上实现验证。电子邮件已填写用户电子邮件,当我进行验证时,它表示电子邮件已被使用。所以我决定使用数组过滤数据库中的所有电子邮件,并从数组中排除用户电子邮件。如果我手动设置用户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!#$%&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');

    });



});



}

2 个答案:

答案 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();
                      }
                    }
                },