Ir para conteúdo

POWERED BY:

Arquivado

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

Leonidas Pinheiro

Salvando varios registros

Recommended Posts

Boa Tarde, tenho um codigo de um formulario de compras. Que está com erro, ele funciona da sequinte forma.

 

1) O cliente efetua um pedido no site.

2) Depois se cadastra no site.

3) na proxima tela, diz que o cadastro dele foi efetuado, e mostra os dados da compra dele.

 

O que eu preciso que o sistema faça é pegar o id desse cliente e salvar na tabela de pedidos. em cada registro de predido ter o id desse cliente, e é ai que q da o erro, ele não salva. e não da msg de erro tbm.

 

Abaixo segue o codigo.

 


<?php

if($_SERVER["REQUEST_METHOD"] == "POST") {

//aqui são as variaveis e os campos do insert na tabela clientes_loja
$id_cli   		 = $_POST["id_cli"];
$nome_cli		 = $_POST["nome_cli"];
$telefone_cli    = $_POST["telefone_cli"];
$email_cli       = $_POST["email_cli"];
$endereco_cli    = $_POST["endereco_cli"];
$bairro_cli      = $_POST["bairro_cli"];
$complemento_cli = $_POST["complemento_cli"];
$cidade_cli      = $_POST["cidade_cli"];
$cep_cli         = $_POST["cep_cli"];
$uf_cli      	 = $_POST["uf_cli"];
//aqui são as variaveis e os campos do insert na tabela itens_ped
$id_ped   		 = $_POST["id_ped"];
$id_cli			 = $_POST["id_cli"];
$nome_pro   	 = $_POST["nome_pro"];
$preco_pro  	 = $_POST["preco_pro"];
$qtde_pro   	 = $_POST["qtde_pro"];
$subtotal   	 = $_POST["subtotal"];

if(file_exists("init2.php")) {
	require "init2.php";		
} else {
	echo "Arquivo init.php nao foi encontrado";
	exit;
}

if(!function_exists("Abre_Conexao")) {
	echo "Erro o arquivo init.php foi auterado, nao existe a função Abre_Conexao";
	exit;
}

//Aqui Salva os dados do cliente na tabela Clientes
Abre_Conexao();
if(@mysql_query("INSERT INTO clientes_loja VALUES (NULL , '$nome_cli', '$telefone_cli', '$email_cli', '$endereco_cli', 
				'$bairro_cli', '$complemento_cli', '$cidade_cli', '$cep_cli', '$uf_cli')")){
				
	if(mysql_affected_rows() == 1){
		echo "<div class = h2> $nome_cli , O seu cadastro foi efetuado.<br><br>Confirme o seu pedido e selecione a forma de pagamento.</div><br><br>";
	}	

} else {
	if(mysql_errno() == 1062) {
		echo $erros[mysql_errno()];
		exit;
	} else {	
		echo "Erro nao foi possivel efetuar o cadastro";
		exit;
	}	
}	
}
	$carrinho = isset ($_SESSION['carrinho']) ? $_SESSION['carrinho'] : array();
	if (count ($carrinho) == 0)
	{
		echo "
		<tr>
		  <td colspan=\"5\" style=\"text-align:center\"><strong><em>
	 	   Não há produtos em seu carrinho de compas.</em></strong>
	 	</td>
		</tr>
		</table>
		";
	}
	else
	{
   		for ($a = 0; $a < count($carrinho); $a++)
		{
			$id = htmlentities ($carrinho[$a]['id']);
    		$nome_pro = htmlentities ($carrinho[$a]['nome_pro']);
    		$preco_pro = number_format ($carrinho[$a]['preco_pro'], 2, ",", "");
    		$desc_pro = htmlentities ($carrinho[$a]['descricao_pro']);
			$qtde_pro = $carrinho[$a]['qtde_pro'];
			$subtotal = number_format(($carrinho[$a]['preco_pro'] * $qtde_pro), 2, ',', '');

			echo "
    		<form>
			<tr>
	     	 <td><b><input name=nome_pro size=50 value=$nome_pro></b></td><br>
	     	 <td><b>Valor Unitario: </b><input name=preco_pro size=10 value=R$$preco_pro></td><br>
	      	<td><b>Quantidade: </b><input name=qtde_pro size=10 value=$qtde_pro></td><br>
	      	<td><b>Valor Total: </b><input name=subtotal size=10 value=$subtotal></td><br>
	      	<td></td>
	    	</tr><br>
			</form>
	    	";
    	}// fecha for
    
   		echo "
    	<tr>
      	<td><h2>Total do Pedido: R$".$_SESSION['total']."</h2></td>
     	 <td></td>
     	 <td></td>
    	</tr>
    	</table>
   	<br><br>";
	}// fecha else
	
//Aqui Salva os itens do pedido. a variavel a variavel $id_cli está logo acima em um input. (Aqui que não está salvando) o insert acima funciona perfeitamente
if(@mysql_query("INSERT INTO itens_ped VALUES (NULL , '$id_cli', '$nome_pro', '$preco_pro', '$qtde_pro', '$subtotal')")){
				
	if(mysql_affected_rows() >= 1){
		echo "Salvou";
	}	
} else {
	if(mysql_errno() == 1062) {
		echo $erros[mysql_errno()];
		exit;
	} else {	
//quando o codigo é executado ele chega ate aqui, mostrando a mensagem abaixo
		echo "Não Salvou<br><br>";
	}	
	@mysql_close();
}	

echo"<p><div class = titulos_imp align = center>Selecionar Forma de Pagamento</div></p>";

exit;
?>




Compartilhar este post


Link para o post
Compartilhar em outros sites

Não aparece nenhum erro porque tu ta suprimindo eles.

Toda expressão com uma @ antes no PHP, quer dizer que qualquer erro que esta expressão venha a mostrar, será suprimido (não aparecerá).

 

O primeiro passo é tirar essas arrobas.

 

Se mesmo assim nao aparecer erro, ai tu tem que debugar o código.

No grosso, tu vai setar display_errors(1), error_reporting(E_ALL), usar a função mysql_error() nas consultas e etc.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Tirei as @ mais mesmo assim ele não salva.

 

Somente o primeiro insert é feito e segundo ele entra no else e aparece a mensagem "Não Salvou"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque isto.

if(mysql_query("INSERT INTO itens_ped VALUES (NULL , '$id_cli', '$nome_pro', '$preco_pro', '$qtde_pro', '$subtotal')")){

Por isto

 

$sql = "INSERT INTO itens_ped VALUES (NULL , '$id_cli', '$nome_pro', '$preco_pro', '$qtde_pro', '$subtotal')";
mysql_quuery($sql) or die('Erro na segunda inserção - '.mysql_error().'<br/> A inserção enviada para o banco de dados foi '.$sql);

Veja o que imprime. A frase dentro do erro é só para debug. Depois você tira e deixa só o mysql_error().

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Erro na segunda inserção - Incorrect integer value: '' for column 'id_cli' at row 1

A inserção enviada para o banco de dados foi INSERT INTO itens_ped VALUES (NULL , '', 'Produto 2', '50,20', '1', '50,20')

 

Essa é a mensagem que aparece.

 

O campo id_cli é

int(11)

sem nenhum atributo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

INSERT INTO itens_ped VALUES (NULL , '', 'Produto 2', '50,20', '1', '50,20')

Esta é a instrução que está indo para o banco de dados... Tá faltando o valor da $id_cli. De onde vem isto? Por acaso é o id que é gerado nesta inserção aqui??

 

if(@mysql_query("INSERT INTO clientes_loja VALUES (NULL , '$nome_cli', '$telefone_cli', '$email_cli', '$endereco_cli', 
                                '$bairro_cli', '$complemento_cli', '$cidade_cli', '$cep_cli', '$uf_cli')")){

Se for, use a função mysql_insert_id para pegar o último id inserido e jogar ali.

http://br.php.net/mysql_insert_id

 

Se não for de lá, veja de onde ele vem e tente ver o que aconteceu com ele.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja que eu levantei algumas possibilidades...

 

Tá faltando o valor da $id_cli. De onde vem isto? Por acaso é o id que é gerado nesta inserção aqui??

Se não for de lá, veja de onde ele vem e tente ver o que aconteceu com ele.

Respondendo a isto, posso te ajudar.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, vou chutar aqui, já que você não me respondeu o que eu queria saber...

 

Troque isto

 

 if(mysql_affected_rows() == 1){
                echo "<div class = h2> $nome_cli , O seu cadastro foi efetuado.<br><br>Confirme o seu pedido e selecione a forma de pagamento.</div><br><br>";
        }   

Por isto

 

 if(mysql_affected_rows() == 1){
                echo "<div class = h2> $nome_cli , O seu cadastro foi efetuado.<br><br>Confirme o seu pedido e selecione a forma de pagamento.</div><br><br>";
                $id_cli = mysql_insert_id();
        }   

Veja se funciona.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara ainda não salvou, assim estou postando o codigo da pagina todo para você poder dar uma olhada. Está commentado para você ver... nessa mesma pagina q o id_cli é gerado.

 

 

<?php

if($_SERVER["REQUEST_METHOD"] == "POST") {

//aqui são as variaveis e os campos do insert na tabela clientes_loja
$id_cli   		 = $_POST["id_cli"];
$nome_cli		 = $_POST["nome_cli"];
$telefone_cli    = $_POST["telefone_cli"];
$email_cli       = $_POST["email_cli"];
$endereco_cli    = $_POST["endereco_cli"];
$bairro_cli      = $_POST["bairro_cli"];
$complemento_cli = $_POST["complemento_cli"];
$cidade_cli      = $_POST["cidade_cli"];
$cep_cli         = $_POST["cep_cli"];
$uf_cli      	 = $_POST["uf_cli"];
//aqui são as variaveis e os campos do insert na tabela itens_ped
$id_ped   		 = $_POST["id_ped"];
$id_cli			 = $_POST["id_cli"];
$nome_pro   	 = $_POST["nome_pro"];
$preco_pro  	 = $_POST["preco_pro"];
$qtde_pro   	 = $_POST["qtde_pro"];
$subtotal   	 = $_POST["subtotal"];

if(file_exists("init2.php")) {
	require "init2.php";		
} else {
	echo "Arquivo init.php nao foi encontrado";
	exit;
}

if(!function_exists("Abre_Conexao")) {
	echo "Erro o arquivo init.php foi auterado, nao existe a função Abre_Conexao";
	exit;
}

//Aqui Salva os dados do cliente na tabela Clientes
Abre_Conexao();
if(@mysql_query("INSERT INTO clientes_loja VALUES (NULL , '$nome_cli', '$telefone_cli', '$email_cli', '$endereco_cli', 
				'$bairro_cli', '$complemento_cli', '$cidade_cli', '$cep_cli', '$uf_cli')")){
				
	if(mysql_affected_rows() == 1){
		echo "<div class = h2> $nome_cli , O seu cadastro foi efetuado.<br><br>Confirme o seu pedido e selecione a forma de pagamento.</div><br><br>";
	}	

} else {
	if(mysql_errno() == 1062) {
		echo $erros[mysql_errno()];
		exit;
	} else {	
		echo "Erro nao foi possivel efetuar o cadastro";
		exit;
	}	
}	
}
	$carrinho = isset ($_SESSION['carrinho']) ? $_SESSION['carrinho'] : array();
	if (count ($carrinho) == 0)
	{
		echo "
		<tr>
		  <td colspan=\"5\" style=\"text-align:center\"><strong><em>
	 	   Não há produtos em seu carrinho de compas.</em></strong>
	 	</td>
		</tr>
		</table>
		";
	}
	else
	{
   		for ($a = 0; $a < count($carrinho); $a++)
		{
			$id = htmlentities ($carrinho[$a]['id']);
    		$nome_pro = htmlentities ($carrinho[$a]['nome_pro']);
    		$preco_pro = number_format ($carrinho[$a]['preco_pro'], 2, ",", "");
    		$desc_pro = htmlentities ($carrinho[$a]['descricao_pro']);
			$qtde_pro = $carrinho[$a]['qtde_pro'];
			$subtotal = number_format(($carrinho[$a]['preco_pro'] * $qtde_pro), 2, ',', '');

			echo "
    		<tr>
	     	 <td><b><input name=nome_pro size=50 value=$nome_pro></b></td><br>
	     	 <td><b>Valor Unitario: </b><input name=preco_pro size=10 value=R$$preco_pro></td><br>
	      	<td><b>Quantidade: </b><input name=qtde_pro size=10 value=$qtde_pro></td><br>
	      	<td><b>Valor Total: </b><input name=subtotal size=10 value=$subtotal></td><br>
	      	<td></td>
	    	</tr><br>
	    	";
    	}// fecha for
    
   		echo "
    	<tr>
      	<td><h2>Total do Pedido: R$".$_SESSION['total']."</h2></td>
     	 <td></td>
     	 <td></td>
    	</tr>
    	</table>
   	<br><br>";
	}// fecha else
	
//Aqui Salva os itens do pedido. a variavel a variavel $id_cli está logo acima em um input. (Aqui que não está salvando) o insert acima funciona perfeitamente
if(@mysql_query("INSERT INTO itens_ped VALUES (NULL , '$id_cli', '$nome_pro', '$preco_pro', '$qtde_pro', '$subtotal')")){
				
 if(mysql_affected_rows() == 1){
                echo "<div class = h2> $nome_cli , O seu cadastro foi efetuado.<br><br>Confirme o seu pedido e selecione a forma de pagamento.</div><br><br>";
                $id_cli = mysql_insert_id();
        }   
		} 
	
	else {
	if(mysql_errno() == 1062) {
		echo $erros[mysql_errno()];
		exit;
	} else {	
//quando o codigo é executado ele chega ate aqui, mostrando a mensagem abaixo
		echo "Não Salvou<br><br>";
	}	
	@mysql_close();
}	

echo"<p><div class = titulos_imp align = center>Selecionar Forma de Pagamento</div></p>";

exit;
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, não dá pra ficar falando a mesma coisa várias vezes...

 

Releia o POST #2 e o POST #7.

 

Faça o que está dizendo nestes 2 posts. Antes de executar a segunda query, imprima ela para ver o que tem nela. Em princípio, a $id_cli não está recebendo valor algum. Tente dar um echo nesta variável para ver se veio do formulário.

 

Carlos Eduardo

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.