PHP:将表格行添加到HTML文件

时间:2012-11-22 20:40:45

标签: php html

我正在尝试将PHP生成的表格行添加到HTML文件中。 实际上我用一个简单的HTML表单和一些PHP代码完成了这个,但我希望在表的顶部添加新行,而不是在底部... (这将是我作业的待办事项列表,但没有复选框。)

这是PHP代码:

<?php
$file = fopen("index.php","a+") or exit("Unable to open file!");
$since = $_POST["since"];
$since2 = "<tr><td class=\"since\">$since</td>";
$due = $_POST["due"];
$due2 = "<td class=\"due\">$due</td></tr>\n";
$user = $_POST["user"];
$user2 = "<td class=\"content\">$user</td>";

if ($_POST["since"] <> "");
{
    fwrite ($file,"$since2$user2$due2");
}

fclose($file);
?>

任何人都可以帮助我吗? (是的,我知道代码不干净,因为这是我第一次尝试编写PHP。)

以下是使用代码制作tr的示例:

<tr><td class="since">Thu 22th  Nov</td><td class="content">example</td><td class="due">Tue 27th  Nov</td></tr>

我的主要观点是在顶部添加一个新的tr! 非常感谢任何帮助! (我环顾四周,希望还没有问过这个问题。)

2 个答案:

答案 0 :(得分:2)

稍微短一些,但应该执行操作(未经测试)

<?php
if (!emtpy($_POST['since']))//check using empty, it checks if postvar is set, and if it's not empty
{//only open the file if you're going to use it
    $file = fopen('index.php','a');//no need for read access, you're not reading the file ==> just 'a' will do
    $row = '<tr><td class="since"'.$_POST['since'].'</td>
            <td class="due">'.$_POST['due'].'</td>
            <td class="content">'.$_POST['user'].'</td></tr>';//don't forget to close the row
    fwrite ($file,$row);
    fclose($file);
}
?>
顺便说一下,你的if声明并未完全消除它:

if ($_POST["since"]  <> "");
{
PHP中的

!=!==是您正在寻找的运算符(也不相等),if语句后面没有分号。
你是还将很多post变量分配给一个新变量,只是为了将它们连接成一个字符串,绝对没有必要这样做:

$newString = 'Concat '.$_POST['foo'].'like I did above';
$newString = "Same ".$_POST['trick'].' can be used with double quotes';
$newString = "And to concat an array {$_POST['key']}, just do this";//only works with double quotes, though

更新
在下面的评论中回答你的问题:here's what you need以解析html,并追加/添加所需的元素:

$document = new DOMDocument();
$document->loadHTML(file_get_contents('yourFile.html'));
//edit dom here
file_put_contents('yourFile.html',$document->saveHTML());

花一些时间here来了解如何在DOM中添加/创建/更改任意数量的元素。您可能感兴趣的方法有:createDocumentFragmentcreateElement以及所有JavaScript相似内容:getElementByIdgetElementsByTagName,等等......

答案 1 :(得分:1)

要将其添加到文件的开头,您可以阅读其内容,将其添加到新行的末尾,然后将整个内容写回文件。

// read the original file
$original_list = file_get_contents("index.php");

// use the writing mode to overwrite the file
$file = fopen("index.php","w") or exit("Unable to open file!");

$since = $_POST["since"];
$since2 = "<tr><td class=\"since\">$since</td>";

$user = $_POST["user"];
$user2 = "<td class=\"content\">$user</td>";

$due = $_POST["due"];
$due2 = "<td class=\"due\">$due</td></tr>\n";

if ($_POST["since"] <> "");
{
    fwrite($file,"$since2$user2$due2$original_list");
}

fclose($file);

这不是构建待办事项列表的最佳方式,但我们对您的作业以及进一步改进答案的要求知之甚少。

另一个提示:避免使用无意义的变量名称,例如$since2$due2,即使它们本质上是临时的。通过使用更好的名称,例如$since_cell$due_cell,代码变得更容易理解,即使没有评论也是如此。