簡體   English   中英

PHP,AJAX和服務器-客戶端的挫敗感

[英]PHP, AJAX, and server-client frustrations

我有一個從php生成的表。 因為我是自己寫的,而且我不是專家,所以我這樣做的方法可能不是最有效的方法。

當用戶將零件號粘貼到上一頁的搜索框中時,一切就開始了,然后將其發送到此處的變量lines下的return.php中。

return.php

$c = $_POST['c'];
if (!$_SESSION['lines']) {
  $_SESSION['lines'] = $_POST['lines'];
}
$partNumber = array(); //define $partNumber as array

$x = -1;
$supplierQuery      = "SELECT distinct supplier, quotePartNumber FROM allparts WHERE quotePartNumber = '$q'" ;
$supplierResult     = mysqli_query($con, $supplierQuery);

foreach ($_SESSION['lines'] as $q) {
 $x = $x + 1; // each time we loop through this, x++

   while ($row = mysqli_fetch_array($supplierResult)) {
     $partNumber[]   = $row['quotePartNumber'];
     $customerQuery  = "SELECT DISTINCT quoteCustomer FROM $supplier where quotePartNumber = '$q'";

    if (!$c) { // $c becomes set once a user types in an end customer - without that, we want ALL generic info to be returned.
        $costQuery      = "SELECT * FROM $supplier where quotePartNumber = '$partNumber[$x]' ORDER BY quoteCost ASC LIMIT 1" ;
      } else {            
        $costQuery      = "SELECT * FROM $supplier where quotePartNumber = '$partNumber[$x]' and quoteCustomer = '$c' ORDER BY quoteCost ASC LIMIT 1" ;
       }
       $getCustomer      = mysqli_query($con, $customerQuery);
    }

后來在我的桌子上,我有這個:

<td><?= $partNumber[$x] ?></td>
<td><?= $cost ?></td>
<td>
  <select class="btn btn-danger" onChange="selectCustomerCMR(this.value)">
  <option value="" disabled selected><?php if($c) { print $c; } else { print "Select Purchasing Customer";} ?></option>                  

  <?php                              
  while ($row = mysqli_fetch_array($getCustomer)) {                                 

  $customerName = $row['quoteCustomer'];          
  ?>
    <option><?= $customerName ?></option>                        

  <?php
  }
  ?>          
  </select>    
</td>

下拉菜單的任何更改都將啟動以下腳本:

<script>
function selectCustomerCMR(str) {
var id = str;

$.ajax({
      type: 'POST',
      url: 'return.php',
      data: {'c':id,'lines':lines},        
        success:function(data){
        $("#info").html(data);
        }
  });        
}
</script>

我想做什么

假設我生成的表格有3行,其中包含部件號 在此處輸入圖片說明

有一個下拉列表允許用戶選擇特定的客戶。 當用戶單擊它時,腳本將使用該值,並使用AJAX將其發送回同一頁面(return.php),然后使用$c = $_POST['c'];捕獲$c = $_POST['c']; 碼。

我的問題

當return.php使用$c的值加載“第二次”時,我不知道如何制作它,以便用戶選擇的行被更改 現在,無論何時我從行的下拉列表中選擇一個客戶,return.php都會重新加載,它將該客戶分配給FIRST行,而忽略所有其他行。

我專門創建了$partNumber作為數組,並使用$x所以每次foreach循環迭代時,我都可以增加x的值。 這樣$partNumber[0] ,因此在上表的三行中,第一行是$partNumber[0] ,第二行是$partNumber[1]$partNumber[1] ... 但是我不知道如何將這些信息放入javascript函數,並在重新加載時將其發送回頁面,以便我可以在條件適合該行的情況下將SQL查詢更改為“僅行動” ...

感謝您的閱讀,也感謝您的任何幫助!

考慮將您的<select>代碼更改為此:

<select class="btn btn-danger" data-x="<?= $x ?>" onChange="selectCustomerCMR(this)">

然后,您的Ajax代碼可以更改為此:

function selectCustomerCMR(select) {
    var id = select.value, x = select.getAttribute("data-x");

    $.ajax({
        type: 'POST',
        url: 'return.php',
        data: { c: id, lines: lines, x: x },        
        success: function(data){
            // Update!
        }
    });        
}

這樣,您的PHP可以同時獲取cx

暫無
暫無

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

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