gpt4 book ai didi

php - 取消设置 mysql 表上数组中的特定值

转载 作者:行者123 更新时间:2023-11-29 14:30:15 24 4
gpt4 key购买 nike

我有一个名为 related_products 的表,

哪里products_id 是主要产品。

lated_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>';
?>

我使用此代码将选中的复选框保存到 lated_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);
}
}

我想要的是在取消选择先前选择的复选框时取消lated_products_ids列下的特定ID..

假设我正在编辑 id 为 2 且其 lated_products_ids1,3 的帖子。我取消选择了值为 3 的复选框(位于 lated_products_ids 上),点击“保存”按钮后,lated_products_ids 上的值为 3 将被取消设置,因此当前值为 1。怎么做?我无法思考并找到解决方案。

请帮忙。

最佳答案

您需要标准化您的数据库。在数据库中存储逗号分隔值从来都不是一个好主意。

这是我们无法轻松操作数据的非标准化数据库的主要困难。

您应该创建父子表来存储相关产品,而不是像这样存储它们。

关于php - 取消设置 mysql 表上数组中的特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10150524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com