我正在开发一个非常基本的客户端/案例管理工具。部分内容涉及使用PHP读取/写入.txt文件的文本框。
我遇到的问题是,每次点击“提交”时,文字都会下降一行。当您首先在文本框中写入一些文本时,显然您将其写在顶行,但是当您单击提交时,它会在文本框中下拉一行。奇怪的是,第一次发生这种情况(因此文本显示一行向下),.txt文件显示文本实际上在第一行应该是(虽然它显示在文本框中的第2行)。但是,如果再次单击“提交”(例如,如果在文本框中添加/更改信息,或者甚至只是单击“提交”),文本将在文本框中的另一行中删除,这会使其下拉一行。 .txt文件。
我错过了什么吗?有没有办法阻止这种情况发生?
这是我在显示文本框的页面上使用的代码:
<form action=".write-case-notes.php" method='post'>
<textarea name='textblock' style="width: 490px; height: 170px; resize:
none;" >
<?php echo file_get_contents( ".case-notes.txt" ); ?>
</textarea>
<input type='submit' value='Update Case Notes'>
</form>
这是我用来写入.txt文件的php代码:
<?php
$f = fopen(".case-notes.txt", "w");
fwrite($f, $_POST["textblock"]);
$newURL = '.parties.php';
header('Location: '.$newURL);
?>
上述代码的$ newURL部分是在提交新文本后使页面返回带有文本框的页面。
答案 0 :(得分:0)
您可以尝试执行以下操作:
$file = './case-notes.txt';
$f = fopen($file, 'a');
fwrite($f, isset($_POST['textblock'])."\n");
fclose($f);
header('Location: ./parties.php');
编辑:使位置重定向更简单。 编辑:下面的新解决方案
<form action="./write-case-notes.php" method='post'>
<textarea name='textblock' style="width: 490px; height: 170px; resize:
none;" >
</textarea>
<input type='submit' value='Update Case Notes'>
</form>
<?php
if (isset($_POST['textblock'])) {
$text_block = $_POST['textblock'];
$file = './case-notes.txt';
$f = fopen($file, 'a');
fwrite($f, $text_block."\r\n");
fclose($f);
}
?>
<br /><br /><br />
<?php $output = file_get_contents( "./case-notes.txt" );
print $output."<br />"; ?>
&#13;
答案 1 :(得分:0)
您实际上拥有您自己代码中的空行:
<form action=".write-case-notes.php" method='post'>
<textarea name='textblock' style="width: 490px; height: 170px; resize: none;" >
<?php echo file_get_contents( ".case-notes.txt" ); ?>
</textarea>
<input type='submit' value='Update Case Notes'>
</form>
因此,当HTML呈现时,你......
<textarea ...>
代码。textarea
代码。消除HTML中的空行和空格和新行
<form action=".write-case-notes.php" method='post'>
<textarea name='textblock' style="width: 490px; height: 170px; resize: none;" ><?php echo file_get_contents( ".case-notes.txt" ); ?></textarea>
<input type='submit' value='Update Case Notes'>
</form>
如果你想要更多干净的代码:
<?php // Content to be substituted. $textAreaContent = file_get_contents( '.case-notes.txt' ); $textAreaStyle = 'width: 490px; height: 170px; resize: none;'; // Template to substitute in. $template = '<form action=".write-case-notes.php" method="post"> <textarea name="textblock" style="%s">%s</textarea> <input type="submit" value="Update Case Notes"> </form>'; // Render $html = sprintf( $template, $textAreaStyle, $textAreaContent ); echo( $html );
注意:
<?php
标记并且从不关闭它,则您100%确定您没有发送不需要的行终止符或空格。这在此处记录:http://php.net/manual/en/language.basic-syntax.phptags.php 文档说:
如果文件是纯PHP代码,则最好省略PHP结束 标签在文件的末尾。这可以防止意外的空格或新的空格 在PHP结束标记之后添加的行,这可能会导致不需要的行 因为PHP会在没有时启动输出缓冲 来自程序员的意图在该点发送任何输出 脚本。
希望能帮到你!