2

好的,我有这个代码:

<?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|

我很难,使这个工作,尝试更新和删除,我可以添加但我不能更新和删除。希望你们能帮帮我,这是过期的。先感谢您。

4

3 回答 3

1

我不太确定你在这里要求什么,通常你会使用数据库进行这种存储,正如 ulvund 所说,但正如你所说,这是一个实验,所以我同意它;)

根据您提供的代码,即插入和查看,我看到了一些可能发生的问题。您说更新和删除有问题,但没有该部分的代码。您有一些无法正常工作的代码,或者您在询问下一步该怎么做?

我在这段代码中看到的问题

  • 如果有人提交带有“\n”(换行符)的表单怎么办?这会弄乱您的数据(或至少几行,具体取决于用户发布的 \n 数量。

  • 当您删除第 2 行并再次插入新行时会发生什么?由于您计算行数的方式,您最终将得到 2 行 #4,并使用其结果来弥补下一个 INSERT 的 id

  • $line = explode('|', $line); “thispage.php”中的这一行根本什么都不做,因为您只想计算行数,而不是将所有数据提取到数组中。正如我之前所说,这种构成 id 的方式不是一个好主意。

所以,如果这个实验对你来说是值得的,你需要考虑将“自动增加 ID”存储在单独的文件中,或者将数据库文件的第一行作为元行,包含元数据作为 AI ID 和你可能想在那里拥有的其他东西。

于 2012-04-28T12:52:56.547 回答
0

根据您所拥有的,类似下面的内容可能会起作用。但是,请务必阅读user1362861ulvund的答案。有很多方法可能会出错,如果您打算在实践中应用它,最好使用数据库。

<?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);
    }
}
?>
于 2012-04-28T13:01:23.313 回答
0

为什么不使用数据库呢?您可以使用数据库轻松更新、删除、插入。

于 2015-03-19T14:11:42.327 回答