Ir para conteúdo

POWERED BY:

Arquivado

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

inforicky

array gravar no mysql

Recommended Posts

Estou montando um sistema de cotacao, no qual ele lista os produtos a serem cotados, e em cada item eu coloquei um txt para que o fornecedor cote a respectiva marca e preço, bom eis ai meu problema...nao consigo pegar os valores digitados nos txt, esses txt esta dentro de um while, o txt tem um unico nome, dai somente pega o valor do ultimo txt digitado....

o link deste arquivo está:

www.menil.com.br/menil

 

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara te ensina tudo fica dificil... mas olha este topicos listados abaixo que é um excelente começo...

 

Como criar as tabelas do MySQL

http://forum.imasters.com.br/index.php...view=getnewpost

 

Como Adicionar, Excluir, Alterar e Visualizar os dados

http://forum.wmonline.com.br/index.php?showtopic=122170

 

BOm dia, Ricardo

a questao nao é me ensinar, essa parte de inserir, gravar....eu sei... esses dados listados estao em uma tabela mysql, o problema é o seguinte:

tem os 2 campos "input text" que será para cada fornecedor digitar os valores, o problema é que eu nao estou conseguindo listar esses valores dos text para inserir no banco de dados. pois estes "input text" sao criados dentro de um while com um unico nome, nao sei como fazer para listar os valores....

 

echo"<tr>";

// aqui ele esta trazendo a consulta do banco

echo("<td>$resultado[iD_ITE_COTAC]</td>");

echo("<td>$resultado[MARCA_ITE_COTAC]</td>");

echo("<td>$resultado[CODITE_ITE_COTAC]</td>");

echo("<td>$resultado[REF_DESCRI_ITE_COTAC]</td>");

echo("<td>$resultado[QTD_ITE_COTAC]</td>");

?>

// aqui ele inclui os "txt" mas com um unico nome....entao acho que tem q ser em um array para pegar os valores digitados em varios campos com um unico nome, posso estar enganado...

 

<td><input type="text" size="2" name="preco[<?=$resultado[PRECO_REAL_ITE_COTAC]?>]" value="<?php echo $resultado[PRECO_REAL_ITE_COTAC];?>"></td>

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra naum sei se eh isso

 

mas se tiver um separador tipo um ; ou \ ai você dah um explode

 

qualquer coisa cria um campo a mais no sql e uma variavel de controle

tipo qdo for 1 ai ele grava em uma e quando for 2 ele grava no outro campo

 

dah um toq qlq coisa mas pelo q entendi eh isso.

 

flow

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tah criando os textareas dentro de um while

entaum coloca o nome deles com uma variavel de controle

 

<? 
while (blablabla){
$i = 1; ?>

<textarea name=<?=$i?>></textarea>

<? $i++; } ?>

acho q isso resolve

 

flow

Compartilhar este post


Link para o post
Compartilhar em outros sites

ENTAO MAS NAO CONSIGO PEGAR OS VALORES DOS "TEXT" NAO SEI NEM QUAL E O PROXIMO PASSO.... SE PUDER ME AJUDAR...OBRIGADO

oh veja esse exemplo:

 

<html>
<head>
      <title>teste</title>
</head>
<body>
<form name="logar" method="post" action="<? $_SERVER['PHP_SELF']?>">
<input type="text" name="banda[]" value="">
<input type="text" name="banda[]" value="">	
<input type="submit" name="btnsair" class="btn" value="sair" >	
</form>
</body>
</html>
<?php
$bandas = $_POST['banda'];
foreach($bandas as $valores){
echo $valores.'<br>';
}?>

 

veja como eu coloquei os nomes (name) dos input, tente entender e posta novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara eu uso uma função (import_request_variables) nativa do PHP para recuperar os campos...

// Resgata os _GET e _POST	$prefix_GET  = 'get_';	if(isset($_GET))	import_request_variables("g", $prefix_GET);		$prefix_POST = 'post_';	if(isset($_POST))	import_request_variables("P", $prefix_POST);
depois com base no que o David postou

 

<input type="text" name="banda[]" value="">
você faz um while ou for e inseri no banco.

 

Trabalhando com Array, artigo daqui mesmo do Imasters

Compartilhar este post


Link para o post
Compartilhar em outros sites

PRIMEIRAMENTE AGRADECENDO AO PESSOAL QUE ESTÁ ME AJUDANDO.....

MTO OBRIGADO MESMO;....

 

nossa to indo passo a passo...rsrs....em relacao aos <input text esta gerando e listando em sua respectiva posicao....agora como eu recupero esses valores para gravar no banco em suas respectivas posicoes??

Compartilhar este post


Link para o post
Compartilhar em outros sites

