好的,我有这段代码:
<?php
//this is the thispage.php
$file = "data.txt";
$name = $_POST['name'];
$url = $_POST['url'];
$data = file('data.txt');
$i = 1;
foreach ($data as $line) {
$line = explode('|', $line);
$i++;
}
if (isset($_POST['submits'])) {
$fp = fopen($file, "a+");
fwrite($fp, $i."|".$name."|".$url."|\n");
fclose($fp);
}
?>
和这个index.php。
<html>
<head>
</head>
<body>
<br>
<form name="form1" action="thispage.php" method="POST">
<input type="text" name="name">
<input type="text" name="url">
<input type="submit" name="submits" value="ADD"><br>
</form>
<form name="form2" action="thispage.php" method="POST">
<?php
$display = file("data.txt");
for ($i=0; $i<=count($display)-1; $i++) {
$lines = explode("|",$display[$i]);
print('<input type="hidden" name="id" value="'.$lines[0].'">
<input type="text" name="name" value="'.$lines[1].'">
<input type="text" name="url" value="'.$lines[2].'">
<input type="submit" name="update" value="UPDATE">
<input type="submit" name="delete" value="DELETE"><br>');
}
?>
</form>
</body>
</html>
这是data.txt包含的。
1|John|http://www.john.com|
2|Mark|http://www.mark.com|
3|Fred|http://www.fred.com|
4|Johnxxx|asdasdasdasd|
我很难,让这个工作,尝试更新和删除,我可以添加,但我不能更新和删除。希望你们能帮助我,这是一个过期。提前谢谢你。
答案 0 :(得分:1)
我不太确定你在这里要求什么,通常你会像ulvund所说的那样使用数据库进行这种存储,但正如你所说的,这是一个实验,所以我选择它; )
根据您提供的代码,即插入和视图,我看到可能出现的一些问题。你说更新和删除有问题,但没有代码。你有一些代码不能正常工作,或者你要求下一步做什么?
我在此代码中看到的问题
如果某人使用&#34; \ n&#34;提交表单怎么办? (换行符)?这会弄乱您的数据(或者至少有几行,具体取决于用户发布的数量。
删除第2行后会再次插入新行会怎样?您将最终得到2行#4,因为您计算行数并使用其结果来构成下一个INSERT的ID
$ line = explode(&#39; |&#39;,$ line); 这一行在&#34; thispage.php&#34;什么都不做,因为你只想计算行数,而不是将所有数据提取到数组中。正如我之前所说,这种编造身份证的方式不是一个好主意。
所以,如果这个实验值得为你工作,你需要考虑存储&#34;自动增加ID&#34;或者在单独的文件中,或者使数据库文件的第一行成为元线,包含元数据作为A.I.你可能想要的ID和其他东西。
答案 1 :(得分:0)
根据您所拥有的内容,以下内容可能会有效。不过,请务必阅读user1362861和ulvund的答案。有很多方法可能会出错,如果你打算在实践中应用这个方法,你最好使用数据库。
<?php
//this is the thispage.php
$file = "data.txt";
$name = $_POST['name'];
$url = $_POST['url'];
$id = $_POST['id'];
$mode = $_POST['mode'];
$data = file('data.txt');
$i = 1;
foreach ($data as $line) {
// You're not doing anything with this.
//$line = explode('|', $line);
$i++;
}
if (isset($_POST['submits'])) {
if ($mode === 'add') {
$fp = fopen($file, "a+");
fwrite($fp, $i."|".$name."|".$url."|\n");
fclose($fp);
} else {
$fp = fopen($file, "r+");
foreach ($data as $line) {
$l = explode('|', $line); // $l = substr($line, 0, strpos($line, '|'));
if ($id === $l[0]) {
if ($mode === 'update') {
fwrite($fp, $l[0]."|".$name."|".$url."|\n");
} // else delete; don't re-write this line.
} else {
fwrite($fp, $line);
// This assumes IDs are attached to data, not line numbers.
// If that isn't the case, storing the ID (line number) is pointless.
}
}
fclose($fp);
}
}
?>
答案 2 :(得分:0)
为什么不使用数据库呢?您可以轻松地,更新,删除,使用数据库插入。