2016-12-21 47 views
1

我想在輸入文本valor中添加一個值,並將此值分配給它所在的行,爲此我需要傳遞給更新查詢IDvalor使用AJAX將變量從動態html表傳遞到php更新查詢

我在做什麼錯?

<?php 
$IDTipoEquipamento = $_POST['Car']; 
$result = mysqli_query($conn,"SELECT tipocaracteristicas.IDTipoCaracteristicas,tipoequipamento.TipoEquipamento, caracteristicas.Caracteristica, Valor FROM `tipocaracteristicas` LEFT JOIN tipoequipamento on tipoequipamento.IDTipoEquipamento= tipocaracteristicas.IDTipoEquipamento LEFT JOIN caracteristicas on caracteristicas.IDCaracteristicas=tipocaracteristicas.IDCaraterisiticas WHERE tipocaracteristicas.IDTipoEquipamento= '$IDTipoEquipamento';"); 
echo "<table width='100% class='sortable' id='datatables-example'> 
    <tr> 
</tr> 
    <tr> 
    <td class='pure-table'></td> 
     <td class='pure-table'><b>Tipo de Equipamento</b></td> 
     <td class='pure-table'><b>Caracteristica</b></td> 
     <td class='pure-table'><b>Valor</b></td> 
     <td class='pure-table'><b>Atribuir</b></td> 
    </tr>"; 
while($row = mysqli_fetch_array($result)) 
{ 
echo "<tbody data-link='row' class='rowlink'>"; 
echo "<tr>"; 
echo "<td><input type='text' name='IDTipoCaracteristicas' id='IDTipoCaracteristicas' value='". $row['IDTipoCaracteristicas'] . "'></td>"; 
echo "<td>" . $row['TipoEquipamento'] . "</td>"; 
echo "<td>" . $row['Caracteristica'] . "</td>"; 
echo "<td><input type='text' name='valor' id='valor' value=''></td>"; 
echo "<td><a href='' onclick='UpdateTable()'><img id='img' src='save_icon.gif'/></a></td>"; 
echo "</tr>"; 
echo "</tbody>";  
} 
echo"<br>"; 
echo "</table>"; 
mysqli_close($conn); 
} 
?> 

的Jquery + Ajax的

<script type="text/javascript"> 
    function UpdateTable() { 

     $("#valor").on('input', function() { 
      var valor = $(this).val(); 

     $.ajax({ 
      url: 'insertCharacteristicsEquipment.php', 
      type: "POST", 
      cache:false, 
      data:{valor:valor}, 
      async: false, 
      dataType:'html', 
      success:function(data) { 
       $("#valor").html(data); 
        alert(data); 
      }, 
      error: function(jqXHR, textStatus, errorThrown){ 
        alert(errorThrown); 
       } 
      }); 
     }); 

      $("#IDTipoCaracteristicas").on('input', function(){ 
      var IDTipoCaracteristicas = $(this).val(); 
     $.ajax({ 
      url: 'insertCharacteristicsEquipment.php', 
      type: "POST", 
      cache:false, 
      data:{IDTipoCaracteristicas:IDTipoCaracteristicas}, 
      async: false, 
      dataType:'html', 
      success:function(data) { 
        $("#IDTipoCaracteristicas").html(data); 
        alert(data); 
      }, 
      error: function(jqXHR, textStatus, errorThrown){ 
        alert(errorThrown); 
       } 
      }); 

     }); 
    } 
</script> 

PHP UPDATE查詢頁面

<?php 
include ('conetar.php'); 
if(isset($_POST['valor'], $_POST['IDTipoCaracteristicas'])){ 
    $valor = $_POST['valor']; 
    $IDTipoCaracteristicas= $_POST['IDTipoCaracteristicas']; 
    $sql = "UPDATE `tipocaracteristicas` SET `Valor`='$valor' WHERE `IDTipoCaracteristicas`= '$IDTipoCaracteristicas'"; 
    if(mysqli_query($conn,$sql)){ 
} else{ 
    echo "ERROR: Could not able to execute $sql. "; 
} 
    mysqli_close($conn) 
} 
?> 
+0

這裏有什麼問題,你會得到什麼 –

+0

錯誤?你也正在使用oninput事件來製作ajax,這可能會導致錯誤,因爲在每次擊鍵時發送ajax請求......並且您的服務器可能無法處理該..使用onChange/onfouseout – RohitS

+0

有一堆代碼沒有正確解釋*什麼是不工作*,*預期輸出是什麼*等。請清楚地解釋你的問題。 –

回答

1

見下這裏兩個語句,

echo "<td><input type='text' name='IDTipoCaracteristicas' id='IDTipoCaracteristicas' value='". $row['IDTipoCaracteristicas'] . "'></td>"; 
                  ^^^^^^^^^^^^^^^^^^^^^^^^^ 

echo "<td><input type='text' name='valor' id='valor' value=''></td>"; 
              ^^^^^^^^^ ^^^^^^^^ 

你爲所有的錶行的分配相同ID,使用類代替。指定類每個IDTipoCaracteristicas勇氣輸入元素以及對更新表超鏈接。此外,您並未在Valor輸入元素中分配任何值。另外,使用javascript:void(0);使錨標記不可鏈接,否則每次單擊鏈接時都會重定向。所以,你的while()循環應該是這樣的:

while($row = mysqli_fetch_array($result)) { 
    echo "<tbody data-link='row' class='rowlink'>"; 
    echo "<tr>"; 
    echo "<td><input type='text' name='IDTipoCaracteristicas' class='IDTipoCaracteristicas' value='". $row['IDTipoCaracteristicas'] . "'></td>"; 
    echo "<td>" . $row['TipoEquipamento'] . "</td>"; 
    echo "<td>" . $row['Caracteristica'] . "</td>"; 
    echo "<td><input type='text' name='valor' class='valor' value='". $row['Valor'] ."'></td>"; 
    echo "<td><a href='javascript:void(0);' class='updateTable'><img id='img' src='save_icon.gif'/></a></td>"; 
    echo "</tr>"; 
    echo "</tbody>";  
} 

隨後,您的jQuery/AJAX代碼應該是這樣的:

<script> 
    $(document).ready(function(){ 
     $(document).on('click', '.updateTable', function(){ 
      var IDTipoCaracteristicas = $(this).parents('tr').find('.IDTipoCaracteristicas').val(); 
      var valor = $(this).parents('tr').find('.valor').val(); 

      $.ajax({ 
       url: 'insertCharacteristicsEquipment.php', 
       type: "POST", 
       cache:false, 
       data:{valor:valor, IDTipoCaracteristicas: IDTipoCaracteristicas}, 
       async: false, 
       success:function(data){ 
        alert(data); 
       }, 
       error: function(jqXHR, textStatus, errorThrown){ 
        alert(errorThrown); 
       } 
      }); 
     }); 
    }); 
</script> 
+0

如果我改變輸入文本'Valor'的值,函數'onclick ='UpdateTable(「。$ row ['IDTipoCaracteristicas']。」,「。$ row ['Valor']。」)',doesn' t傳遞'的值。 $ row ['Valor'] .' changed .. – djva

+0

@djva這是因爲它們中的任何一個或兩個列值都是字符串類型。* Valor *和* IDTipoCaracteristicas *列的數據類型是什麼。我會相應地更新我的答案。 –

+0

IDTipoCaracteristicas的數據類型是數字,valor是varchar。問題不是IDTipoCaracteristicas,是Valor,因爲如果我從Valor強制一個值,它就會起作用。 – djva