0

$_POST設定したテーブルから渡される値の調整に問題があります。

テーブルを設定するために使用されているコードは次のとおりです。

print "<form action=\"updateitem.php\" method=\"post\">\n";
print "<table border cellpadding = 3>\n";
print "<tr>\n";
print "<th>Menu item id</th>\n";
print "<th>Menu item name</th>\n";
print "<th>Menu</th>\n";
print "<th>Menu item price</th>\n";
print "</tr>\n";
while($info = mysql_fetch_array($results)){
    $mi = explode("_",$info['meta_key']);
    if ($mi[2] == "food")
        $mi[2] = "takeout";
    print "<tr>\n";
    print "<td id=\"meta_id\">".$info['meta_id']."<input type=\"hidden\" name=\"meta_id".$i."\" value=\"".$info['meta_id']."\" /></td>\n";
    print "<td>".$info['post_title']."</td>\n";
    print "<td>".$mi[2]."</td>\n";
    print "<td id=\"price\" contenteditable=\"true\">".$info['meta_value']."<input type=\"hidden\" name=\"meta_value".$i."\" value=\"".$info['meta_value']."\" /></td>\n";
    print "</tr>\n";
    $i++;
}
print "</table>\n";     
print "<input type=\"Submit\" value=\"Update\" />\n";
print "</form>\n";

私がやろうとしているのは、誰かが価格セルを変更したときに、更新された価格を$_POSTPHP に渡すことです。それは可能ですか?

4

1 に答える 1

0

ここcontenteditableでは属性は役に立ちません。それがいつ変更されたかに気づき、それで何かをするには、javascriptを使用する必要があります。

簡単な答えは、<input>ユーザーがフィールドを利用できるようにする必要があるということです。に変更type="hidden"するtype="text"か、ユーザーが操作できるように非表示ではない別のフィールドを追加すると、値が のスクリプトに返されます$_POST

提案された変更

print "<form action=\"updateitem.php\" method=\"post\">\n";
print "<table border cellpadding = 3>\n";
print "<tr>\n";
print "<th>Menu item id</th>\n";
print "<th>Menu item name</th>\n";
print "<th>Menu</th>\n";
print "<th>Menu item price</th>\n";
print "</tr>\n";
while($info = mysql_fetch_array($results)){
    $mi = explode("_",$info['meta_key']);
    if ($mi[2] == "food")
        $mi[2] = "takeout";
    print "<tr>\n";
    print '<td id="meta_id">' . $info['meta_id'] . '<input type="hidden" name="meta_id[]" value="' . $info['meta_id'] . '" /></td>';
    print '<td>'.$info['post_title'].'</td>';
    print '<td>'.$mi[2].'</td>';
    print '<td id="price">';
        print '<input type="hidden" name="original_price[]" value="' . $info['meta_value'] . '" />';
        print '<input type="text" name="price[]" value="' . $info['meta_value'] . '" />';
    print '</td>';
    print "</tr>\n";
    $i++;
}
print "</table>\n";     
print "<input type=\"Submit\" value=\"Update\" />\n";
print "</form>\n";

( )name="name[]"の代わりに配列を使用するように名前 ( ) を自由に変更しました。name="name" . $i

これにより、フィールドが $_POST 配列の配列として返されます$_POST[price] will itself be an array

$_POST['price][0]
$_POST['price][1]   // and so on

したがって、変更された価格を次のように処理できます。

foreach ( $_POST['price'] as $i => $price ) {
    if ( $price != $_POST['original_price'][$i]) {
        // We have a price change lets update the database
        // using $_POST['meta_id'][$i] as the key to the database table ? I assume ??
    }

}
于 2013-07-26T09:41:30.470 に答える