Iはrelated_products、 が主生成物である設定解除特定値
ネーミングテーブルを有しています。
およびrelated_products_ids
は、主生成物に関連する製品IDで構成されています。
--------------------------------------------
| products_id | related_products_ids |
| -----------------------------------------
| 1 | 2,3 |
| -----------------------------------------
| 2 | 1,3 |
| -----------------------------------------
| 3 | 1,2 |
-------------------------------------------
私はチェックボックスがあり、
<input value="1" type="checkbox" name="rp_product[]" id="in-category1"> Microsoft IntelliMouse Pro 1
<input value="2" type="checkbox" name="rp_product[]" id="in-category2"> Microsoft IntelliMouse Pro 2
<input value="3" type="checkbox" name="rp_product[]" id="in-category3"> Microsoft IntelliMouse Pro 3
チェックボックスは、PHPによって生成され
<?php
echo '<div class="categorydiv"><div id="category-all" class="tabs-panel"><ul id="categorychecklist" class="list:category categorychecklist form-no-clear">';
$rp_sql = "select products_id, products_name from ".TABLE_PRODUCTS_DESCRIPTION." order by products_id";
$rp_1 = mysql_query($rp_sql);
while($rp_2 = mysql_fetch_array($rp_1)) {
echo "<li id=\"category-".$rp_2['products_id']."\" class=\"popular-category\"><label class=\"selectit\"><input value=\"".$rp_2['products_id']."\" type=\"checkbox\" name=\"rp_product[]\" id=\"in-category-1\"> ".$rp_2['products_name']."</label></li>";
}
mysql_free_result($rp_1);
echo '</ul></div></div>';
?>
と私は
、related_products
テーブルにチェックし、チェックボックスを保存するには、このコードを使用します
for ($i=0; $i<count($_POST['rp_product']); $i++)
{
$check_val1 .= $_POST['rp_product'][$i] .","; //gather data
}
$check_val = trim($check_val1, ','); //clean last ,
unset($check_val1); //flush
$related_products = array('products_id' => (int)$products_id,
'related_products_ids' => $check_val);
$insert_rp_ids1 = explode(',', $check_val);
foreach($insert_rp_ids1 as $rp_ids)
{
$result_rp = mysql_query("SELECT related_products_ids, products_id FROM ".TABLE_RELATED_PRODUCTS." where products_id = '" . $rp_ids ."'");
if(mysql_num_rows($result_rp))
{
$related_products_value = mysql_fetch_assoc($result_rp);
$check_dup = explode(',', $related_products_value['related_products_ids']);
$rp_values = $related_products_value['related_products_ids'] . "," . $products_id;
$rps_each1 = array('related_products_ids' => $rp_values);
if(!in_array($products_id, $check_dup)) {
$wpdb->update(TABLE_RELATED_PRODUCTS, $rps_each1, array('products_id' => $rp_ids));
}
}
else
{
$rps_each2 = array('products_id' => $rp_ids, 'related_products_ids' => $products_id);
$wpdb->insert(TABLE_RELATED_PRODUCTS, $rps_each2);
}
}
私は何がしたいことは、私が選択解除..
はイムはidが2
あるポストを編集し、どこのrelated_products_ids
が1,3
であると言うことができます。.. unset
に以前に選択したチェックボックスが選択解除されrelated_products_ids
列の下に特定のIDですチェックボックスの値が3
(related_products_ids
にあります)であり、保存ボタンを押した後にrelated_products_ids
の値3
が設定解除されるので、現在の値は1
です。どうやってするか?私は考えることができず、これに対する解決策を見つけることができません。
助けてください。
これは私が現在知っている解決策です。できるだけ新しいソリューションを開発するのに役立つことができますか?ありがとうございました。 – Ken
@Kenスキームを変更して、 'related_product_ids'列に値が1つだけ格納されるようにします(列名も変更する必要があります)。各行が1つの関係(1-2,1-3など)を表すようにします。 1-2と2-1を別々に保存する必要があるかどうかを検討する必要があります(これはドメインロジックに依存します)。 – liquorvicar