从文本文件php中删除行

时间:2013-08-28 23:45:28

标签: php

我正在尝试列出文本文件中的所有行,并在每个行旁边都有一个删除按钮。按下按钮时,该行应删除。如下所示

 Line One Text | Delete
 Line Two Text | Delete
 Line Three Text | Delete

我觉得我很接近,但无法让它发挥作用,任何想法为什么?线条和按钮显示正常,但删除按钮似乎没有做任何事情。

edit.php

<?php
$textFile = file("guestbook.txt");
foreach ($textFile as $key => $val) {
    $line = @$line . $val
        . "<input type='submit' name=$key value='Delete'><br />";
}

$form = "<form name='form' method='post' action='deleter.php'> $line 
    </form>";

echo $form;
?>

deleter.php     

if ($delete != "" && $delete > !$lines || $delete === '0') {
    $textFile[$delete] = "";
    $fileUpdate = fopen("data.txt", "wb");
    for ($a = 0; $a < $lines; $a++) {
        fwrite($fileUpdate, $textFile[$a]);
    }
    fclose($fileUpdate);
    header("Location:edit.php");
    exit;
}

foreach ($textFile as $key => $val) {
    $line = @$line . $val . "<a href =?delete=$key> Delete </a><br />";
}
echo $line;
?>

提前致谢!

2 个答案:

答案 0 :(得分:1)

一种方法可能是使用要删除的字符串查询服务器,如果没有行可以等于另一行,例如delete.php?str=<your string>并删除该字符串(注意我说'字符串'不是线)。

如果行可能相等,则应识别行并遵循类似的方法:delete.php?line=<number>

这应该很简单,您可以编写一个灵活的代码,通过传递文件名来删除给定文件中的行。

编辑:提供示例,提示使用隐藏字段。

<?php
$html = "<form id='form' method='post' action='delete.php'>";
foreach(array("line 1", "line 2", "line 3") as $key => $value ) {
    $html .= "<span>${value}</span>";
    $html .= "<input type='hidden' name='lineNumber' value='${key}'>";
    $html .= "<input type='submit' value='Delete' name='line'><br>";
}
$html .= "</form>";
echo $html;
?>

delete.php获取$_POST['lineNumber']的内容以检索行号。

答案 1 :(得分:0)

你可以做的是有一些JavaScript循环每个输入并将每个值附加到隐藏的表单字段。提交表单时,只需获取该表单字段的值,并用该值覆盖该文件。