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


Insert to text file from PHP-generated inputs

我被困在一个问题的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);
}