簡単に言えば、3つの同一の入力フィールドを持つフォームがあります。名前は異なります。ただし、投稿されると、名前のプレフィックスが異なるだけで同じ構造になります(つまり、3つのシステムの名前のプレフィックスが異なります。windowstitle、mactitle、linuxtitleなどになります)。
現在、私は1つの同名異人、つまりwindowstitleのみを機能させるプロセスを持っています(もちろん、フォームに記入されている場合)
コードは次のようになります。
<?php
$title = $_POST['windowstitle'];
//validate info or redirect
if ($title != "" ) {
$title = mysql_real_escape_string($title);
$sql = "insert into newwindows (title) values ('$title');
$result = mysql_query($sql) or die ("Could not insert data into DB: " . mysql_error());
?>
また、フォームブロックは次のようになります
<form action="newuserprocess.php" method="post" enctype="multipart/form-data">
<div class="form">
<h3>Windows</h3>
<!-- title of system name -->
<p><label for="windowstitle"> edition of system </lable></p>
<input type="text" name="windowstitle" size=20 /><br />
</div>
<div class="form">
<h3>Mac</h3>
<!-- title of system name -->
<p><label for="mactitle"> edition of system </lable></p>
<input type="text" name="mactitle" size=20 /><br />
</div>
<p><input type="submit" id="submit" class="bigbutton" value="Upload" /></p>
</form>
ただし、他のフォームは省略されますが、唯一の違いは、入力したいdbとpostvalueプレフィックスが異なることです。
だから私は賢い解決策だと思ったものを思いついた:
<?php
$arr = array('windows', 'mac', 'linux');
foreach ($arr as &$value) {
$title = $_POST['$valuetitle'];
//validate info
if ($title != "" ) {
$title = mysql_real_escape_string($title);
$sql = "insert into new$value (title) values ('$title');
$result = mysql_query($sql) or die ("Could not insert data into DB: " . mysql_error());
}
?>
ただし、これは機能しません。私は部分的に理由を知っています。''
変数がそのまま表示されるため、myは$_Post
常に$valueとして返されます。もう1つの理由は、私のnew$valueデータベース名と同じです。これの適切な形式は何ですか?これを機能させるにはどうすればよいですか?