我遇到了一个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>
答案 0 :(得分:2)
当您在代码顶部为$item_value
分配值时,您将在php标记的范围内创建一个名为$ item_value的变量。在函数addData()中,没有名为$ item_value的变量,因此$stringData = $item_value
创建一个变量$stringData
,其值等于新变量item_value
,其值为null。将数据传递给您的方法,然后您就可以访问它了。
尝试调用它:
addData($item_value);
然后将方法更改为:
function addData($item_value){
答案 1 :(得分:1)
PHP的变量范围规则不允许全局变量出现在函数中,除非您明确地将它们声明为全局变量。所以在你的addData()
函数中,$ amount_value和$ item_value都是未声明/未定义的LOCAL变量,并且为fwrite()调用转换为nulls / empty字符串,因此你的代码只能写出一个空文件。
将值作为函数参数传递:
addData($amount_value, $item_value);
或将它们声明为全局:
function addData() {
global $amount_value, $item_value
在这两个中,请使用参数版本。全局变量很混乱。
答案 2 :(得分:0)
至少,您需要将$amount_value
和$item_value
传递给该函数。可能还有一些回车。 e.g。
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);
}