3

簡単に言えば、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データベース名と同じです。これの適切な形式は何ですか?これを機能させるにはどうすればよいですか?

4

3 に答える 3

2

あなたはおそらく欲しい

$title = $_POST[$value . 'title'];

$sql = "insert into new$value (title) values ('$title')";
于 2012-08-22T01:21:53.477 に答える
1

Another reason is the same with my new$value database name. My question is what is the proper format for this?

わかりやすくするため$valueに角かっこで囲みます。{$value}あなたのフォーマットは機能しますが、より明確になる可能性があります。いくつかのテストを参照してください:http://ideone.com/A2kWU

また、配列の値を変更しない場合は、$arr次を使用する必要があります

foreach ($arr as $value) { //...

偶発的な変更を防ぐため。ただし、この場合、アレイを1回だけ使用しているため、大した問題にはなりません。

于 2012-08-22T01:31:37.677 に答える
0

次のようにコードを編集します。

<?php
     $arr = array('windows', 'mac', 'linux');
     foreach ($arr as $value) {
于 2012-08-22T11:16:08.310 に答える