PHP SQL 多品类更新产品 [英] PHP SQL updating product in multiple category

查看:29
本文介绍了PHP SQL 多品类更新产品的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在 php 中添加多个类别的产品.经过大量搜索/研究后,我能够在多个类别中添加产品,但在更新页面上更新/更改产品类别时无法正常工作.

我的数据库结构如下:

I want to add product in multiple categories in php. After lot of search/research on this I am able to add products in multiple categories but its not working while updating/changing product categories on update page .

MY DB structure is as:

PRODUCTTABLE
 _____________________________________________
|    pid    |      pname   | price | pdetails |
-----------+---------------+-------+----------+

CATEGORYTABLE
 ______________________________________
|    id    |      catname   | catslug |
-----------+---------------+----------+

PRODUCT2CAT
 ____________________________
|  product_id   |   cat_id  |
-----------+----------------+

在添加产品页面上使用的代码:(仅与问题相关)

Code used on ADD PRODUCT page:(only relevent to question)

<form method="post">
...........
echo "<input type=\"checkbox\" name=\"pcateg[]\" value=\"$catid\" /> $catnm<br />";
...........

if(isset($_POST["submit"])) {
.........
.............
$pc2=$_POST["pcateg"];

$query1 = "insert into producttable(pname,price,image,pdetails) values('$pn','$p','$img','$pd')";
mysql_query($query1);
$prdid = mysql_insert_id();



foreach($pc2 as $key=>$values)
{
$query2 = "INSERT INTO product2cat(product_id,cat_id) VALUES('$prdid','$values') ";
$result2 = mysql_query($query2);
}

}

当我添加产品时,代码运行良好并在 PRODUCT2CAT 表中插入选定的类别 ID.

When I Add Product, code is working well and insert selected categories ID in PRODUCT2CAT table.

更新产品页面上使用的代码是:

Code used on UPDATE PRODUCT Page is:

<form method="post">
...........
    while($ans=mysql_fetch_array($cresult))
    {
        $selected = "";
        $catId = $ans['id'];
        $catNm = $ans['catname'];

        if ($catId == $categ) {
        $selected = "checked";
        }

    echo "<input type=\"checkbox\" name=\"pcateg[]\" value=\"$catId\" $selected /> $catNm<br />";
    }
........
    if(isset($_POST["submit"])) {
    .........
    .............
    $query1="UPDATE producttable SET pname='$pn', price='$p', image='$img', pdetails='$pd' WHERE pid=$prid";
    mysql_query($query1);

    foreach($pc2 as $key=>$values)
    {
    $query2 = "UPDATE product2cat SET cat_id='$values' WHERE product_id=$prid";
    $result2 = mysql_query($query2);
    }
  }

更新 $query2 不起作用.
或者我必须首先使用2个查询来删除旧记录,然后插入新记录.如何在这种情况下使用查询,以便在产品更新时删除/更新选定的类别.

我还想在更新页面上将旧类别显示为预选复选框.$selected = "checked" 它适用于单个类别但是如何在多个检查中做到这一点.

Update $query2 is not working.
Or I have to use 2 queries 1st to delete old records and then insert new record. How to use query in such situation so as to del/update selected categories on product update.

I also want to display old categories as preselected checkbox on update page. $selected = "checked" It works on single category But how to do this in multiple check.

推荐答案

  1. 不要使用 mysql_* 它已被弃用
  2. INSERT INTO table_name ('col1', 'col2') VALUES (1, 2), (2, 3), (3, 4)将插入 3 行
  1. Do not use mysql_* it is deprecated
  2. INSERT INTO table_name ('col1', 'col2') VALUES (1, 2), (2, 3), (3, 4) would insert 3 rows

这样的事情可能会奏效:

Something like that might work:

$queryu = "INSERT INTO product2cat(product_id,cat_id) VALUES ";
$insertValues = array();
foreach($pc2 as $key=>$values) {
    $insertValues[]= "('$prid','$values')"; 
} 

$queryu .= implode(',', $insertValues);

这篇关于PHP SQL 多品类更新产品的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