簡體   English   中英

顯示文本框多行值

[英]Display textbox multiple row values

我有一個Category下拉選擇和Mobile_Number文本字段。 根據我的類別選擇,“移動”文本框將獲取數據庫值。

我的問題是,有時同一類別具有兩個或多個“移動”文本框值。 在這種情況下,我要被顯示在由逗號(分離的單個文本框的所有移動數值, )。

樣本表數據

Mobile_Number  Category
  123            IT
  345            IT
  456            IT

在這種情況下,當選擇“ IT”類別時,我想在文本框中顯示輸出,如下所示:-

123,345,456

我的工作代碼:

Ajax頁面代碼:

$departid = $_POST['depart'];   // department id    
$sql = "SELECT Mobile_Number FROM admin_panel WHERE Category=".$departid;    
$result = mysqli_query($db, $sql);    
$users_arr = array();

while ($row = mysqli_fetch_array($result))
{
  //$userid = $row['Emp_Id'];
  $name = $row['Mobile_Number'];
  //$users_arr[] = array("id123" => $userid, "name123" => $name);
  $users_arr[] = array("name123" => $name);
}
echo json_encode($users_arr);

下拉菜單和文本框

<select name="cat" id="cat">
  <option disabled selected value> -- select an option -- </option>
  <option value="1">Stencil Team</option>
  <option value="2">Tooling Team</option>
  <option value="3">IT</option>
  <option value="4">Manager</option>
</select>

<input name="phoneNumber" id="pnum" type="text">

JavaScript:

$(document).ready(function(){
  $("#cat").change(function(){
    var deptid = $(this).val();
    $.ajax({
      url: 'ajaxdropdown.php',
      type: 'post',
      data: { depart: deptid },
      dataType: 'json',
      success: function(response) {
        var len = response.length;                      
        $("#pnum").empty();
        for (var i = 0; i<len; i++) {
          var name1234 = response[i]['name123'];
          $("#pnum").val(name1234);
        }
      }
    });
  });
});

您的success功能必須修改:

function(response){
    var len = response.length;
    var name1234 = "";                      
    $("#pnum").empty();
    for( var i = 0; i<len; i++){
        name1234 += (name1234.length < 1) ? response[i]['name123'] : ',' + response[i]['name123'];
    }
    $("#pnum").val(name1234);
}

您可以使用map()構建返回的name123值的數組,然后join()其連接在一起,然后再將其設置為輸入的val() 像這樣:

success: function(response) {
  var names = response.map(function() {
    return this.name123;
  });
  $("#pnum").val(names.join(',');
}

您無需在AJAX頁面代碼中執行while循環,您可以在查詢中使用GROUP_CONCAT和GROUP BY來分隔多個移動電話號碼逗號。

檢查下面的AJAX頁面代碼

<?php
$departid = $_POST['depart'];   // department id
$sql = "SELECT GROUP_CONCAT(Mobile_Number) AS mob_number FROM admin_panel WHERE 
Category='".$departid."' GROUP BY Category";
$result = mysqli_query($db,$sql);
$row = mysql_fetch_row($result);
$name = $row[0];
echo json_encode($name);
?>

根據此代碼的輸出,您也不需要Java語言中的For循環。 您可以將AJAX的響應設置為phoneNumber字段。

JavaScript代碼

$(document).ready(function(){
  $("#cat").change(function(){
    var deptid = $(this).val();
    $.ajax({
      url: 'ajaxdropdown.php',
      type: 'post',
      data: { depart: deptid },
      dataType: 'json',
      success: function(response) {
          $("#pnum").val(response);
      }
    });
  });
});

我希望這可以對您有所幫助(PHP):

$numbers = [];
while ($row = mysqli_fetch_array($result)) {
    $numbers[] = $row['Mobile_Number'];
}

echo json_encode(implode(', ',$numbers));

而這對js:

success: function(response) {                    
    $("#pnum").empty().val(response);        
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM