Как решить неопределенный индекс - PullRequest
0 голосов
/ 08 марта 2019

У меня есть такая форма, если я выбираю уровень администратора, то отдел со списком отключается, затем при выборе уровня персонала активируется отдел со списком и отображаются параметры отдела, этот метод работает,но он обнаружил ошибку в процессе сохранения, выбрав уровень администратора, и отдел форм не активен, enter image description here enter image description here enter image description here

Это мой код

    <div class="form-group">
            <label class="control-label col-sm-4" for="level">Level</label>
            <div class="col-sm-4"> 
              <select name="level" id="level" class="form-control">
              <option value="null">-- Level --</option>
              <option value="admin">Admin</option>
              <option value="staff">Staff</option>
              <option value="client">Client</option>
              </select>
            </div>
          </div>
          <div class="form-group">
            <label class="control-label col-sm-4" for="department">Department</label>
            <div class="col-sm-4"> 
              <select name="department" id="department" class="form-control">

              </select>
            </div>
          </div>
 $("#level").change(function(){

        // variabel dari nilai combo box provinsi
        var id = $("#level").val();


        // mengirim dan mengambil data
        $.ajax({
            type: "POST",
            dataType: "html",
            url: "search_level.php",
            data: "level="+id,
            success: function(msg){

                // jika tidak ada data
                if(msg == ''){
                  var x=document.getElementById("department")
                  x.value=""
                  x.disabled=true
                }               
                // jika dapat mengambil data,, tampilkan di combo box kota
                else{
                  var x=document.getElementById("department")
                  x.disabled=false
                    $("#department").html(msg);                                                     
                }
            }
        });    
    });

код сохранения проза

   <?php

include "../config/koneksi.php";

$name = $_POST['name'];
$user = $_POST['username'];
$password = md5($_POST['password']);
$level = $_POST['level'];
$deparment = $_POST['department'];

$status = '1';
$tgl_dibuat = date("Y-m-d h:i:s");

$query = mysqli_query($con, "INSERT INTO user (nama,user,password,level,department,tgl_dibuat,status) VALUES ('$name','$user',
'$password','$level','$deparment','$tgl_dibuat','$status')");

if ($query) {
    ?>
    <script language="JavaScript">
    alert('User Saved');

    </script>
    <?php
} else {
    ?>
    <script language="JavaScript">
    alert('Failed');
    document.location='user';
    </script>
    <?php
} 
?>

код поиска

<?php
    include "../config/koneksi.php";

    $id = $_POST['level'];

    $query = mysqli_query($con, "SELECT * FROM department WHERE level='$id'");
    while($data_prov=mysqli_fetch_array($query)){   
    ?>
        <option value="<?php echo $data_prov["department"] ?>"><?php echo $data_prov["department"] ?></option><br>

    <?php
    }
    ?>

Ответы [ 2 ]

2 голосов
/ 08 марта 2019

Если поле отключено, вы не отправите $_POST['department'];, поэтому:

$deparment = $_POST['department'];

не сможет загрузить 'department' индекс вашего почтового запроса.Вы можете сделать:

$department = isset($_POST['department']) ? $_POST['department'] : "Default value";

Обратите внимание, что ваш код небезопасен, так как вы не проверяете значения и не экранируете строки, кто-то может легко вставить SQL-код в форму.См. mysqli_real_escape_string().

Я бы по крайней мере избежал ваших строк:

$name = mysqli_real_escape_string($_POST['name']);
$user = mysqli_real_escape_string($_POST['username']);
$password = md5($_POST['password']);
$level = mysqli_real_escape_string($_POST['level']);
$deparment = isset($_POST['department']) ? mysqli_real_escape_string($_POST['department']) : "Default value";

Также, как отмечает @alexis, это будетеще лучше использовать Подготовленные заявления .

0 голосов
/ 08 марта 2019

В основном эта ошибка говорит о том, что в файле "add_user.php" в строке 9 вы пытаетесь напечатать индекс, который на самом деле не существует. Эта строка кода приведена ниже ...

<option value="<?php echo $data_prov["department"] ?>"><?php echo $data_prov["department"] ?></option><br>

Итак, чтобы решить эту проблему, вы должны выяснить, как называются столбцы в таблице базы данных department. Просто введите или скопируйте и вставьте точно такое же имя столбца вместо department в приведенную ниже строку кода ...

<option value="<?php echo $data_prov["column_name"] ?>"><?php echo $data_prov["column_name"] ?></option><br`>

Тогда эта ошибка будет устранена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...