Добавление значения в столбец формированной таблицы

Рамзесс

Создатель
Регистрация
13 Июл 2014
Сообщения
11
Реакции
1
Не знаю на сколько корректно создал тему, но попытаюсь объяснить. Проблему даже не представляю как решить. При формировании заявки все значения заносятся в таблицу (скрин 1)

order.php
PHP:
<?php
include_once("$config[webroot]/module/product/includes/plugin_order_class.php");
if(!empty($_POST['obutton']))
{
    if(!empty($_POST['suid'])&&$_POST['price']*1>0&&!empty($_POST['proid'])&&!empty($_POST['nums'])&&!empty($_POST['buyername'])&&!empty($_POST['buyertel'])&&!empty($_POST['buyeraddr'])&&!empty($_POST['buyerzip']))
    {
        $tm=time();
        $_POST['freight_type']=empty($_POST['freight_type'])?1:$_POST['freight_type'];
        $product['proid']=$_POST['proid'];
        $product['pname']=$_POST['pname'];
        $product['pprice']=$_POST['pprice'];
        $product['nums']=$_POST['nums'];
        $product['lave']=$_POST['lave'];
        $product['unit']=$_POST['unit'];
        $product=serialize($product); 
        $_POST['buyerzip']*=1;
   
        $_POST['price']*=1;
        $_POST['freight_price']*=1;
       
      $sql="insert into ".ORDER." (buid,suid,product,price,lave,unit,ordertime,status,buyername,buyertel,buyeraddr,buyerzip,des,freight_type,freight_price,uptime) 
      VALUES 
      ('$buid','$_POST[suid]','$product','$_POST[price]','$_POST[lave]','$_POST[unit]','$tm',1,'$_POST[buyername]','$_POST[buyertel]','$_POST[buyeraddr]','$_POST[buyerzip]','$_POST[des]','$_POST[freight_type]','$_POST[freight_price]',$tm)"; 
     
      $db->query($sql);
      $id=$db->lastid();
     
        //--------------------send sort mail---
        $date=date("Y-m-d H:i");
        $sql="insert into ".FEEDBACK." (touserid,fromuserid,fromInfo,sub,con,date)
                VALUES
                ('$_POST[suid]','$buid','','New order','New order','$date')";
        $db->query($sql);
        //-------------------------------------
        msg('main.php?action=m&m=product&s=admin_orderdetail&type=buy&menu=trade&id='.$id);//成功,转到详情页
    }
    else
        msg($config['weburl'].'/?m=product&s=order&id='.$_GET['id'].'&nums='.$_GET['nums'].'&erroy=2');//参数不完整
}
//==============================================
if(empty($_GET['erroy']))
{
    if(!is_numeric($_GET['id'])||!is_numeric($_GET['nums']))
        die('Invalid URL !');//参数错误
    if(empty($buid))
        msg("login.php?forward=".urlencode("index.php?m=product&s=product_detail&id=$_GET[id]"));//没有登录
    else
    {
        $db->query("select *  from ".USER." where userid='$buid'");
        $buyinfo=$db->fetchRow();
        $tpl->assign("buyinfo",$buyinfo);
    }
    $sql="select * from ".PRO." a,".USER." b where a.userid=b.userid and a.id='$_GET[id]'";
    $db->query($sql);
    $info=$db->fetchRow();
    if(!empty($info['id']))
    {
        $info['freight']=explode(",",$info['freight']);   
        $tpl->assign("orderd",$info);
    }
    else
        msg('404.php');//产品不存在
}
$tpl->assign("current","product");
$tpl->assign("lave",$lave);
$tpl->assign("unit",$unit);
include_once("footer.php");
$out=tplfetch("order.htm");

$tpl->assign("out",$out);
$sql="SELECT * FROM ".PCAT." WHERE catid<9999 ORDER BY nums asc,char_index";
$db->query($sql);
$re=$db->getRows();
foreach($re as $key=>$v)
{
    $re[$key]["sub"] = readsubcat($v["catid"]);
}
$tpl->assign("cat",$re);
tplfetch("shop.htm",null,true);
?>

В дальнейшем, после формировании заказа, следующим этапом необходимо в столбец pic необходимо по id добавить загружаемый файл

admin_sellorder.php

PHP:
<?php
include_once("$config[webroot]/lang/".$config['language']."/user_admin/global.php");
include_once("$config[webroot]/module/product/lang/".$config['language']."/".$_GET['s'].".php");
include_once("$config[webroot]/module/product/includes/plugin_order_class.php");
include_once("$config[webroot]/includes/page_utf_class.php");
$order=new order();
//=====================================================================
if(isset($_GET['flag'])&&isset($_GET['id'])&&is_numeric($_GET['flag'])&&is_numeric($_GET['id']))
    echo $order->orderoption($_GET['id'],$_GET['flag'],1);
if (isset($_GET['status']))
    $tpl->assign("slist",$order->sellorder($_GET['status']));

       
else
    $tpl->assign("slist",$order->sellorder());
    $tm=time();
        $sellorder['pic']=$_POST['pic'];
        $sql="insert into ".ORDER." (buid,suid,product,price,lave,unit,ordertime,status,buyername,buyertel,buyeraddr,buyerzip,des,freight_type,freight_price,uptime,pic) 
      VALUES 
      ('$buid','$_POST[suid]','$product','$_POST[price]','$_POST[lave]','$_POST[unit]','$tm',1,'$_POST[buyername]','$_POST[buyertel]','$_POST[buyeraddr]','$_POST[buyerzip]','$_POST[des]','$_POST[freight_type]','$_POST[freight_price]',$tm,'$_POST[pic]')"; 
     
      $db->query($sql);
      $id=$db->lastid();
     
//=====================================================================
$tpl->assign("pic",$pic);
$tpl->assign("config",$config);
$tpl->assign("lang",$lang);
$output=tplfetch("admin_sellorder.htm");

?>

А вот здесь проблема! Столбцы добавляются под новым id. А мне надо добавить в ту же строку. Помогите пожалуйста!
 

Вложения

  • 1.png
    1.png
    265,5 KB · Просмотры: 19
Последнее редактирование модератором:
Если тебе нужно изменить существующую строку, а не добавить новую, необходимо использовать операцию UPDATE, а не INSERT.
PHP:
$sql  = "UPDATE ".  ORDER . " SET pic = " . $sellorder['pic'] . " WHERE id = ". $_GET['id'];
 
Если после инсерта нужно узнать id последнего автоинкремента, есть функция mysqli_insert_id, которая его возвращает
мануал с примерами тут Для просмотра ссылки Войди или Зарегистрируйся
 
Не хочу шибко умничать... Автор, возьми обёртку под PDO(на гитхабе большой выбор), Раздели весь код на пару методов и будет тебе счастье! Если честно такой код читать сложновато. А так принцип такой: вставил данные, метод вернул тебе id, ты сделал UPDATE таблицы если id = значению, которое вернулось до этого. А еще лучше - загрузить изображение и сразу вставить его...
 
И обрати внимание что у тебя SQL инъекции в коде везде.
 
К сожалению даже не представляю как их искать и как они выглядят!!! Может подскажете? Или может есть софт для проверки более или менее оптимальный. А так хотелось бы самому понять...
 
Назад
Сверху