2016-08-25 35 views
0

我在嘗試添加多個條目時遇到了問題。我嘗試了不同的解決方案,但問題沒有解決。唯一的問題是讓現場「勇氣」PHP上的多個條目MySQL

<? $produtocotacao = "select * from cadcotacao2 WHERE idcotacao = '$idcotacao' ORDER by id DESC"; 
$result = mysql_query ($produtocotacao, $marechal) or die(mysql_error()); 
while ($linha = mysql_fetch_array ($result)) { 
    $id = $linha["id"]; 
    $idproduto = $linha["idproduto"]; 
    $produto = $linha["produto"]; 
    $user = $linha["user"]; 

    ?> 
    <form id="form6" method="post" action=""><tr> 
    <td align="center"><? echo $linha['idproduto']; ?></td> 
    <td align="center"><? echo $linha['produto']; ?></td> 
    <td align="left" valign="middle"> 
    <input name="id6[]" type="hidden" value="<? echo $linha['id']; ?>" /> 
    <input name="idcotacao[]" type="hidden" value="<? echo $idcotacao; ?>" /> 
    <input name="idproduto[]" type="hidden" value="<? echo $linha['idproduto']; ?>" /> 
    <input name="idfornecedor[]" type="hidden" value="<? echo "teste"; ?>" /> 
    <input name="ip[]" type="hidden" value="<? echo $ip; ?>" /> 
    <input name="valor[]" type="text" id="valor" placeholder="Ex: 110,50" class="m-wrap span6" /> 
    </td> 
    </tr> 

    <? 
    if(isset($_POST['done2'])){ 

     $cotacao = array(); 

     $cotacao[] = array('id' => $linha['id'], 'idcotacao' => $idcotacao, 'idproduto' => $idproduto, 'idfornecedor' => "teste", 'ip' => $ip, 'valor' => $_POST['valor']); 

     foreach ($cotacao as $rst) { 
      $id = $rst['id']; 
      $idcotacao = $rst['idcotacao']; 
      $idproduto = $rst['idproduto']; 
      $idfornecedor = $rst['idfornecedor']; 
      $ip = $rst['ip']; 
      $valor = $rst['valor']; 

      $sql = "INSERT INTO `cadcotacao4` (`ip`, `idcotacao`, `idproduto`, `idfornecedor`, `valor`) VALUES ('{$ip}', '{$idcotacao}', '{$idproduto}', '{$idfornecedor}', '{$valor}');"; 

      if(mysql_query($sql)){ 
       $erro = "Cotação Respondida!"; 
      } 
     } 

    } 
} ?> 

的代碼如下這些行記錄mysql中的價值:

id timestamp   ip   idforn idprod forn valor 
47 2016-08-25 15:47:45 179.209.99.217 2 6745 teste Array 
48 2016-08-25 15:47:45 179.209.99.217 2 1  teste Array 
+0

'$ _POST ['valor']'是一個數組,你在字符串上下文中使用它,這會導致php發出警告並給你字面值'Array'作爲數組的「值」。由於您沒有提及看到/看到該警告,您可能正在使用display_errors/error_reporting DISABLED運行。這是一個糟糕的決定。他們絕不應該在開發/調試框中關閉。 –

+0

Hi Marc B.我沒有看到這個警告。 error_reporting(E_ALL)已啓用。你有任何解決方案? –

+0

display_errors呢?如果這是關閉的,錯誤/警告只是記錄在某處。要麼打開顯示器,要麼虔誠地檢查他們的記錄 –

回答

0

你的問題的難點在於,你的代碼看起來很有缺陷結構。如果我誤解你正在做的事,請原諒我。

看起來你正在做一個經典的PHP新手錯誤,沒有意識到在客戶端執行任何動態HTML和/或JavaScript等之前,頁面上的所有PHP代碼都會被執行(在服務器上)。

因此,我傾向於在腳本的開始處放置任何服務器端處理 - 提醒您它將首先完成 - 首先放置張貼的表單/結果數據處理,然後準備要顯示的數據在您的新頁面上。其次,如果您使用多個輸入類型(valor []),那麼只有在一個表單中重複輸入時纔有意義 - 那麼爲什麼要爲每一行重新聲明表單?只有一個表單會被髮送。

既可以使用一種形式中具有重複的多個輸入(如果你想改變多個行與一個提交),或使用單獨的形式(優選不同的命名)用簡單的輸入(英勇)(以顯示多個結果,但只每次更改一個)而不是多個(valor [])。

所以,我會重新安排你的代碼是這樣的:

<?php 
     if(isset($_POST['done2'])){ 
      $ids=$_POST['id6']; 
      $idcotacaos = $_POST['idcotacao']; 
      $idprodutos = $_POST['idproduto']; 
      $idfornecedors = $_POST['idfornecedor']; 
      $ips = $_POST['ip']; 
      $valors = $_POST['valor']; 
      $i=0; 
      foreach($ids as $id) 
      { 
       $idcotacao = $idcotacaos[$i]; 
       $idproduto = $idprodutos[$i]; 
       $idfornecedor = $idfornecedors[$i]; 
       $ip = $ips[$i]; 
       $valor = $valors[$i]; 

       $sql = "INSERT INTO `cadcotacao4` (`ip`, `idcotacao`, `idproduto`, `idfornecedor`, `valor`) VALUES ('{$ip}', '{$idcotacao}', '{$idproduto}', '{$idfornecedor}', '{$valor}');"; 

       if(mysql_query($sql)){ 
        $erro = "Cotação Respondida!"; 
       } 
       $i++; 
      } 

     } 

     $produtocotacao = "select * from cadcotacao2 WHERE idcotacao = '$idcotacao' ORDER by id DESC"; 
     $result = mysql_query ($produtocotacao, $marechal) or die(mysql_error()); 
?> 
       <form id="form6" method="post" action=""> 
<?php 
     while ($linha = mysql_fetch_array ($result)) { 
      $id = $linha["id"]; 
      $idproduto = $linha["idproduto"]; 
      $produto = $linha["produto"]; 
      $user = $linha["user"]; 

?> 
       <tr> 
       <td align="center"><? echo $linha['idproduto']; ?></td> 
       <td align="center"><? echo $linha['produto']; ?></td> 
       <td align="left" valign="middle"> 
       <input name="id6[]" type="hidden" value="<? echo $linha['id']; ?>" /> 
       <input name="idcotacao[]" type="hidden" value="<? echo $idcotacao; ?>" /> 
       <input name="idproduto[]" type="hidden" value="<? echo $linha['idproduto']; ?>" /> 
       <input name="idfornecedor[]" type="hidden" value="<? echo "teste"; ?>" /> 
       <input name="ip[]" type="hidden" value="<? echo $ip; ?>" /> 
       <input name="valor[]" type="text" id="valor" placeholder="Ex: 110,50" class="m-wrap span6" /> 
       <input type="submit" name="done2" value="Save Changes"> 
       </td> 
       </tr> 

<?php 
     } 
?> 
       </form> 

的變化通過IDS循環和獲取內,則是循環執行的每一個其他多個[] POST值的元素位SQL使用這些元素。希望那是你想要達到的那種東西。

+0

還有其他一些改進可以讓idcotacao成爲循環外的單個輸入 - 類似idfornecedor。然後,您只需從POST數組中獲取單個值。 –