使用表单元素添加新行& PHP值

时间:2013-12-12 21:28:18

标签: javascript php

我有一张表,当按下按钮时,它会添加一个新行。这是:

<table id='editTable' width='655' border='1'>";
<tr><th width='330' align='left'>Expense Description</th><th width='100'>Cost</th></tr>

$result = mysqli_query($con,"SELECT ID,TASK_ID,EXPENSE_DESC,EXPENSE_COST FROM b_report_expense2 WHERE TASK_ID = $taskid AND REF = $referenceID");
while($row = mysqli_fetch_array($result))
{
$expenseDesc = $row['EXPENSE_DESC'];
$expenseCost = $row['EXPENSE_COST'];
$exID = $row['ID'];
<tr><td><input type='hidden' name='ref[]' value='$exID' /><input type='text' name='expense[]' value='$expenseDesc'></td>
<td><input type='text' name='expensecost[]' value='$expenseCost'></td></tr>
}

<tr><td colspan='2'><button class='no-style-button' type='button' onclick='displayResult2()'>Add Row</button><input type='submit' name='submit' value='submit'></td></tr></table>

当按下添加新行按钮时,它会添加一个新行,但它不会将$ exID识别为循环中的值。这是javascript:

function displayResult2()
{
var table=document.getElementById("editTable");
var row=table.insertRow(1);
var cell1=row.insertCell(0);
var cell2=row.insertCell(1);
cell1.innerHTML= "<input size='5' type='hidden' name='refID' value='$referenceID' style='padding:2px;'/><input type='text' name='expenseaddition[]' style='padding:2px;' size='80'>";
cell2.innerHTML="<input type='text' name='expensecostaddition[]' style='padding:2px;' size='6'>";
}

新行将添加到其他行上方的表格顶部。现在问题在于javascript中没有识别$ referenceID。该页面声明新行被添加到但它没有识别它。这个javascript是从外部文件调用到页面的,这是问题吗?

我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

问题是PHP是服务器端,而JS是客户端。这意味着在将页面提供给用户之后,JS将被执行。因为PHP变量只存在于服务器上,所以JS实际上将$referenceID作为字符串插入。

要解决此问题,您可以将$referenceID的值输出到JS var:

<script>
 var referenceID = <?php echo $referenceID?>; //If $referenceID isn't a numeric value, remember to use quotes (`'<?php echo $referenceID?>'`)
</script>
<!--Then include your JS-->
<script src="location" type="text/javascript"></script> 

通过这种方式你可以得到referenceID

cell1.innerHTML= "<input size='5' type='hidden' name='refID' value='"referenceID"' style='padding:2px;'/><input type='text' name='expenseaddition[]' style='padding:2px;' size='80'>";