从PHP生成的输入插入到文本文件
我遇到了一个PHP作业的问题。我创建了一个PHP脚本来生成表单输入,我必须从输入中获取数据并将其插入到文本文档中。因此,我编写了生成两个输入的代码和一个将数据写入文本文档的函数。但是,我的文本文档显示为空白。如何正确定义从文本输入中获取多个值并将其插入文本文档的函数?以下是我目前的代码:从PHP生成的输入插入到文本文件,php,function,text,Php,Function,Text,我遇到了一个PHP作业的问题。我创建了一个PHP脚本来生成表单输入,我必须从输入中获取数据并将其插入到文本文档中。因此,我编写了生成两个输入的代码和一个将数据写入文本文档的函数。但是,我的文本文档显示为空白。如何正确定义从文本输入中获取多个值并将其插入文本文档的函数?以下是我目前的代码: <form method='post'> <table border='0' cellpadding='3' cellspacing='5'> <tr> <
<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\u value
赋值时,您正在php标记的范围内创建一个名为$item\u value的变量。在函数addData()中,没有名为$item_value的变量,因此$stringData=$item_value
创建一个变量$stringData
,其值等于值为null的新变量item_value
。将数据传递给您的方法,然后您将能够访问它
试着像这样称呼它:
addData($item_value);
然后将方法更改为:
function addData($item_value){
当您在代码顶部为$item\u value
赋值时,您正在php标记的范围内创建一个名为$item\u value的变量。在函数addData()中,没有名为$item_value的变量,因此$stringData=$item_value
创建一个变量$stringData
,其值等于值为null的新变量item_value
。将数据传递给您的方法,然后您将能够访问它
试着像这样称呼它:
addData($item_value);
然后将方法更改为:
function addData($item_value){
PHP的变量范围规则不允许全局变量出现在函数中,除非您显式声明它们为全局变量。因此,在您的addData()
函数中,$amount\u值和$item\u值都是未声明/未定义的局部变量,并被转换为fwrite()调用的null/空字符串,因此您的代码只能写出空文件
将值作为函数参数传递:
addData($amount_value, $item_value);
或将其声明为全局:
function addData() {
global $amount_value, $item_value
在这两个参数中,选择参数版本。全局变量很混乱。PHP的变量范围规则不允许全局变量出现在函数中,除非您显式声明它们为全局变量。因此,在您的addData()
函数中,$amount\u值和$item\u值都是未声明/未定义的局部变量,并被转换为fwrite()调用的null/空字符串,因此您的代码只能写出空文件
将值作为函数参数传递:
addData($amount_value, $item_value);
或将其声明为全局:
function addData() {
global $amount_value, $item_value
在这两个参数中,选择参数版本。全局变量很混乱。至少需要将$amount\u value
和$item\u 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);
}
您至少需要将$amount\u value
和$item\u 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);
}
添加错误报告(E\u ALL)代码>位于脚本顶部。然后考虑添加函数参数。添加<代码> Error报告(EyALL);<代码>位于脚本顶部。然后考虑添加函数参数。OK,我先试了一下,但是文本文档是空白的。另外,我是否需要定义这两个变量?($item\u value和$amount\u value)?那么我认为您永远不会调用方法addData
,因为if($error\u count==0)
返回false。尝试添加echo'ERROR COUNT=0'代码>到代码右侧,关于行addData($item\u value)
。如果没有显示任何内容,则您知道您也永远无法调用该方法。嗯,我将其添加进来并显示了。因此,基本上,我正在尝试找出这些值显示为null的原因尝试与以前相同的操作,但现在尝试echo$item\u value
。如果显示了某些内容,则您知道$item_值不是空的。变量的作用域可能以第一组标记结束。好的,我继续尝试了,但是文本文档是空的。另外,我是否需要定义这两个变量?($item\u value和$amount\u value)?那么我认为您永远不会调用方法addData
,因为if($error\u count==0)
返回false。尝试添加echo'ERROR COUNT=0'代码>到代码右侧,关于行addData($item\u value)
。如果没有显示任何内容,则您知道您也永远无法调用该方法。嗯,我将其添加进来并显示了。因此,基本上,我正在尝试找出这些值显示为null的原因尝试与以前相同的操作,但现在尝试echo$item\u value
。如果显示了某些内容,则您知道$item_值不是空的。变量的作用域可能以第一组标记结束。我尝试了这两种方法,但每次都会得到一个空白文本文档。别忘了,实际上您正在将5组不同的POSt数据加载到这两个变量中。只有最后一组会“粘住”,如果提交的是空的,那么你会得到空变量。我尝试了这两种方法,但每次我都会得到一个空白文本文档。别忘了,你实际上正在将5组不同的POSt数据加载到这两个变量中。只有最后一组会“粘住”,如果提交的是空的,那么你会得到空变量。有什么想法吗?如果这些值用引号括起来是否可以:fwrite($fh,“$amount\u value,$item\u value\n”)?您可能需要a
模式来打开文件。将附加到文件的(w
每次都将覆盖)。有关更多信息,请参阅。引号是可以的,因为PHP在双引号中插入变量(即用实际值替换$amount\u value
,例如4
)。我这样做了,我的文本文档是空的。有什么想法吗?如果这些值在引号中是这样的,可以吗:fwrite($fh,“$amount\u value,$item\u value\n”)?您可能想要