ESSE É O CODIGO DA MINHA PAGINA....

ME AJUDEM POR FAVOR....

 

Warning: Invalid argument supplied for foreach() in C:\wamp\www\menil\cotacaoteste.php on line 120

 

 

 

 

 

 

<?php

include"conexaoselecao.php";

/*

session_start();

if(isset($_SESSION['adm']))

{

include"menu.php";

/* sit é uma variavel q esta definica na pagina excluir e alterar,

simplesmente serve para q apareca as mensagens d alteracao e exclusao

$sit=$_GET[sit];

switch($sit)

{

case"1":

$msg="<center>Produto excluido com sucesso</center>";

break;

case"2":

$msg="<center>Produto alterado com sucesso</center>";

break;

}

*/

?>

 

<html>

 

<form name="logar" method="post" action="<? $_SERVER['PHP_SELF']?>">

 

<head>

</head>

<body>

<h1><center>Cotação</center></h1>

<p>

 

 

<?php

 

$sql = "SELECT * FROM cotacaodistribuidor " ;

$consulta = mysql_query($sql);

if(mysql_numrows($consulta)==0)

{

echo"<center> Não há produtos cadastrados</center>";

}

else

{

 

?>

<table border=1 style=boder-collapse:collapse>

<tr bgcolor="#000000">

<th><font color="#FFFFFF">

</th>

<th><font color="#FFFFFF">

MARCA

</font>

</th>

<th><font color="#FFFFFF">

CÓDIGO

</font>

</th>

<th><font color="#FFFFFF">

REFERÊNCIA / DESCRIÇÃO

</font>

</th>

<th><font color="#FFFFFF">

QTD

</font>

</th>

<th><font color="#FFFFFF">

PREÇO

</font>

</th>

<th><font color="#FFFFFF">

MARCA

</font>

</th>

 

</tr>

 

 

<?php

echo("Lista de Produtos");

$i=1; // incrementador do if para cor das linhas da tabela

while($resultado=mysql_fetch_assoc($consulta))

 

{

if($i%2==0) // if q faz as cores das linas da tabela

($cor="#99FFCC");

else

($cor="#FFFFCC");

 

 

if(empty($resultado)) /* empty (string) - retorna verdadeiro se a variavel esta vazia */

continue;

 

/*echo"<tr bgcolor=$cor>"; // definindo a cor da borda de acordo sendo impar ou par

foreach($resultado as $p)

{

echo"<td>$p</td>";

}

*/

echo"</tr>";

 

$i++; // incrementa para mudar d cor

 

 

echo"<tr>";

 

echo("<td>$resultado[iD_ITE_COTAC]</td>");

echo("<td>$resultado[MARCA_ITE_COTAC]</td>");

echo("<td>$resultado[CODITE_ITE_COTAC]</td>");

echo("<td>$resultado[REF_DESCRI_ITE_COTAC]</td>");

echo("<td>$resultado[QTD_ITE_COTAC]</td>");

?>

<td><input type="text" name="banda[]" value=""></td>

<td><input type="text" name="banda[]" value=""></td>

<?php

echo"</tr>";

}

 

$bandas = $_POST['banda'];

foreach($bandas as $valores)

{

 

 

AQUI EXISTE UM PROBLEMA:

NO CASO EU JA COLOQUEI PARA SALVAR NA TABELA NA COLUNA "REAL", MAS NA VERDADE EU PRECISO FAZER COM QUE QNDO O FORNECEDOR LOGAR ELE SALVE EM SUA RESPECTIVA COLUNA....

NO MEU CASO, ELE ESTA SALVANDO UM NOVO PRODUTO...

 

 

 

$sql_insere = "INSERT INTO cotacaodistribuidor (PRECO_REAL_ITE_COTAC, MARCA_OFERECIDA_REAL_COTAC) VALUES('$valores','$valores') ";

$insere=mysql_query($sql_insere); // executa a instrucao

if(!$insere)

{

echo mysql_error();

echo"<br>Volte mais tarde<br>";

mysql_close();

die;

}

 

echo $valores.'<br>';

 

}

?>

 

</table>

<input type="submit" value="Enviar cotação">

 

</body>

</form>

</html>

 

<?php

}

 

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

te enviei o código por email, mas vo posta aqui para o pessoal da opinião...

 

layini.php

<?php

/*
 * Listar produtos
 * ---------------------------------------------------------------------------------------- *
 *
 * Autor ....... :	Ricardo Floriano
 * Version ..... :	2007.12.31
 * Copyright ... :	Floriano Comunicação Integrada ( http://www.floriano.ppg.br/ )
 */


// Conexão com o banco de dados e tabela

	require_once('inc.conectdb.php');


