【问题标题】:convert html form cloumn array to row php将html表单cloumn数组转换为行php
【发布时间】:2016-05-06 20:50:48
【问题描述】:

我有一个 html 表单,它有多个文本区域,它的值来自数据库。

while($row=mysql_fetch_array($record)){
echo "<tr class='item-row'>";
echo "<td>" .$startSrno. "</td>";
echo "<td class='item-name'> <div class='delete-wpr'><textarea name='productName[]'>".$row['name']."</textarea></div></td>";
echo "<td>".$row['pkgsize']."</td>";
echo "<td><textarea class='savings' name='saving[]'>".$row['savings']."</textarea></td>";
echo "<td><textarea class='mrp' name='mrp[]'>".$row['MRP']."</textarea></td>";
echo "<td><textarea class='qty' name='qty[]'>1</textarea></td>";
echo "<td><textarea class='cost' name='saleprice[]'>".$row['saleprice']."</textarea></td>";
echo "<td><textarea class='price' name='total[]'>".$row['saleprice'] * '1'."</textarea></td>";
echo '<input type="hidden" name="productId[]" value="'.$row['id']. '">';
echo '<input type="hidden" name="pkgsize[]" value="'.$row['pkgsize']. '">';
echo "</tr>";
$startSrno++;

}

现在,当我提交此表单时,我得到了这些具有多个值但它们是列格式的表单数组,而我需要它的行格式:

通过这样做(使用内爆函数())我得到以下输出:

$id = implode(',',$_POST['productId']);<br/>
$name = implode(',',$_POST['productName']);
$saving = implode(',',$_POST['saving']);
$qty = implode(',',$_POST['qty']);
$pkgsize = implode(',',$_POST['pkgsize']);
$mrp = implode(',',$_POST['mrp']);
$saleprice = implode(',',$_POST['saleprice']);
$total = implode(',',$_POST['total']);

使用回显的当前输出,例如echo $name == (Boost,Olay):

Boost,Olay,Bournvita (Name)
45,35,20 (Savings)
2,3,5 (qty)
500gm,20ml,1kg(pkgsize)
120,70,320(mrp)
75,35,300(saleprice)
150,105,1500(total)

但我希望以下述(行)格式的输出直接在插入查询中使用:

(Boost,45,2,500gm,120,75,150),(Olay,35,3,20ml,120,35,105),(Bournvita,20,5,1kg,300,75,1500)

提前致谢

【问题讨论】:

    标签: php html mysql arrays


    【解决方案1】:

    听起来你需要一个 for 循环。前提是您已经验证了该数据并确保没有传入空的“单元格”。

    $products = '(' . $name[0] .  ',' . $saving[0] . ',' . $qty[0] . ',' . $pkgsize[0] . ',' . $mrp[0] . ',' . $saleprice[0] . ',' . $total[0] . ')';
    
    for($i = 1; $i < count($id); $i++)
        $products = ',(' . $name[i] .  ',' . $saving[i] . ',' . $qty[i] . ',' . $pkgsize[i] . ',' . $mrp[i] . ',' . $saleprice[i] . ',' . $total[i] . ')';
    

    我的 PHP 技能可能不是最新的,它可能可以做得更好,但我认为这应该可行。

    【讨论】:

    • 无效输出为:(B,40,1,500g,320,280,280)
    【解决方案2】:
    $b = '';
    for ($i=0; $i<count($_POST['productId']); $i++) {
      $a = array(
       //$_POST['productId'][$i],
       $_POST['productName'][$i],
       $_POST['saving'][$i],
       $_POST['qty'][$i],
       $_POST['pkgsize'][$i],
       $_POST['mrp'][$i],
       $_POST['saleprice'][$i],
       $_POST['total'][$i]
      );
      if ($b != '') $b .= ',';
      $b = '('.implode(',',$a).')';
    }
    echo $b;
    

    【讨论】:

    • 不,输出是:
    • (数组,数组,数组,数组,数组,数组,数组)
    • @Gravirel 也使它像这样: implode(',',$_POST['productName']), implode(',',$_POST['saving']), implode(', ',$_POST['qty']), 内爆(',',$_POST['pkgsize']), 内爆(',',$_POST['mrp']), 内爆(',',$_POST[ 'saleprice']), implode(',',$_POST['total']) 输出是这样的 :(Boost,Olay,40,5,1,1,500g,20g,320,27,280,22,280,22)
    • 现在试试,我忘记了 [$i]
    【解决方案3】:

    感谢 Gravirel 的帮助,最后还是做了一点尝试和错误。

    $oddArray = array();
    $evenArray = array();
    
    $insertValues = '';
    
    for ($i=0; $i<count($_POST['productId']); $i++) {
      if ($i % 2 == 0) {
          //echo $i."<br/>";
          $insertValues .= '(';
          $evenArray = array(
           //$_POST['productId'][$i],
           '\''.$_POST['productName'][$i].'\'',
           $_POST['saving'][$i],
           $_POST['qty'][$i],
           '\''.$_POST['pkgsize'][$i].'\'',
           $_POST['mrp'][$i],
           $_POST['saleprice'][$i],
           $_POST['total'][$i]
          );
          $insertValues .= implode(',',$evenArray);
          $insertValues .= '),';
      }else{
          //echo $i."<br/>";
    
          $insertValues .= '(';
          $oddArray = array(
           //$_POST['productId'][$i],
           '\''.$_POST['productName'][$i].'\'',
           $_POST['saving'][$i],
           $_POST['qty'][$i],
           '\''.$_POST['pkgsize'][$i].'\'',
           $_POST['mrp'][$i],
           $_POST['saleprice'][$i],
           $_POST['total'][$i]
          );
          $insertValues .= implode(',',$oddArray);
          $insertValues .= '),';
      }
     }
    
    $insertValuesTrim = rtrim($insertValues,',');
    

    输出:('Boost',45,2,'500gm',120,75,150),('Olay',35,3,'20ml',120,35,105),('Bournvita',20,5, '1kg',300,75,1500)

    【讨论】:

      猜你喜欢
      • 2019-04-10
      • 1970-01-01
      • 2015-10-31
      • 2020-02-28
      • 2015-08-29
      • 1970-01-01
      • 2021-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多