2017-02-17 6 views
2

JavaScriptの入力をグリッド化しています。これらの入力はそれぞれ固有の名前とIDを持っています: "test1"、 "test2" ...これらの入力のスタイルを名前に基づいて変更することもできます。POSTまたはGETを使用してPHPでJS-Generated HTML入力から値を取得する方法

var c = document.getElementById("gridOne"); 

function createTable() { 
var table = document.createElement('table'); 
var rows = +document.getElementById('numRows').value; 
var cols = +document.getElementById('numCols').value; 
    var n = 0; 
for(var r=0; r<rows; r++) { 
    var tr = document.createElement('tr'); 
    table.appendChild(tr); 
    for(var c=0; c<cols; c++) { 
    if(r == 0 || c == 0 || r == rows - 1 ||c == cols - 1){ 
     var td = document.createElement('td'); 
     tr.appendChild(td); 
     var inp = document.createElement('input'); 
     inp.setAttribute('id', 'test'+n); 
     inp.setAttribute('name', 'test'+n); 
     inp.setAttribute('value', n); 
     inp.setAttribute('type','number'); 
     td.appendChild(inp); 
     n++; 


    } else { 
     var tq = document.createElement('td'); 
     tr.appendChild(tq); 
     tq.classList.add('inner'); 
     var inp = document.createElement('input'); 
     inp.setAttribute('type','text'); 
     inp.disabled = true; 
     tq.appendChild(inp); 
    } 
    } 

} 
var container = document.getElementById('input_container'); 
container.innerHTML = ''; 
container.appendChild(table); 
} 

私はエラーを取得しています。これらの入力から送信された値にアクセスしようとするとJavaScriptを処理し、出力されるHTMLコードは、この

<form method="POST"> 
<div class="canvas" id="input_container"> 
<script type="text/javascript" src="js/Grid1.js"></script> 
</div> 
<input name="Confirm" type="submit"> 

です。私はPHPを使用しています、iveはGETとPOSTの両方を試みましたが、私は運が得られません。

if (isset($_POST['Confirm'])) 
{ 
    $test0 = $_POST['test0']; 
    $test1 = $_POST['test1']; 
    $test2 = $_POST['test2']; 
} 

私のコードは、動的に生成された入力フォーム以外のすべてに対して機能します。

+0

エラーメッセージは何? – Albert221

+0

未定義のインデックス、test0 – Lawl

+0

通常、あなたはtest0という名前では入力していませんが、入力した場合は、 – bormat

答えて

1

エラーは実際にはエラーではありませんが、通知です。エラーはです。

未定義のインデックス:

あなたはまず、これらの値が存在するかどうかを確認する必要があることを回避するために、Yライン上のxのTEST0すなわち:PHP7 null coalescing operatorを使用して

$test0 = isset($_POST['test0']) ? $_POST['test0'] : 'default value'; 

または:

$test0 = $_POST['test0'] ?? 'default value'; 

あなたの問題に対するより良いアプローチ

私は動的に生成されたフィールドを処理するより良い方法は、配列を使用することだと思います。だから、必要があります。

  • 使用[name]バックエンドで終わり
  • でかっこ[]の属性は、その配列を反復します。

ので、例のコードは次のようになります。

<input type="number" name="test[]"> 
<input type="number" name="test[]"> 
<input type="number" name="test[]"> 

とPHP:

foreach ($_POST['test'] as $test) { 
    var_dump($test); 
} 
+0

どうすれば 'デフォルト値'をユーザー入力にすることができますか? – Lawl

+0

デフォルト値は、ユーザーの入力がない場合です。 – Albert221

+0

THanks!これは多くの助けとなりました – Lawl

関連する問題