Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP数组复制条目,不记录数据值_Php_Arrays - Fatal编程技术网

PHP数组复制条目,不记录数据值

PHP数组复制条目,不记录数据值,php,arrays,Php,Arrays,我想知道是否有人有时间看一下我的代码并帮我一把。基本上,我下载了一个表单,它允许我点击AddRow,并根据需要添加任意多的输入框,效果很好 问题是,当我将它们添加到数据库中时,它会复制条目,此外,我不会获取数组值,只获取单个值 例如:如果我添加2个条目,我在数据库中得到4个条目,它们都如下所示: 客户ID |项目日期|项目代码|项目名称|数量|成本|添加用户 5 | 2020-07-06 |数组|数组|数组|数组| Me PHP代码 function escape($html) { re

我想知道是否有人有时间看一下我的代码并帮我一把。基本上,我下载了一个表单,它允许我点击AddRow,并根据需要添加任意多的输入框,效果很好

问题是,当我将它们添加到数据库中时,它会复制条目,此外,我不会获取数组值,只获取单个值

例如:如果我添加2个条目,我在数据库中得到4个条目,它们都如下所示:

客户ID |项目日期|项目代码|项目名称|数量|成本|添加用户

5 | 2020-07-06 |数组|数组|数组|数组| Me

PHP代码

function escape($html) {
    return htmlspecialchars($html, ENT_QUOTES | ENT_SUBSTITUTE, "UTF-8");
}

if (isset($_POST['add_items'])) {
$entries = array( $item_code, $item_name, $qty, $cost);

$client_id = $_POST['client_id'];
$item_date = date("Y-m-d");
$added_user = $_SESSION['usr'];

foreach ($entries as $row) {

    $data = array(
        'client_id' => $client_id,
        'item_date' => $item_date,
        'item_code' => $item_code,
        'item_name' => $item_name,
        'qty' => $qty,
        'cost' => $cost,
        'added_user' => $added_user
        
    );

    $query = "INSERT INTO `invoiceitems` SET ";
    $fields = array();
    foreach ($data as $field => $value) {
        $fields[] = "`$field` = '$value'";
    }
    $fields = implode(', ', $fields);
    $query .= $fields;

    mysqli_query($con, $query);
}
  
}
HTML表单

  <tr class="item-row">
      <td><input name="item_code[]"  autocomplete="off" /></td>
      <td><input name="item_name[]" autocomplete="off" /></td>
      <td><input name="cost[]" autocomplete="off" /></td>
      <td><input name="qty[]" autocomplete="off" /></td>
      <td><span class="price"></span></td>
  </tr>
我看了很多例子,我被卡住了。如果有人能帮我,我将不胜感激。提前谢谢

完整代码:

<?php
include('../includes/main.php');
include_once('../includes/config.php');


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <meta name="keywords" content="" />
        <meta name="description" content="" />
        <title>J.D. Auto Center</title>
        <link rel="stylesheet" href="../css/style.css" type="text/css" media="screen" charset="utf-8" />
        <script src="../js/jquery.js" type="text/javascript" charset="utf-8"></script>
        <script src="../js/global.js" type="text/javascript" charset="utf-8"></script>
        <script src="../js/modal.js" type="text/javascript" charset="utf-8"></script>
        
        
        

    <link rel='stylesheet' type='text/css' href='css/style.css' />
    <link rel='stylesheet' type='text/css' href='css/print.css' media="print" />
    <script type='text/javascript' src='js/jquery-1.3.2.min.js'></script>
    <script type='text/javascript' src='js/example.js'></script>
    


    
    </head>
    <body>
    
<?php include_once('../includes/header.php'); ?>
        <div id="wrapper">
            <div id="minwidth">
                <div id="holder">
<?php $current = 3; include_once('../includes/navigation.php'); 
if(!isset($_SESSION['usr']))
{
echo "<p align='center'><font color='#F78181'>You need to be logged in to view this page.</font></p>";
}
else{
    
    
$client_id = $_POST['client_id'];

$query = "select * from clients where id = '$client_id'";
$result = mysqli_query($con, $query);
    


//$client_id = $_POST['client_id'];

$item_code = $_POST['item_code'];
$item_name = $_POST['item_name'];
$qty = $_POST['qty'];
$cost = $_POST['cost']; 



/// /// ADD INVOICE ITEMS 

function escape($html) {
    return htmlspecialchars($html, ENT_QUOTES | ENT_SUBSTITUTE, "UTF-8");
}

if (isset($_POST['add_items'])) {


/////////////////////////////////////////////////////////////////////////

$entries = array( $item_code, $item_name, $qty, $cost);

$client_id = $_POST['client_id'];
$item_date = date("Y-m-d");
$added_user = $_SESSION['usr'];

foreach ($entries as $row) {

    $data = array(
        'client_id' => $client_id,
        'item_date' => $item_date,
        'item_code' => $item_code,
        'item_name' => $item_name,
        'qty' => $qty,
        'cost' => $cost,
        'added_user' => $added_user
        
    );

    $query = "INSERT INTO `invoiceitems` SET ";
    $fields = array();
    foreach ($data as $field => $value) {
        $fields[] = "`$field` = '$value'";
    }
    $fields = implode(', ', $fields);
    $query .= $fields;

    mysqli_query($con, $query);
}
  
}





/// end ADD INVOICE ITEMS
    
?>              
                    <div id="desc">
                        <div class="body">
    <div id="html" class="help">
        

    <div id="page-wrap">

        <textarea id="header">INVOICE</textarea>
        
        <div id="identity">
        
<textarea id="address">
<?php
if (mysqli_num_rows($result) > 0) 
{
         while($row = mysqli_fetch_assoc($result) ) 
            { 
            
            echo "$row[first_name] $row[last_name]";
            echo "\n$row[address] $row[address2]";
            echo "\n$row[riding] $row[postal_code]";
            echo "\n$row[city] $row[province]";
            echo "\n$row[whatsapp]";
            echo "\n$row[phone1]";
            echo "\n$row[phone2]";
            echo "\n$row[phone3]";          
            }
}
?>

</textarea>

            <div id="logo">

              <div id="logoctr">
                <a href="javascript:;" id="change-logo" title="Change logo">Change Logo</a>
                <a href="javascript:;" id="save-logo" title="Save changes">Save</a>
                |
                <a href="javascript:;" id="delete-logo" title="Delete logo">Delete Logo</a>
                <a href="javascript:;" id="cancel-logo" title="Cancel changes">Cancel</a>
              </div>

              <div id="logohelp">
                <input id="imageloc" type="text" size="50" value="" /><br />
                (max width: 540px, max height: 100px)
              </div>
              <img id="image" src="images/logo.png" alt="logo" />
            </div>
        
        </div>
        
        <div style="clear:both"></div>
        
        <div id="customer">
<textarea id="customer-title">J.D. Auto Center</textarea>
<form name="add_items" enctype="multipart/form-data" accept-charset="UTF-8"  method="POST" action="<?php $_SERVER['PHP_SELF']; ?>" />
<?php 
echo "<input type='hidden' name='client_id' value='$_POST[client_id]' />"; ?>
            <table id="meta">
                <tr>
                    <td class="meta-head">Invoice #</td>
                    <td><textarea>000123</textarea></td>
                </tr>
                <tr>

                    <td class="meta-head">Date</td>
                    <td><textarea id="date"></textarea></td>
                </tr>
                <tr>
                    <td class="meta-head">Amount Due</td>
                    <td><div class="due"></div></td>
                </tr>

            </table>
        </div>
        
        <table id="items">
          <tr>
              <th>Item</th>
              <th>Descri&ccedil;&atilde;o</th>
              <th>Pre&ccedil;o de Unidade</th>
              <th>Quantidade</th>
              <th>Total</th>
          </tr>
          
          <tr class="item-row">
              <td><input name="item_code[]"  autocomplete="off" /></td>
              <td><input name="item_name[]" autocomplete="off" /></td>
              <td><input name="cost[]" autocomplete="off" /></td>
              <td><input name="qty[]" autocomplete="off" /></td>
              <td><span class="price"></span></td>
          </tr>

              
          
          <tr id="hiderow">
            <td colspan="5"><a id="addrow" href="javascript:;" title="Add a row">Add a row</a></td>
          </tr>
          
          <tr>
              <td colspan="2" class="blank"> </td>
              <td colspan="2" class="total-line">Subtotal</td>
              <td class="total-value"><div id="subtotal"></div></td>
          </tr>
          <tr>

              <td colspan="2" class="blank"> </td>
              <td colspan="2" class="total-line">Total</td>
              <td class="total-value"><div id="total"></div></td>
          </tr>
          <tr>
              <td colspan="2" class="blank"> </td>
              <td colspan="2" class="total-line">Amount Paid</td>

              <td class="total-value"><textarea id="paid"></textarea></td>
          </tr>
          <tr>
              <td colspan="2" class="blank"> </td>
              <td colspan="2" class="total-line balance">Balance Due</td>
              <td class="total-value balance"><div class="due"></div></td>
          </tr>
        
        </table>
        
<input type="submit" class="button" name="add_items" value="SALVAR" /></p>
</form>
        
        <div id="terms">
          <h5>Terms</h5>
          <textarea>Agradecemos a preferencia.</textarea>
          
          <?php
          var_dump($_POST);
          var_dump($entries);
          
          ?>
        </div>
    
    </div>
    
</div>
                            </div>
                            <div class="clear"></div>
                            </div>


    
    
                            <div class="clear"></div>
                        </div>
                        <div class="clear"></div>
                        <div id="body_footer">
                            <div id="bottom_left"><div id="bottom_right"></div></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
<?php include_once('../includes/footer.php'); ?>
    </body>
</html>
<?php

}

?>

我需要在html方面看到更多的代码,但我的第一个想法是,每个条目的名称都是重复的,没有任何错误。例如如果它添加了一个name=name的新标记,并且您添加的下一个标记也会在应该添加类似name=name1的迭代的位置提供name=name。之后,post页面需要能够获取所有具有未知数量变量名的post数据。我很幸运地使用了whileiset$\u POST和for循环来迭代name变量。但我需要看到一个更完整的代码集

循环遍历$entries=array$item\u code、$item\u name、$qty、$cost;这是不对的。您必须循环查看发票中每个项目的post数据数组

$query = "INSERT INTO `invoiceitems` (`client_id`, `item_date`, `item_code`, `item_name`, `qty`, `cost`, `added_user`) VALUES ";
$insert_rows = array();
//loop through item_code post data, inside this loop we will get other row data
foreach ($_POST['item_code'] as $k => $item_code_data) {

    $insert_fields = array($client_id, $item_date, $item_code_data, $_POST['item_name'][$k], $_POST['qty'][$k], $_POST['cost'][$k], $added_user);

    $insert_rows[] = implode("', '", $insert_fields);
}

if(count($insert_rows) > 0){
    $insert_rows_data = " ('" . implode("'), ('", $insert_rows) . "') ";
    mysqli_query($con, $query . $insert_rows_data);
}

var_dump$_POST;和var_dump$条目;因此,您可以了解数据的结构。此外,您根本没有在foreach循环中使用$row。要解决这个问题,1。了解你的数据,2。理解你的代码做什么,不要简单地模仿例子,3。把你的错误报告打开到最大限度,这样你就可以洞察到你的错误,这些错误很多,但你目前还没有看到。嗨,杰弗里。我在问题中公布了全部代码。感谢您感谢您解释这一点并提供有效的代码。虽然数据插入正确,但它只插入一行,而忽略所有其他行。有什么想法吗?循环是基于item_代码中的值工作的,所以如果它为空,整个过程将无法正常工作。我的假设是项目代码是强制性的。