2017-09-26 87 views
1

我做了一個留言簿表單,它使用fwrite()將數據提交到.txt文件。然後在一個單獨的.php文件中打開.txt文件,分解數據,然後使用foreach循環在表格中顯示項目。在ForEach循環中第三次迭代後創建新的表格行PHP

這就是我的問題所在,我設法讓我的所有數據項都出現在我的第一列(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

一對夫婦的事情,我會建議。不要使用普通的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> 

你可以閱讀更多關於fputcsvfgetcsv

**也增加了一些表語義,如theadtbody。這些不是必需的,但很好。

相關問題