0

2つのテキストボックスと1つの送信ボタンを含む1つのフォームを作成します。行と列の数を入力して送信ボタンをクリックすると、フォームに行と列の数のテーブル構造が生成されます。そのテーブルにデータを入力すると、そのデータをデータベースに保存します。デモの例があればお願いします。緊急のことを教えてください。よろしくお願いします。

これが私のPHPコードです:

<?php
 include_once "dreportCreation.php";
        {       
            if(isset($_POST['submit']))
                function displaydata($column,$rows)             
                    {       
                        echo "<table border='1' align='center'>";           
                        for($i = 0;$i<$_POST['column'];$i++)       
                        { 
                            echo "<tr>".$j."</tr>";                              
                            for($j = 0; $j <$_POST['rows'];$j++)         
                                {

                                    echo "<td>" ."<input type=\"text\" name='$i'>"."</td>"; 
                                }
                        }
                        echo "</table>";
                    }
        }
    ?>
    <html>
    <head>
    <title>aa</title>
    </head>
    <body>
        <form name="reportCreation" method="post" action="dd.php">
                        <label for='Table'>Define Table</label>
                        <label for='rows'>Row</label>
                        <input type="text" name="column"></input>
                        <label for='column'>Column</label>
                        <input type="text" name="rows"></input>
                        <input type="submit" name="submit" value="submit" onclick="displaydata();">
        </form>
    </body>
    </html>
4

1 に答える 1

0

コードには多くの問題があります。まず、 という php 関数を定義していますがdisplaydata、送信がクリックされたときに同じ名前の JavaScript 関数を呼び出しています。そのため、php 内の任意の場所で関数を呼び出している場合、ページがリロードされ、フォームの外側 (および<html>タグの前) に入力が送信されます。入力に関しては、次のような各列の配列入力を作成する必要があります。

echo "<table border='1' align='center'>";           
for($i = 0;$i<$_POST['column'];$i++)       
{ 
    echo "<tr>".$j."</tr>";                              
    for($j = 0; $j <$_POST['rows'];$j++)         
    {
          echo "<td>" ."<input type=\"text\" name='column_$i[$j]'>"."</td>"; // you should provide a beter name than simly a number ... just saying :)
    }
}
echo "</table>";

このようにして、php に関する情報を取得する$_POST['i']['j']と、配列が取得され、それらすべてを保存できるようになります。そうしないと、各列の最後の入力のみが取得されます。

実際の例は次のとおりです。

<?php
 include_once "dreportCreation.php";
 function displaydata($column,$rows)             
 {       
      echo "<table border='1' align='center'>";           
      for($i = 0;$i<$_POST['column'];$i++)       
      { 
            echo "<tr>".$j."</tr>";                              
            for($j = 0; $j <$_POST['rows'];$j++)         
            {
                  echo "<td>" ."<input type=\"text\" name='column_$i[$j]'>"."</td>"; 
            }
       }
       echo "</table>";
  }
  ?>
    <html>
    <head>
    <title>aa</title>
    </head>
    <body>
        <form name="reportCreation" method="post" action="dd.php">
                        <label for='Table'>Define Table</label>
                        <label for='rows'>Row</label>
                        <input type="text" name="column"></input>
                        <label for='column'>Column</label>
                        <input type="text" name="rows"></input>
                        <input type="submit" name="submit" value="submit">

<?Php 
if (isset($_POST['submit'])) displaydata(); // Show data INSIDE form
?>

        </form>
    </body>
    </html>

ところで、データが送信されて保存されることを投稿時に検出する必要があります。のようなものif (isset($_POST['column_0'])) { //start saving stuff }はうまくいくでしょう

于 2012-10-03T14:31:03.517 に答える