2016-08-07 7 views
0

私はテーブルがあるページを持っています。表の各行には、オンライン食料品配送オーダーに関するデータがあります。各行の最後には、注文に対して実行されるアクションについての送信ボタンがあり、フォームがそこで終了します。新しいフォームは、まさに私が<フォーム>と< /フォーム>タグをつけなければならない次の行<TR>テーブルの各行に新しいフォームを投稿する適切な方法はありますか?

で始まりますか?私は</TR >または私は彼らが最初のデータセル< TD各行の>と最後<TD>で緊密に導入すべきである後の各<TR>と< /フォーム>前<フォーム>を置くべきか?

つまり、このページはおそらく両方の方法で正常に機能しますが、これを行う「正しい」方法は何ですか?現在、mozillaコードビューはテーブルタグを赤色で表示しています。

これは今見た目です。 enter image description here

これは、各テーブル行に新しいフォームを動的に生成するために使用しているPHPコードの関連部分です。これはすべてここで重要ではないので、参考のためだけに転記しています。私の質問はPHPベースではなく、基本的なHTMLベースです。

for($i=0;$i<$count;++$i){ 
    $res.='<form action="" method="post">' ."\n" .'<input type="hidden" name="orderid" value="' .$orders[$i]->idcode .'" />'; 
    $res.="$nt<tr><td align=\"center\">" .$orders[$i]->display("pe","</td><td align=\"center\">") ."</td>$nt\t<td align=\"center\"><select name=\"agent\">$alistcode</select></td>$nt\t<td align=\"center\"><select name=\"vendor\">$vlistcode</select></td>"; 
    $res.="$nt\t<td align=\"center\"><input type=\"submit\" value=\"PROCESS\" /></td>\n</tr>\n</form>\n"; 
} 
$res.="</table>"; 
echo $res; 
+1

の可能性のある重複した[HTML:?それはXHTML有効な方法で、各表の行にFORMタグを持つことが可能です](http://stackoverflow.com/questions/1249688/html-is-it-可能な-a-form-at-a-xhtml-valid-wayの各行内のタグ) – 4castle

+0

最良の解決策は、 '

'レイアウトを使用しないことです。本当に必要な場合は、CSSテーブルレイアウトを使用してください。それは、欺瞞の2番目の答えです。 – 4castle

+0

新しいフォームを各行の最初の​​に導入し、それを各行の最後のセルに挿入するのは、適切なプログラミング手法ですか? –

答えて

3

HTML5は、問題に適したソリューションです。そしてその名前はform属性です。フォームを最後の<td>に入れ、他の入力からそのidを参照するだけです。例を参照してください。

<table> 
    <tr> 
     <td> 
      <input type="text" name="inp1" form="form1" /> 
     </td>       <!-- ^^^^ ^^^^^ --> 
     <td> 
      <form id="form1" method="get" action="/"> 
      <!-- ^^ ^^^^^ --> 
       <input type="submit" name="submit1" value="submit" /> 
      </form> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <input type="text" name="inp2" form="form2" /> 
     </td> 
     <td> 
      <form id="form2" method="get" action="/"><input type="submit" name="submit2" value="submit" /></form> 
     </td> 
    </tr> 
</table> 
+0

ここでの問題は、各

に2つ(またはそれ以上)のフォームオブジェクトがあることです。しかし、努力をいただきありがとうございます。 Upvoted –

+0

はい、各行にinput、select、textareasを追加し、それぞれに 'form'属性を追加することができます。この例では、不足のための「外側」入力が1つしか示されていません。ポイントは '
'要素を単一の '​​'の中に入れることです。 –

+1

これはIEまたはEdgeでは動作しません:-( – Thomas

関連する問題