0

ユーザーから入力された結果がテーブルに生成されるPHPでフォームをどのように作成しますか?ページをテストすると、テーブル、キー、および結果(値)フィールドの先頭のみが取得され、値は取得されません。

これが私のコードです(フォームが非常に長くなる可能性があるため、フィールドの数を2つに減らしています:

注文書:

<?php

foreach ($_POST as $key => $entry)
{
    $totalfields++;
    echo "<tr>\n";  

    echo "<td>" . $key . "</td>";

    if (is_array ($entry)) { 
        $count = count($entry);
        echo "<td>";
        for ($i=0; $i<$count; $i++){
            echo $entry[$i] . "<br />";
        }
        echo "</td>";
    }   else   
    {
        echo "<td>$entry</td>";
    }
    echo "<tr>\n";
}
?>

<form method="post" action="address to the results form page">  


<label for="fname">First Name:</label>
<input type="text" name="fname" id="fname"/><br/>
<br/>

<label for="lname">Last Name:</label>
<input type="text" name="lname" id="lname"/><br/>
<br/>

 <p><input type="submit" value="Submit"/></p>


 </form>

結果フォームページ:

 <div id="results table">
 <table border='1'>
 <tr>
 <th>
  Field
 </th>
 <th>
  Results
 </th>
 </tr>
 </table>
 </div>
4

2 に答える 2

0

テーブルを生成するPHPは、フォームページではなく、結果のページにある必要があります。またはaction、フォームのを同じページにポイントして、結果を同じページに投稿して処理することもできます。

編集:私が言いたいのはこれです:PHP —ご存知かもしれませんが—サーバー側で処理されます。これは、ブラウザがサーバーにリクエストを送信し、サーバーがPHPファイルを処理してから、処理されたバージョンをクライアントに提供することを意味します。

$_POSTコードの問題は、ユーザーがフォームに入力することになっているページでPHPスクリプトを処理していることです。ユーザーがフォームに入力して[送信]をクリックすると、actionページに移動し、そこで$_POST利用可能になり、処理されます。$_POSTあなたの誤解は、それが投稿されたページで利用可能であり、それを結果ページに自動的に送信することを期待しているという事実にあります。すでに提供されているため、同じページで送信した情報をサーバーがキャッチする機会がないため、これは起こりません…</ p>

…フォームアクションを同じページに直接送信しない限り。次に、サーバーは情報をキャッチして処理します。

あなたは本当に2つの方法でこの問題を解決するために行くことができます。

  1. 現在行っているように結果ページをポイントしますactionが、処理コードを結果ページに移動します。

  2. action同じページをポイントします。

$_POST情報があるかどうかを確認し、情報がない場合はフォームを表示するなど、何か凝ったことをしたいと思うかもしれません。ある場合は、結果を表示します。これは、次のように実装するのはまったく難しいことではありません。

<?php
if( $_POST ): ?>
<div id="results table">
 <table border='1'>
     <thead>
         <tr>
         <th>
          Field
         </th>
         <th>
          Results
         </th>
         </tr>
     </thead>
     <tbody>
         <?php   

        foreach ($_POST as $key => $entry)
        {

            echo "<tr>\n";  

            echo "<td>" . $key . "</td>";

            if (is_array ($entry)) { 
                $count = count($entry);
                echo "<td>";
                for ($i=0; $i<$count; $i++){
                    echo $entry[$i] . "<br />";
                }
                echo "</td>";
            }   else   
            {
                echo "<td>$entry</td>";
            }
            echo "<tr>\n";
        }

    ?>

    </tbody>
</table>
</div>

<?php else: ?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">  


<label for="fname">First Name:</label>
<input type="text" name="fname" id="fname"/><br/>
<br/>

<label for="lname">Last Name:</label>
<input type="text" name="lname" id="lname"/><br/>
<br/>

 <p><input type="submit" value="Submit"/></p>

 </form>

<?php endif; ?>

私はあなたのために実例を作りました。リンクに移動しRun [F9]、上部のボタンをクリックして、実際の動作を確認してください。

Working example

于 2013-03-11T00:38:23.050 に答える
0

これは実際に私にとっては問題ありません(PHP_SELFフォームアクションに使用しました)。$_SERVER[REQUEST_METHOD]ただし、以下を確認するために使用することをお勧めしますPOST

if( $_SERVER[REQUEST_METHOD] == 'POST' ) { ...

さらに、投稿された変数 ( $_POST[fname]& $_POST[lnane])を呼び出すことについて明示します。

于 2013-03-11T00:39:23.813 に答える