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

Тема в разделе "Как сделать...", создана пользователем Рамзесс, 28 май 2015.

  1. Рамзесс

    Рамзесс Создатель

    Регистр.:
    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 КБ
      Просмотров:
      18
    Последнее редактирование модератором: 28 май 2015
  2. wwwxakep

    wwwxakep Создатель

    Регистр.:
    4 фев 2007
    Сообщения:
    28
    Симпатии:
    8
    Если тебе нужно изменить существующую строку, а не добавить новую, необходимо использовать операцию UPDATE, а не INSERT.
    PHP:
    $sql  "UPDATE ".  ORDER " SET pic = " $sellorder['pic'] . " WHERE id = "$_GET['id'];
     
  3. greatbart

    greatbart Постоялец

    Регистр.:
    25 авг 2007
    Сообщения:
    59
    Симпатии:
    12
    Если после инсерта нужно узнать id последнего автоинкремента, есть функция mysqli_insert_id, которая его возвращает
    мануал с примерами тут http://php.net/manual/ru/mysqli.insert-id.php
     
  4. HunterNNm

    HunterNNm Создатель

    Регистр.:
    3 сен 2010
    Сообщения:
    49
    Симпатии:
    6
    Не хочу шибко умничать... Автор, возьми обёртку под PDO(на гитхабе большой выбор), Раздели весь код на пару методов и будет тебе счастье! Если честно такой код читать сложновато. А так принцип такой: вставил данные, метод вернул тебе id, ты сделал UPDATE таблицы если id = значению, которое вернулось до этого. А еще лучше - загрузить изображение и сразу вставить его...
     
  5. Dr.TRO

    Dr.TRO Писатель

    Регистр.:
    8 апр 2013
    Сообщения:
    0
    Симпатии:
    0
    И обрати внимание что у тебя SQL инъекции в коде везде.
     
  6. Рамзесс

    Рамзесс Создатель

    Регистр.:
    13 июл 2014
    Сообщения:
    11
    Симпатии:
    1
    К сожалению даже не представляю как их искать и как они выглядят!!! Может подскажете? Или может есть софт для проверки более или менее оптимальный. А так хотелось бы самому понять...