我制作了一个留言簿表单,使用fwrite()将数据提交到.txt文件。然后在一个单独的.php文件中打开.txt文件,展开数据,然后使用foreach循环显示表中的项目。
我的问题出在哪里,我设法让我的所有数据项都显示在我的第一列中的新行中(3 X Infinite,因为它是由签署留言簿的用户构建的)表。
我知道有使用计数器和模数的for()和if()方法 - 但是我无法正确放置它们。要么我不小心在桌面上显示任何内容,要么在一行中显示所有内容,所有内容都在一个单元格中显示。我已经找到了许多如何使用声明的数组执行此操作的示例,但我无法弄清楚如何在动态意义上应用它。
我的代码:
<?php echo "<h3><center><u>Review What You've Posted</u></center></h3>";
?>
<?php
$firstName = $_POST['firstName'];
echo "<u>Your Name:</u> " .$firstName. "<br><br>";
$yourEmail = $_POST['yourEmail'];
echo "<u>Your Email:</u> " .$yourEmail. "<br><br>";
$yourComments = $_POST['yourComments'];
echo "<u>What You Thought:</u> " .$yourComments. "<br>";
"<br>";
$guestBook = fopen('guestBookData.txt', 'a+');
$outputstring = $firstName . ':' . $yourEmail . ':' . $yourComments
. ':' . "\r";
fwrite($guestBook,$outputstring);
fclose($guestBook)
?>
</main>
这称为:
<main class="Main Body BG" id="wrapper">
<table style="width:100%" border="3" cellpadding="3">
<caption>Previous Visitors</caption>
<br>
<tr>
<td bgcolor="#FBB2EA" align="center"> Name </td>
<td bgcolor="#FBB2EA" align="center"> Email </td>
<td bgcolor="#FBB2EA" align="center"> Comments </td>
</tr>
<?php
$guestBook = fopen('guestBookData.txt', 'r');
if($guestBook){
while(($dataString=fgets($guestBook)) !==false){
$dataField = explode(':', $dataString);
foreach($dataField as $df){
echo "<tr><td>".$df."</td></tr>";
}
}
fclose($guestBook);
}
?>
</table>
</main>
答案 0 :(得分:0)
我建议的几件事。不要使用普通fwrite
。您隐含地假设:
不能成为您输入的一部分,这不是一个合理的假设。使用以下内容:
$guestBook = fopen('guestBookData.txt', 'a+');
$outputarray = [ $firstName, $yourEmail, $yourComments ];
fputcsv($guestBook,$outputarray,$delimiter);
第二件事是你为每个领域做了一行,你应该这样做:
<main class="Main Body BG" id="wrapper">
<table style="width:100%" border="3" cellpadding="3">
<caption>Previous Visitors</caption>
<thead>
<tr>
<th bgcolor="#FBB2EA" align="center"> Name </td>
<th bgcolor="#FBB2EA" align="center"> Email </td>
<th bgcolor="#FBB2EA" align="center"> Comments </td>
</tr>
</thead>
<tbody>
<?php
$guestBook = fopen('guestBookData.txt', 'r');
if($guestBook){
while(($dataField=fgetcsv($guestBook,0,":")) !==false){ //CSV style reading here too
echo "<tr>"; //Open row
foreach($dataField as $df){
echo "<td>".$df."</td>";
}
echo "</tr>"; //Close row
}
fclose($guestBook);
?>
</tbody>
</table>
</main>
上阅读更多内容
**添加了一些表语义,以及thead
和tbody
。这些不是必需的,但很高兴。