簡體   English   中英

在ForEach Loop PHP中進行第三次迭代后創建新表行

[英]Creating New Table Row After Third Iteration in ForEach Loop PHP

我已經制作了一個留言簿表單,該表單使用fwrite()將數據提交到.txt文件。 然后,在單獨的.php文件中,打開.txt文件,分解數據,然后使用foreach循環在表中顯示項目。

那就是我的問題所在,我設法使我的所有數據項都出現在新行中,這些行都保存在我的表的第一列中(3 X無限,因為它是由用戶簽署留言簿建立的)。

我知道有使用計數器和模數的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>

我建議幾點。 不要為此使用普通的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 這些不是必需的,但是很高興。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM