Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, pessoal!
Preciso de uma ajuda para inserir dados numa tabela... Se alguém puder...
Tenho um formulário com este campo:
<tr>
<td align="left">EQUIPAMENTO <a href="#" class="adicionarCampo"><img src="../../imagens/adiciona.jpg"></a></td>
<td align="left">
<div class="equipamentos">
<p class="campoequipamento">
<select name="ch_equip[]">
<option value=""></option>
<?php $sql = mysql_query("SELECT * FROM c_equipamento WHERE cli_id_equip = '$id_cli' ORDER BY equipamento_id");
while($monta = mysql_fetch_assoc($sql)){echo '<option value="'.$monta['equipamento_id'].'">'.$monta['equipamento_id'].' '.$monta['equipamento_tipo'].' '.$monta['equipamento_marca'].' '.$monta['equipamento_modelo'].' '.$monta['equipamento_descricao'].' '.$monta['equipamento_pmsp'].' </option>';} ?>
</select> <input name="ch_defeito_reclamado[]" type="text" size="60"> <a href="#" class="removerCampo">Remover</a> </td>
</p>
</div>
</tr>
Em resumo, preciso pegar os valores destes dois campos ( "ch_equip[]" e "ch_defeito_reclamado[]" ) e inserir numa tabela.
Trecho da tentativa de insert :
if ($_GET['funcao'] == "registrar"){
$id_cli = $_GET ['id'];
$ch_data_chamado = ($_POST['ch_data_chamado']);
$ch_hora_chamado = ($_POST['ch_hora_chamado']);
$ch_solicitante = mb_strtoupper($_POST['ch_solicitante']);
$ch_funcao = mb_strtoupper($_POST['ch_funcao']);
$cheq_equip_id = $_POST['ch_equip'];
$cheq_defeito_reclamado = ($_POST['ch_defeito_reclamado']);
$cheq_pp = ($_POST['ch_pp']);
$sql_registra = "INSERT INTO gescal_chamado (ch_cliente, ch_data_chamado, ch_hora_chamado, ch_solicitante, ch_funcao, ch_status)
VALUES ('$id_cli', str_to_date('$ch_data_chamado', '%d/%m/%Y'), '$ch_hora_chamado', '$ch_solicitante', '$ch_funcao', 'ABERTO')";
Mysql_query($sql_registra) or die ("<p align=\"center\"><font face=arial size=2 color=#ff0000>Não foi possível registrar o chamado!<br><br></font><br><a href=\"javascript:history.go(-1)\"><img src=\"../../imagens/voltar.jpg\" alt=\"Voltar\" border=\"0\" align=\"center\"></a>");
if($sql_registra){
$idch = mysql_insert_id();
foreach($ch_equip as $key => $equip){
if($equip!=""){
$cheq_equip_id=$ch_equip[$key];
$cheq_pp=$ch_pp[$key];
$cheq_defeito_reclamado=$ch_defeito_reclamado[$key];
$sql2=mysql_query("INSERT INTO gescal_chamado_equip (cheq_ch_id, cheq_equip_id, cheq_pp, cheq_defeito_reclamado)
VALUES ('$idch','$cheq_equip_id','$cheq_pp','$cheq_defeito_reclamado')");
if(!$sql2) $erroSql=true;
}
}
if($erroSql==false) echo "<script>alert('Orçamento cadastrado com Sucesso!'); window.open('orcamentos_pecas_vis.php?id=$orcamento','','scrollbars=yes,width=575,height=500'); location.href('orcamentos_pecas.php');</script>";
exit;
}
Na tabela 'gescal_chamado' insere tudo direitinho, mas na tabela 'gescal_chamado_equip' o Foreach não funciona e não entra nada do que está nele.
O erro aparece na linha do "foreach($ch_equip as $key => $equip){"
Agradeço a quem puder ajudar... por favor!
Erro:
Warning: Invalid argument supplied for foreach() in /home/regratecnologia/www/testegescal/manutencao/corretiva/sql.php on line 39
Essa váriável $ch_equip vem de onde cara? Ela não foi declarada em lugar nenhum...
Ela vem do formulário
foi declarada: $cheq_equip_id = $_POST['ch_equip'];
Distração sua. No seu código, a parte;
Mysql_query($sql_registra) or die ("<p align=\"center\"><font face=arial size=2..........
você chamou a função mysql_query começando com letra maiúscula.
O certo é mysql_query().
Presta atenção no nome das variáveis: uma tem um '_id' no final e a outra não...
Limpei o código para facilitar...
Tenho um formulário com estes campos:
<input name="equipamento[]" type="text">
<input name="defeito[]" type="text">
E preciso gravá-los em uma tabela:
$equipamento= ($_POST['equipamento']);
$defeito = ($_POST['defeito']);
foreach($dado as $key => $equipamento){
if($equipamento!=""){
$equipamento=$equipamento[$key];
$defeito=$defeito[$key];
$sql = mysql_query("INSERT INTO tabela (equipamento, defeito) VALUES ('$equipamento','$defeito')");
}
}
Estou errando no foreach, mas não entendo muito disso e não sei onde corrigir.
Primeiro entenda como foreach funciona :seta: http://php.net/manual/pt_BR/control-structures.foreach.php
Já li esse manual e vários posts a respeito....
Cara, você não tá entendendo. Nesse exemplo você novamente não declarou nenhuma variável '$dado', por isso que tá dando erro.
Vi isso, mas no caso do campo "equipamento", quem é a variável e quem é o valor?
Vou postar um exemplo auto-explicativo
<?php
$array = array(
'Nome' => 'Carlos Coelho',
'Sexo' => 'Masculino',
'UF' => 'RS'
);
foreach( $array as $key => $value ) echo $key, ': ', $value, '<br/>';
}
Primeiro você passa o vetor com os dados, depois atribui uma variável que receberá o valor da chave e uma variável que receberá o valor daquela posição.
:thumbsup:
Carlos, muito obrigada pelo exemplo; Iluminou um pouco...
Mas é assim... preciso passar os valores de 3 input para esse array e inserir em uma tabela no bacno.
Isso que não consigo fazer... Tentei assim:
<?php
$array = array(
'$variavel1' => 'input1',
'$variavel2' => 'input2',
'$variavel3' => 'input3'
);
foreach( $array as $key => $value )$sql=mysql_query("INSERT INTO loja_compra_itens (comp_itens_iditem, comp_itens_qtde, comp_itens_valor)
VALUES ('$value','$value','$value')");
}
E é certo o input ser assim? <input type="text" name="input1[]">>
$array = array(
'$variavel1' => 'input1',
'$variavel2' => 'input2',
'$variavel3' => 'input3'
);
renatagramos você precisa pegar o valor de 3 input e considerar como um array único. Portanto, na marcação o atributo name do input deve ser name="nomeDoMeuInput[]"
Dessa maneira ao "resgatar" o conteúdo com a super global $_POST os três valores estarão em um único array.
// Regras de negócio
...
$inputData = $_POST['nomeDoMeuInput'];
Procure adicionar nome relevante para as suas variáveis.
// É array, hum... mais é array do que? Entendeu?
$array = array();
Se for ter apenas 3 input, acho melhor cada um ter um nome e referenciar individualmente.
>
foreach( $array as $key => $value )
{
$sql=mysql_query("INSERT INTO loja_compra_itens (comp_itens_iditem, comp_itens_qtde, comp_itens_valor)
VALUES ('$value','$value','$value')");
}
Isso mostra que você não entendeu muito bem o conceito do foreach.
VALUES ('$value','$value','$value')");
Na linha acima os três campos terão o mesmo valor.
// Uma possível solução nada elegante.
$data = $_POST['nomeDoMeuInput'];
$partial = '';
foreach ( $data as $value ) {
$partial .= "'$value',";
}
$partial = substr( $value, 0, -1 );
$sql = "INSERT INTO loja_compra_itens (comp_itens_iditem, comp_itens_qtde, comp_itens_valor)
VALUES ( {$partial} )";
$result = mysql_query( $sql );Olá, pessoal!
Estive fora um tempo, mas voltei a trabalhar neste sistema... E continuo com o mesmo problema:
$valor = ($_POST["valor"]);
$contrato = ($_POST["contrato"]);
foreach ($contrato as $cont => $contrato)
{
$sql2 = mysql_query ("INSERT INTO gescal_fin_fatura_contrato (nota_contrato, nota_valor, nota_data)
VALUES ('$contrato', '$valor', '$hojebd')") or die ("<p align=\"center\"><font face=arial size=2 color=#ff0000>Não foi possível gerar notas!<br><br></font><br><a href=\"javascript:history.go(-1)\"><img src=\"../../imagens/voltar.jpg\" alt=\"Voltar\" border=\"0\" align=\"center\"></a>");
}
Neste código consigo inserir o número do contrato perfeitamente, mas preciso inserir também o respectivo valor, e isso não consigo. Os exemplos e dicas acima me ajudaram um pouco, mesmo assim não tem nenhum que mostre a solução para esta questão.
Agradeço muito qualquer ajuda.
[RESOLVIDO]
Que sufoco!! Mas resolvi!
Estes são os campos do formulário que eu precisava inserir na tabela:
<td valign="middle" height="25" align="center" nowrap>
<input type="hidden" name="valor[]" id="valor[]" value="<?php echo $contrato_valor ?>">
<input type="checkbox" name="contrato[]" id="contrato[]" value="<?php echo $contrato_id ?>" CHECKED>
</td>
E este é o código para inserir na tabela os números dos contratos com seus respectivos valores.
$valor =($_POST['valor']);
$contrato = ($_POST["contrato"]);
$contra = ($_POST["contrato"]);
foreach($contra as $key => $contrato)
{
if ($contrato!="")
{
$valor2=valor2banco($valor[$key]); // função para formatar o valor
$sql2 = mysql_query ("INSERT INTO gescal_fin_fatura_contrato (nota_contrato, nota_valor, nota_data) VALUES ('$contrato', '$valor2', '$hojebd')")
or die ("<p align=\"center\"><font face=arial size=2 color=#ff0000>Não foi possível gerar notas!<br><br></font><br><a href=\"javascript:history.go(-1)\"><img src=\"../../imagens/voltar.jpg\" alt=\"Voltar\" border=\"0\" align=\"center\"></a>");
}
}
Qual erro aparece?