首先,我知道有一个关于此的主题,但是我不明白它,因此在这种情况下可以使用它。
HTML :(无法更改!)
<form action="index.php" method="get">
Select voting number:
<select name="candidate">
<option value=1 selected>1</option>
<option value=2>2</option>
<option value=3>3</option>
<option value=4>4</option>
<option value=5>5</option>
</select>
<br>
<input type="submit" value="Submit">
</form>
student.txt:
1|0
2|0
3|0
4|0
5|0
所以任务是,当用户输入数字(1、2、3、4或5)时,应该更改该数字行中txt文件中的行。
示例:用户给定值2 ---> txt文件应如下所示:
1|0
2|1
3|0
4|0
5|0
下一个用户给值5:
1|0
2|1
3|0
4|0
5|1
以此类推...
也index.php应该显示txt文件具有的总投票数,包括用户给出的最新投票数。
答案 0 :(得分:0)
您可以使用从PHP调用的外部工具(在Linux中为sed等),或者在文件中查找位置,移动文件指针并写入已更改的字节。尽管您突然想在文件中间添加新记录,但根据文件的布局,它可能会变得更加麻烦。
最简单的方法基本上是从文件加载数据,更新数据并将数据再次写入文件。当然,对于小的更新,您可能会写“超出所需的字节数”,但这将非常容易。
答案 1 :(得分:0)
<?php
$userInput = $_GET['candidate'];
$rows = explode(PHP_EOL, file_get_contents('votes.txt'));// Read file content and convert it into array
foreach($rows as $k => $v) {
$row = explode('|', $v);
if($userInput === $row[0]) {
$newTotal = (int)$row[1] + 1;
$rows[$k] = $row[0] . '|' . $newTotal;
$rows = implode(PHP_EOL, $rows);// Convert array to string again
file_put_contents('votes.txt', $rows);// Save changes
break;
}
}
我不会发布此答案,但我知道有时学校会给作业,却什么也没解释。不要只是复制粘贴此答案,而是尝试理解代码。拜托。