Вставить в текстовый файл из ввода, сгенерированного PHP - PullRequest
0 голосов
/ 19 октября 2011

Я застрял в проблеме с заданием 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>

Ответы [ 3 ]

2 голосов
/ 19 октября 2011

Когда вы присваиваете значение $item_value в верхней части кода, вы создаете переменную с именем $ item_value в области действия вашего тега php. В функции addData () нет переменной с именем $ item_value, поэтому $stringData = $item_value создает переменную $stringData со значением, равным новой переменной item_value, со значением null. Передайте данные вашему методу, и вы сможете получить к ним доступ.

Попробуйте назвать это как:

addData($item_value);

Затем измените метод на:

function addData($item_value){
1 голос
/ 19 октября 2011

Правила области видимости переменных PHP не позволяют глобальным переменным появляться внутри функции, если вы явно не объявили их глобальными. Таким образом, в вашей функции addData() переменные $ amount_value и $ item_value являются необъявленными / неопределенными LOCAL-переменными и преобразуются в пустые / пустые строки для вызовов fwrite (), так что ваш код может когда-либо записывать только пустой файл. *

Либо передать значения в качестве параметров функции:

addData($amount_value, $item_value);

или объявить их как глобальные:

function addData() {
   global $amount_value, $item_value

Из двух, перейдите с версией параметра. Глобальные переменные беспорядочные.

0 голосов
/ 19 октября 2011

Вам нужно будет передать $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);
}
...