添加/增加文本文件中的数据

时间:2012-02-24 19:28:50

标签: php arrays checkbox

我有一个包含一些数据的php文件,当检查显示已检查的数据时。如何在每次访问时增加变量“$ visit”并将其保存到文本文件中?

new.php

<html> 
<body bgcolor="#99FF00">
<table border="1">
<FORM ACTION="new.php" METHOD="POST">
Enter maximum price <input type="text" name="maximumprice"/> 
<p><input type="submit" value="Go" name="Go"/>
</form>

<?

$mPrice = $_POST['maximumprice'];
$file1 = "properties.txt";
$filedata = fopen ($file1, "r");
$array1 = file ($file1); 

print "<form action=\"visit.php\" method=\"POST\">";




for ($counter1 = 0; $counter1 < count($array1); $counter1++) 
{
$arrLine = $array1[$counter1];

$pCode = getvalue ($arrLine, 0);
$price = getvalue ($arrLine, 1);
$picture = getvalue ($arrLine, 2);
$visit = getvalue ($arrLine, 3);



if ($price < $mPrice)
{
print "<tr>";
print "<td>";

print $pCode. "<br>";
print $price. "<br>"; 
//print $picture. "<br>";
print $visit. "<br>";

print "<input type=\"checkbox\" name=\"box[]\" value=\"$arrLine\" />";

print "</td>";

print "<td>";
printf("<img src='$picture' width='200' height='150'>");
print "</td>";
print "</tr>";


}
} 

print '<input type="submit" name="Visit" value="Visit"/>';

// Move the form outside the for loop
print "</form>";


fclose ($filedata); 

function getvalue ($text, $arrNo) 
{ 
$intoarray = explode (",", $text); 
return $intoarray[$arrNo]; 
} 

?> 

</table>
</body>
</html>

这是第二页,display.php

<html>
<body bgcolor="#99FF00">
<?

foreach ($_POST['box'] as $values)
{
echo "$values <hr/>";
}



?> 
</body>
</html>

1 个答案:

答案 0 :(得分:0)

步骤1:使用数据库: - )

不,但实际上,由于您将整行作为复选框的值存储,您可以将其与文件中的行进行比较,并更新您的访问字段以查找匹配的行...

例如,在您的处理文件中:

$filename = "properties.txt";
$data     = file($filename, FILE_IGNORE_NEW_LINES);

$checked  = $_POST['box'];

foreach($data as $id => $line){
    if(in_array($line, $checked)){
        //Explode the line into parts
        $tmp = explode(',', $line);
        //Increment the visit field
        $tmp[3]++;
        //Put the updated data back in the file data array
        $data[$id] = implode(',', $tmp);
        //Unset the tmp array
        unset($tmp);
    }
}

//implode the data back into a text block
$data = implode("\n",$data);
file_put_contents($filename, $data);

这是未经测试的,但应该产生你想要的......

作为旁注,您无需执行fopen调用即可使用file功能。它将打开并读取文件。

编辑:由于看起来访问是每行中的最后一列而没有任何标志,file函数会将换行保留在每行的末尾,我向{{1添加了相应的标志功能。