我正在尝试将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
!
非常感谢任何帮助! (我环顾四周,希望还没有问过这个问题。)
答案 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中添加/创建/更改任意数量的元素。您可能感兴趣的方法有:createDocumentFragment
,createElement
以及所有JavaScript相似内容:getElementById
,getElementsByTagName
,等等......
答案 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
,代码变得更容易理解,即使没有评论也是如此。