// Resgata os _GET e _POST

	$prefix_GET  = 'GET_';
	if(isset($_GET))
	import_request_variables("g", $prefix_GET);
	
	$prefix_POST = 'POST_';
	if(isset($_POST))
	import_request_variables("P", $prefix_POST);

?>

<html>
<head>

<title>Menil - Floriano Comunicação</title>

</head>
<body>
<div style="width:770px; margin: 0px auto;">

layfim.php

</div>

</body>
</html>

<?php mysql_close($conect_db); ?>

inc.conectdb.php

<?php

// Conexão com o Banco de Dados

$dbhost	= "localhost";
$dbname	= "bdmenil";
$dbuser	= "root";
$dbpwd	= "root";

$conect_db = 	mysql_connect($dbhost, $dbuser, $dbpwd)
		   		or die("Não foi possível conectar ao servidor");

				mysql_select_db($dbname, $conect_db)
		   		or die("Não foi possível selecionar a tabela do banco de dados");

?>

pedidos.php

<?php

/*
 * Listar produtos
 * ---------------------------------------------------------------------------------------- *
 *
 * Autor ....... :	Ricardo Floriano
 * Version ..... :	2007.12.31
 * Copyright ... :	Floriano Comunicação Integrada ( http://www.floriano.ppg.br/ )
 */

require_once('inc.layini.php');

$PRD = array();

echo'
<p>Como so temos um cliente vo salva no banco 1 como id do cliente</p>

<form name="form1" method="post" action="pedidos.incluir.php" target="_self">

<table width="100%" border="0" cellspacing="2" cellpadding="2">
	<tr style="background:#000;color:#FFF;">
		<th align="center"><strong>ID</strong></th>
		<th align="center"><strong>PRODUTO</strong></th>
		<th align="center"><strong>QTD</strong></th>
	</tr>
	';

$select = "SELECT * FROM produtos ORDER BY ID_PRODUTO";
$rst_select = mysql_query($select)
or die ("Não foi possível realizar a consulta ao banco de dados");

		// Checa se a imagem existe no banco e nomeia conforme 
		if(mysql_num_rows($rst_select))
		{
			while ($item=mysql_fetch_array($rst_select)) {
			
			$cor = ($coralternada++ %2 ? "#99FFCC" : "#FFFFCC");

echo'
	<tr style="background:'.$cor.';">
		<td><input name="PRD[]" id="quantidade" value="'.$item["ID_PRODUTO"].'" type="text" size="3" readonly="true"></td>
		<td>'.$item["REF_DESCRI_ITE_COTAC"].'</td>
		<td align="center"><input name="QTD[]" id="quantidade" value="" type="text" size="3" maxlength="3"></td>
	</tr>
	';

			} // While

		} else {

			echo 'Nenhuma produto cadastrado.';

		}


//$serializado = urlencode(serialize($PRD));

echo'
	</table>

	<div align="center">
		<input type="hidden" name="CLIENTE" value="1">'./*Como so temos um cliente*/'
'.//		<input type="hidden" name="PRODUTO" value="'.$serializado.'">'./*Envia o array dos Produtos (ID)*/
		'
		<br/><input type="submit" name="Submit" value="Efetuar pedido">
	</div>

</form>
	';

require_once('inc.layfim.php');

?>

pedidos.incluir.php

<?php

/*
 * Listar produtos
 * ---------------------------------------------------------------------------------------- *
 *
 * Autor ....... :	Ricardo Floriano
 * Version ..... :	2007.12.31
 * Copyright ... :	Floriano Comunicação Integrada ( http://www.floriano.ppg.br/ )
 */

require_once('inc.layini.php');


// DATA DO PEDIDO

	$DATA = date("Y-m-d H:i:s");


// Junta os Arrays

	$QTD_ITENS = array_sum($POST_QTD);
	$ITENS = array_combine($POST_PRD, $POST_QTD);


