从PHP生成的输入插入到文本文件

从PHP生成的输入插入到文本文件,php,function,text,Php,Function,Text,我遇到了一个PHP作业的问题。我创建了一个PHP脚本来生成表单输入,我必须从输入中获取数据并将其插入到文本文档中。因此,我编写了生成两个输入的代码和一个将数据写入文本文档的函数。但是,我的文本文档显示为空白。如何正确定义从文本输入中获取多个值并将其插入文本文档的函数?以下是我目前的代码: <form method='post'> <table border='0' cellpadding='3' cellspacing='5'> <tr> <

我遇到了一个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\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”)?您可能想要