Добавление / увеличение данных из текстового файла - PullRequest
0 голосов
/ 24 февраля 2012

У меня есть 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 голосов
/ 24 февраля 2012

Шаг 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 будет сохранять новые строки в конце каждой строки, я добавил соответствующий флаг в функцию file.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...