// Cria um pedido e pega o ID_PEDIDO

	if($QTD_ITENS) {

	$sql = "INSERT INTO pedidos (ID_CLIENTE, PEDIDO_DATA) VALUES ('$POST_CLIENTE', '$DATA')";
	$sql = mysql_query($sql) or die ('<p>Erro no cadastro do pedido.</p>');

	$sql_id = "SELECT ID_PEDIDO FROM pedidos WHERE ID_CLIENTE=$POST_CLIENTE ORDER BY PEDIDO_DATA desc";
	$sql_id = mysql_query($sql_id) or die ("Não foi possível localiza número do pedido.");
	$sql_id = mysql_fetch_row($sql_id);
	$PEDIDO = $sql_id[0];


// Dados cliente

	$cliente = "SELECT * FROM clientes WHERE ID_CLIENTE=$POST_CLIENTE";
	$cliente = mysql_query($cliente) or die ("Não foi possível localiza o cliente.");
	$cliente = mysql_fetch_row($cliente);
	$NOME_CLIENTE = $cliente[1];


// Cria lista

echo '
<h1 align="center">Cotação</h1>
	<p>Número <strong>'.$PEDIDO.'</strong></p>
	<p>Cliente <strong>'.$NOME_CLIENTE.'</strong><BR/> <BR/></p>

<table width="100%" border="0" cellspacing="2" cellpadding="2">
	<tr style="background:#000;color:#FFF;">
		<th align="center"><strong>CÓDIGO</strong></th>
		<th align="center"><strong>PRODUTO</strong></th>
		<th align="center"><strong>QTD</strong></th>
	</tr>
	';

foreach ($ITENS as $PRD => $QTD) {

		if($QTD) { // Só os que forem >= que 1

			// Inseri produto no banco
				$sql = "INSERT INTO pedido_itens (ID_PEDIDO, ID_PRODUTO, PRODUTO_QTD) 
						VALUES ('$PEDIDO', '$PRD', '$QTD')";
				$sql = mysql_query($sql)
				or die ('<p>Erro no cadastro do produto.</p>');
			
			// Lista no banco o produto
				$produto = "SELECT REF_DESCRI_ITE_COTAC FROM produtos WHERE ID_PRODUTO=$PRD";
				$produto = mysql_query($produto)
				or die ("Não foi possível localiza número do pedido.");
				$produto = mysql_fetch_row($produto);
			
			// Imprimi Pedido
			$cor = ($coralternada++ %2 ? "#99FFCC" : "#FFFFCC");

			echo'
				<tr style="background:'.$cor.';">
					<td>'.$PRD.'</td>
					<td>'.$produto[0].'</td>
					<td>'.$QTD.'</td>
				</tr>
				';
		
		}

}

echo'</table>';


// Nenhum produto selecionado

	} else {
	
		echo 'Nenhum produto selecionado.';
	
	}


require_once('inc.layfim.php');

?>

 

Agora é estuda... pra mim tb foi um desafio pq não tinha trabalhado com Array ainda... rss

 

Faltou o banco...

 

bcmenil.sql

DROP TABLE IF EXISTS clientes;
CREATE TABLE clientes (
	ID_CLIENTE smallint(5) unsigned NOT NULL auto_increment,
	NOME_CLIENTE varchar(45) NOT NULL default '',
	PRIMARY KEY	(ID_CLIENTE)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2;


INSERT INTO clientes VALUES('1', 'Floriano Comunicação');

DROP TABLE IF EXISTS pedido_itens;
CREATE TABLE pedido_itens (
	ID_ITENS smallint(5) unsigned NOT NULL auto_increment,
	ID_PEDIDO smallint(5) unsigned NOT NULL default '0',
	ID_PRODUTO smallint(5) unsigned NOT NULL default '0',
	PRODUTO_QTD smallint(5) unsigned NOT NULL default '0',
	PRIMARY KEY	(ID_ITENS)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

DROP TABLE IF EXISTS pedidos;
CREATE TABLE pedidos (
	ID_PEDIDO smallint(5) unsigned NOT NULL auto_increment,
	ID_CLIENTE smallint(5) unsigned NOT NULL default '0',
	PEDIDO_DATA datetime NOT NULL default '0000-00-00 00:00:00',
	PRIMARY KEY	(ID_PEDIDO)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

DROP TABLE IF EXISTS produtos;
CREATE TABLE produtos (
	ID_PRODUTO smallint(5) unsigned NOT NULL default '0',
	MARCA_ITE_COTAC varchar(255) default NULL,
	CODITE_ITE_COTAC varchar(255) default NULL,
	REF_DESCRI_ITE_COTAC varchar(255) default NULL,
	MARCA_OFERECIDA_REAL_COTAC varchar(255) default NULL,
	PRECO_ROLES_ITE_COTAC double default NULL,
	MARCA_OFERECIDA_ROLES_COTAC varchar(255) default NULL,
	PRECO_DPK_ITE_COTAC double default NULL,
	MARCA_OFERECIDA_DPK_COTAC varchar(255) default NULL,
	PRIMARY KEY	(ID_PRODUTO)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO produtos VALUES('1', 'ATE', '21120', '5208 VALVULA EQUALIZADORA OPALA CARAVAN 81/93', '', '', '', '', '');
INSERT INTO produtos VALUES('2', 'ATE', '14735', '5262 / 5897 PINCA FREIO DIANTEIRO KOMBI 82/ ESQ', '', '', '', '', '');

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.