doutuanxiao4619 2017-03-30 07:02
浏览 6
已采纳

无法使用php和mysqli更新2个项目

I have a table where I want to update data in 2 rows.

Heres my code:

<?php
   include("includes/conn.php");
   session_start();
    if(!isset($_SESSION['username']))
    {
        header('Location: login.php');
    }
else{
?>
    <?php
            $page_title = 'Update Order'; 
            include("includes/header.inc.php"); 
    ?>

    <?php if( $_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['update-order']) ){
        if( !empty($_POST['productname']) && !empty($_POST['quantity']) && !empty($_POST['price']) && !empty($_POST['amount']) ){

            $total = 0;
            $pid = mysqli_real_escape_string($db,$_POST['pid']);
            $advance = mysqli_real_escape_string($db,$_POST['advance_paid']);
            $dod = mysqli_real_escape_string($db,$_POST['dod']);
            $dod = date('Y-m-d', strtotime($dod));
            $mop = mysqli_real_escape_string($db,$_POST['mop']);


            for($i = 0; $i<count($_POST['productname']); $i++)  
            {
                $total = $total + $_POST['amount'][$i];

                $query = "UPDATE `invoice` SET product_name = (select name from item where id = '{$_POST['productname'][$i]}'), quantity = '{$_POST['quantity'][$i]}', price = '{$_POST['price'][$i]}', discount = '{$_POST['discount'][$i]}', amount = '{$_POST['amount'][$i]}', dod = '{$dod}', added_by = '{$_SESSION['id']}' WHERE id = '{$pid}' ";
                mysqli_query($db, $query);

                $update_stock = "UPDATE `item` SET added_by = '{$_SESSION['id']}', total_stock = total_stock + '{$_SESSION['quant']}' - '{$_POST['quantity'][$i]}' WHERE id = '{$_POST['productname'][$i]}'";
                mysqli_query($db, $update_stock);

            }

                $query_orders = "UPDATE `orders` SET amount = '{$total}', dod = '{$dod}', mop = '{$mop}', advance = '{$advance}', added_by = '{$_SESSION['id']}' WHERE order_id = '{$_POST['orderid']}' ";
                mysqli_query($db, $query_orders);

        }
    }
    ?>

    <div id="alteration-form">
        <div style="width: 90%; margin: 0 auto;">
            <form method="GET" action="">
                <label for="update_orderno" >Order NO.</label>
                <input type="text" name="orderno" class="input-field" id="update_orderno" />
                <input type="submit" name="find-order" value="Search Order" class="btn-all-submit" id="btn-order" />
            </form>
         </div>
    </div>
    <?php if( $_SERVER["REQUEST_METHOD"] == "GET" ){ ?>

    <?php
        if( !empty($_GET['orderno']) ){

            $orderno = $_GET['orderno'];

            $sql_cust = "SELECT cust_id FROM `orders` where order_id = '$orderno' ";
            $result_cust = mysqli_query($db, $sql_cust);

            if( mysqli_num_rows($result_cust) > 0 ){
                while( $row_cust = mysqli_fetch_array($result_cust, MYSQLI_ASSOC) ){
                    $cust_id = $row_cust['cust_id'];
                }

                $sql_name = "SELECT * FROM `users` WHERE id = '$cust_id' ";
                $result_name = mysqli_query($db, $sql_name);

                if( mysqli_num_rows($result_name) > 0 ){
                    while( $row_name = mysqli_fetch_array($result_name, MYSQLI_ASSOC) ){
                        $name = $row_name['name'];
                        $phone = $row_name['phone'];
                        $address = $row_name['address'];
                        $city = $row_name['city'];
                        $state = $row_name['state'];
                    }
                }

            }
    ?>
    <div class="result-table-div">
        <div class="divRow">
            <div class="divCell" ><strong>Name:</strong></div>
            <div class="divCell" ><?php echo $name; ?></div>
            <?php if(!empty($phone)){ ?>
                <div class="divCell" ><strong>Phone:</strong></div>
                <div class="divCell" ><?php echo $phone; ?></div>
            <?php } ?>
        </div>
        <div class="divRow">
            <?php if(!empty($address)){ ?>
                <div class="divCell" ><strong>Address:</strong></div>
                <div class="divCell" ><?php echo $address; ?></div>
            <?php } ?>
            <?php if(!empty($city)){ ?>
                <div class="divCell" ><strong>City:</strong></div>
                <div class="divCell" ><?php echo $city; ?></div>
            <?php } ?>
        </div>
        <div class="divRow">
            <?php if(!empty($state)){ ?>
                <div class="divCell" ><strong>State:</strong></div>
                <div class="divCell" ><?php echo $state; ?></div>
            <?php } ?>
        </div>
    </div>
    <div class="result-table-div">
    <form method="POST" action="">
    <div class="divRow">
        <div class="divCell" ><strong>Date of Delivery:</strong></div>
        <div class="divCell" ><input type="text" name="dod" id="dod" value="<?php echo date("m/d/Y"); ?>"/></div>
        <div class="divCell" ><strong>Mode of Payment:</strong></div>
        <div class="divCell" >
            <select name="mop">
                <option value="cash">Cash</option>
                <option value="card/cheque/online banking">Card/Cheque/Online Banking</option>
            </select>
        </div>                    
    </div>
    <table id="invoice-table">
    <thead>
        <tr>
            <th>S No.</th>
            <th>Item</th>
            <th>Quantity</th>
            <th>Price</th>
            <th>Discount</th>
            <th>Amount</th>
        </tr>
    </thead>
    <tbody>
    <?php

                    $sql = "SELECT * FROM invoice where order_id = '$orderno' ";

                    $result = mysqli_query($db, $sql);

                    if( mysqli_num_rows($result) > 0 ){
                    $count = 1;
                        while( $row = mysqli_fetch_array($result,MYSQLI_ASSOC) ){
                            $id = $row['id'];
                            $product_name = $row['product_name'];
                            $quantity = $row['quantity'];
                            $price = $row['price'];
                            $discount = $row['discount'];
                            $amount = $row['amount'];
                            $_SESSION['cust_id'] = $row['cust_id'];
                            $_SESSION['quant'] = $quantity;
    ?>
    <tr>
        <input type="hidden" name="pid" value="<?php echo $id; ?>" />
        <td><?php echo $count++; ?></td>
        <!--<td><input type="text" name="productname[]" value="?php echo $product_name ?>"></td>-->
        <td>
            <select name="productname[]">
                <option value="1" <?php if( isset($product_name) && strtolower($product_name) == "bags" ) echo "selected"; ?> >Bags</option>
                <option value="2" <?php if( isset($product_name) && strtolower($product_name) == "shoes" ) echo "selected"; ?> >Shoes</option>
                <option value="3" <?php if( isset($product_name) && strtolower($product_name) == "suit" ) echo "selected"; ?> >Suit</option>
                <option value="4" <?php if( isset($product_name) && strtolower($product_name) == "belts" ) echo "selected"; ?> >Belts</option>
                <option value="5" <?php if( isset($product_name) && strtolower($product_name) == "t-shirts" ) echo "selected"; ?> >T-shirts</option>
                <option value="6" <?php if( isset($product_name) && strtolower($product_name) == "others" ) echo "selected"; ?> >Others</option>
            </select>
        </td>
        <td><input type="text" class="quantity" name="quantity[]" value="<?php echo $quantity ?>"></td>
        <td><input type="text" class="price" name="price[]" value="<?php echo $price ?>"></td>
        <td><input type="text" class="discount" name="discount[]" value="<?php echo $discount ?>"></td>
        <td><input type="text" class="amount" name="amount[]" value="<?php echo $amount ?>"></td>
    </tr>    
      <?php 
                    }
        ?>
            <input type="hidden" name="orderid" value="<?php echo $orderno; ?>">
        <?php   
                }       
    ?>
    </tbody>
    </table>
    <p style="text-align: center;">Advanced Paid:&nbsp;&nbsp;<input type="text" name="advance_paid" /></p>
    <div class="btn-div">
        <input type="submit" class="btn-all-submit" name="update-order" value="Update Order">
    </div>
    </form>
    </div>
    <?php } } ?>
    <script>
        $('body').delegate('.quantity,.price,.discount','keyup',function()  
        {  
        var tr=$(this).parent().parent();  
        var qty=tr.find('.quantity').val();  
        var price=tr.find('.price').val();  

        var dis=tr.find('.discount').val();  
        var amt =(qty * price)-(qty * price *dis)/100;  
        tr.find('.amount').val(amt);  
        }); 
    </script>
    <?php include("includes/footer.inc.php"); ?>       
<?php } ?>

I am using for loop to update the data but if I have 2 items to update, it is only updating second item and not the first one. Can someone please help me with this. Problem occurs while updating invoice table.

  • 写回答

1条回答 默认 最新

  • dongyan9838 2017-03-30 08:55
    关注

    I found the solution for my problem. Query should be

    $query = "UPDATE `invoice` SET product_name = (select name from item where id = '{$_POST['productname'][$i]}'), quantity = '{$_POST['quantity'][$i]}', price = '{$_POST['price'][$i]}', discount = '{$_POST['discount'][$i]}', amount = '{$_POST['amount'][$i]}', dod = '{$dod}', added_by = '{$_SESSION['id']}' WHERE id = '{$_POST['pid'][$i]}' ";
                    mysqli_query($db, $query);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据