简体   繁体   English

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

[英]Check if email already exist error undefined index: user_id

I'm trying to implement a validation on an email field when i want to edit a user on a modal popup. 当我想在模式弹出窗口上编辑用户时,我正在尝试对电子邮件字段实施验证。 The email filed is filled with the user email and when i do the validation it says the email has already been used. 归档的电子邮件中填充了用户电子邮件,当我进行验证时,它说该电子邮件已被使用。 So I've decided to filter all the emails from the database using an array and excluding the user email from the array. 因此,我决定使用数组过滤来自数据库的所有电子邮件,并从数组中排除用户电子邮件。 It seems fine if i set the user id variable manually but i can't get the user id dynamically from the form and i wish someone can help. 如果我手动设置用户ID变量似乎很好,但是我无法从表单中动态获取用户ID,我希望有人可以提供帮助。 I believe the problem is here: 我相信问题在这里:

url: form.action,
                type: form.method,
                data: $(form).serialize(),

Many thanks 非常感谢

This is my html form: 这是我的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>

This is the php 这是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';
    }

this is the javascript 这是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');

    });



});



}

Your hidden field has no value. 您的隐藏字段没有价值。 It should be: 它应该是:

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

I've managed to sort it out adding this code to Jquery validation 我设法解决了将此代码添加到Jquery验证

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM