我被困在一个问题的PHP分配我有。我创建了一个PHP脚本来生成表单输入,我必须从输入中获取数据并将其插入文本文档中。因此,我编写了生成两个输入和一个将数据写入文本文档的函数的代码。但是,我的文本文档显示为空白。如何正确定义从文本输入中获取多个值并将其插入文本文档的函数?下面是我到目前为止的代码:
<form method='post'>
<table border='0' cellpadding='3' cellspacing='5'>
<tr>
<td><h2>Item</h2></td>
<td><h2>Amount</h2></td>
</tr>
<?php
for($row=1; $row<5;$row++)
{
$item_name='item_name'.$row;
$item_value = $_POST[$item_name];
$amount_name='amount_name'.$row;
$amount_value = $_POST[$amount_name];
echo
"<tr>
<td><input type='text' name='$item_name' value='$item_value' /></td>
<td><input type='text' name='$amount_name' value='$amount_value' /></td>
";
if (!empty($amount_value))
{
if(is_numeric($amount_value))
{
$total = $total + $amount_value;
}
else {
echo
"<td class='bad'>Amount Invalid: $amount_value</td>";
$error_count++;
}
}
echo"
</tr>
";
}
?>
<tr>
<td colspan='2'>
<input name='' type='submit' value='Submit' />
</td>
</table>
<?php
if ($error_count > 0)
{
echo "<br /><span class='bad' />Errors: $error_count</span>";
}
else
{
echo "<br />Total: $total";
}
if ($error_count == 0)
{
addData();
}
//Function
function addData()
{
$myFile = "bills.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = $amount_value;
fwrite($fh, $stringData);
$stringData = $item_value;
fwrite($fh, $stringData);
fclose($fh);
}
?>
</form>
当您在代码顶部为$item_value
赋值时,您正在php标记范围内创建一个名为$item_value的变量。在addData()函数中,没有名为$item_value的变量,因此$stringData = $item_value
创建了一个变量$stringData
,其值等于新变量item_value
,其值为null。将数据传递给你的方法,然后你就可以访问它了。
试着这样称呼它:
addData($item_value);
然后将方法更改为:
function addData($item_value){
PHP的变量作用域规则不允许全局变量出现在函数中,除非你显式地将它们声明为全局。因此,在您的addData()
函数中,$amount_value和$item_value都是未声明/未定义的LOCAL变量,并且在fwrite()调用时被转换为null/空字符串,因此您的代码只能写出空文件。
将值作为函数参数传递:
addData($amount_value, $item_value);
或者将它们声明为全局变量:
function addData() {
global $amount_value, $item_value
两者中,使用参数版本。全局变量很乱
至少需要将$amount_value
和$item_value
传递给函数。可能还有回车。例如
addData($item_value, $amount_value);
//Function
function addData($item_value, $amount_value)
{
$myFile = "bills.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh, "$amount_value, $item_value'n");
fclose($fh);
}