繁体   English   中英

在mysql表的数组中未设置特定值

[英]Unset specific value in an array on mysql table

我有一个表命名为related_products,

其中products_id是主要产品。

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);
            }
    }

我要unset选中先前选中的复选框时,在related_products_ids列下unset特定的ID。

可以说我在编辑帖子,其中id为2 ,而其related_products_ids1,3 ..我取消选中了值为3的复选框(位于related_products_ids ),并点击了保存按钮后,值为3 related_products_ids将被取消设置,因此当前值为1 怎么做? 我无法思考并找到解决方案。

请帮忙。

您需要规范化数据库。 在数据库中存储逗号分隔的值绝不是一个好主意。

这是我们无法轻易处理数据的非标准化数据库的主要困难。

您应该使父子表用于存储相关产品,而不是像这样存储它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM