Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DaniloCamargo

Erro em Tela de cadastro de vários itens que irão para mesma tabela no banco

Recommended Posts

Boa tarde, galera!!

Estou tendo um problema em um sistema que estou desenvolvendo para uma matéria da faculdade. O problema é o seguinte: Tenho 2 telas. A primeira tela é de cadastro de uma requisição de produtos, nessa 1° tela tem um campo para digitar a quantidade de produtos desejada para tal requisição e dependendo da quantidade que eu coloco, aparecem os campos dos produtos conforme indiquei. Ou seja, se eu colocar que vão ser 4 produtos, por exemplo, quando eu clicar em enviar, irão aparecer campos para o preenchimento de 4 produtos na 2° tela. Fiz através de um laço FOR. O problema é que sempre que preencho os dados referentes aos produtos e aperto no botão salvar, é inserido no banco, as informações digitadas no ultimo produto para todos os outros, ou seja, todos os produtos que eu cadastro vão idênticos.

 

Olha como eu fiz:

 

Código da primeira página: requisicao.php

 

<?php
	include_once("..\..\config.php");
?>
<?php
	$page_title = "Cadastro Requisicao";
	include($_SERVER['DOCUMENT_ROOT']."/NovoModelo/header.php");
	echo "<div class='right-button-margin'>";
    echo "<a href='..\..\IniciaisMenu/estoque.php' class='btn btn-info pull-right'>";
    echo "<span class='glyphicon glyphicon-list-alt'></span> Voltar ";
    echo "</a>";
	echo "</div>";
?>
<html>
	<body>
		<form action="requisicao.php" method="post" name="form1" style = "background-color:white;">
			<table align="center">
				<tr align="center">
					<td rowspan="2"><b> <h3> Cadastrar Requisição </b> </h3></b></td>
				</tr>
			</table>
			<table align="center" >	
				<tr>
					<td colspan="2"><h6>* Digite as informações nos campos abaixo, para cadastrar uma nova requisição.</h6></Td>
				</tr>
				<tr><td><br></td></tr>
				<tr>
					<td><b>Descrição</b></td>
					<td>
						<input type="text" name="descricao">
					</td>
				</tr>
				<tr><td><br></td></tr>
				<tr>
					<td><b>Data</b></td>
					<td>
						<input type="text" name="data">
					</td>
				</tr>
				<tr><td><br></td></tr>
				<tr>
					<td><b>STATUS</b></td>
					<td><select name="status"/>
						<option value="">Selecione</option>
						<option value ="Aberto"> Aberto </option>
						<option value ="Fechado"> Fechado </option>
					</td>
				</tr>
				<tr><td><br></td></tr>
				<tr>
					<td>Quantidade de Produtos:</td>
					<td><input type='text' name='QTD' class='form-control' placeholder="Digite a Quantidade de Produtos" ></td>
				</tr>
				<tr><td><br></td></tr>
				<tr>
					<td colspan="2" align="center">
						<center>
						<input type="submit" name="Submit" value="Salvar & Adicionar Produtos" class="btn btn-primary">		
						</center>
					</td>
				</tr>
			</table>
			<br><br>
		</form>
<?php
if(isset($_POST['Submit'])) {	

	$descricao = mysqli_real_escape_string($mysqli, $_POST['descricao']);
	$data = mysqli_real_escape_string($mysqli, $_POST['data']);
	$status = mysqli_real_escape_string($mysqli, $_POST['status']);
	$QTD = mysqli_real_escape_string($mysqli, $_POST['QTD']);
	
	
	$result = mysqli_query($mysqli, "INSERT INTO est_requisicao (req_descricao, req_data, req_status) VALUES ('$descricao', '$data', '$status')");
	     
    $id = mysqli_insert_id($mysqli);
    
    $URL = "requisicao2.php?id=".$id."&qtd=".$QTD;
    echo $URL;
    
    echo '<META HTTP-EQUIV="refresh" content="0;URL=' . $URL . '">';
    echo "<script type='text/javascript'>document.location.href='{$URL}';</script>";
    
    //echo "<META HTTP-EQUIV='Refresh' Content='0'; URL='requisicao2.php'>";
    //echo "<script>Location.href = requisicao2.php?id=".$id."&qtd=".$QTD."</script>";
	
}
?>
</body>
</html>
<div style="position:fixed;margin-bottom:0px;">
<?php
include($_SERVER['DOCUMENT_ROOT']."/NovoModelo/footer.php");
?>
</div>

Código da segunda página: requisicao2.php

 

<?php
	include_once("..\..\config.php");
?>
<?php
	$page_title = "Incluir Itens";
	include($_SERVER['DOCUMENT_ROOT']."/NovoModelo/header.php");
	echo "<div class='right-button-margin'>";
	echo "<a href='..\..\IniciaisMenu/estoque.php' class='btn btn-info pull-right'>";
	echo "<span class='glyphicon glyphicon-list-alt'></span> Voltar ";
	echo "</a>";
	echo "</div>";
	include($_SERVER['DOCUMENT_ROOT']."/NovoModelo/config.php");
?>
<html>
	<body>
		<form action="#" method="post" name="form1" style = "background-color:white;">
			<table align="center">
				<tr align="center">
					<td rowspan="2"><b> <h3> Incluir Itens na Requisição </b> </h3></b></td>
				</tr>
			</table>
			<table align="center" >	
				<tr>
					<td colspan="2"><h6>* Preencha os campos abaixo para incluir os itens na requisição: </h6></Td>
					<td>
						<?php
							$id = $_GET['id'];
							$result = mysqli_query($mysqli, "SELECT req_descricao FROM est_requisicao WHERE req_id = $id"); 


							while($row = mysqli_fetch_array($result)) 
							{ 
								echo $row['req_descricao']; 
							}
						?>
					</td>
				</tr>
				<?php 
        
        $qtd = $_GET['qtd'];
        
        for($x=1; $x<=$qtd; $x++)
        {
		  echo "<tr><td colspan=2 align=center> _______________________________________________________________ </td></tr>";
		  echo "<tr><td colspan=2 align=center> <b>Produto</b> "; echo $x; echo "</td></tr>";
		  echo "<tr><td colspan=2 align=center> _______________________________________________________________ </td></tr>";
		  echo "<tr><td><br></td></tr>";
		  echo "<tr>";
		  echo "<td ><b>PRODUTO EM ESTOQUE</b> </td>
					<td><select name='prod_est'>
						<option value=''>Selecione</option>";
						
						$result_produto = "SELECT * FROM est_cad_prod";
							$resultado_produto = mysqli_query($mysqli, $result_produto);
							
							while ($row_produto = mysqli_fetch_assoc($resultado_produto)){ ?>
								<option value ="<?php echo $row_produto['cad_prod_id']; ?>"><?php echo $row_produto['cad_prod_nome']; ?>
								</option> <?php
							}
		  echo "</td>";
		  echo "</TR>
				<tr><td><br></td></tr>
				<TR>
					<td ><b> SETOR </b> </td>
					<td><select name='setor'>
				<option value=''></option>";
		  
		  	$result_setor = "SELECT * FROM est_setor";
				$resultado_setor = mysqli_query($mysqli, $result_setor);
				
				while ($row_setor = mysqli_fetch_assoc($resultado_setor)){ ?>
					<option value ="<?php echo $row_setor['set_id']; ?>"><?php echo $row_setor['set_descritivo']; ?>
					</option> <?php
				}
		  echo "</td>";
		  echo "</TR>
				<tr><td><br></td></tr>
				<tr>
					<td><b>PRODUTO NOVO</b></td>
					<td>
						<input type='text' name='prod_novo'>
					</td>
				</tr>
				<tr><td><br></td></tr>
				<tr>
					<td><b>Quantidade</b></td>
					<td>
						<input type='text' name='qtde'>
					</td>
				</tr>";
				echo "<tr><td><br></td></tr>";
        } 
        ?>
			    <tr> 
			<td></td>		
			 <td>
				<center>
				<input type="submit" name="Submit" value="Salvar" class="btn btn-primary">		
				</center>
			</td>			
		</tr> 
    </table>
</form>

<?php
//including the database connection file
include($_SERVER['DOCUMENT_ROOT']."/NovoModelo/config.php");

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

    $qtd = $_GET['qtd'];
    $id = $_GET['id'];
    
    for ($x=1; $x<=$qtd; $x++)
    {
		$prod_est = mysqli_real_escape_string($mysqli, $_POST['prod_est']);
		$setor = mysqli_real_escape_string($mysqli, $_POST['setor']);
		$prod_novo = mysqli_real_escape_string($mysqli, $_POST['prod_novo']);
		$qtde = mysqli_real_escape_string($mysqli, $_POST['qtde']);
		$result = mysqli_query($mysqli, "INSERT INTO est_requisicao_itens(req_id, cad_prod_id, set_id, req_itens_novo, req_itens_qtde) VALUES('$id','$prod_est', '$setor', '$prod_novo','$qtde')");
        
	   if($result == false){
		echo mysql_error(); 
         }
    }
    
    $URL = "requisicao.php";

    echo '<META HTTP-EQUIV="refresh" content="0;URL=' . $URL . '">';
    echo "<script type='text/javascript'>document.location.href='{$URL}';</script>";
		
}
?>
</body>
</html>
<div style="position:fixed;margin-bottom:0px;">
<?php
include($_SERVER['DOCUMENT_ROOT']."/NovoModelo/footer.php");
?>
</div>

 

Estou a vários dias tentando resolver esse problema, mas não chego a uma solução. Ficarei muito grato a todos que me ajudarem. Valeu galera.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você precisa fazer é indicar que o input é um array ao php.

 

Como?

 

Se eu quiser adicionar vários conteudos de inputs "dinamicamente" a minha tabela eu preciso nomea-los como array para que depois eu possa fazer um foreach no input e assim dar o loop de inserção de registros no meu BD.

 

(deu pra entender a explicação? rs)

 

Segue exemplo

 

HTML

<form method="post" action="#">
  <input type="text" name="produto[]" value="televisao">
  <input type="text" name="produto[]" value="geladeira">
  <input type="text" name="produto[]" value="fogao">
  <input type="text" name="produto[]" value="microondas">
</form>

PHP

<?php

foreach ($_POST['produto'] as $produto){ //crio um loop independente da quantidade que existam de inputs com o name='produto[]'
  
  $sql   = "INSERT INTO estoque (produto) VALUES ('".$produto."')"; //dentro do loop é adicionado ao meu banco as informações de cada produto
  $query = mysqli_query($mysql_link,$sql);
  
}

?>

 

Dessa forma você não precisa ficar usando o FOR e realizando cálculos, causando assim menos "stress" ao servidor e deixando a aplicação mais rápida.

 

Existem diversos artigos na pela web mostrando que a utilização do FOREACH sempre é mais rapida que a utilização do FOR.

Claro que há momentos em que a utilização do foreach não é possivel, mas neste simples script de inserção, recomendo o foreach.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.