insert php mysql

1. insert php mysql

edson floriano de sousa júnior
esomeumesmo

(usa Fedora)

Enviado em 01/04/2008 - 11:00h

ola galera,

to cum um problema ao fazer um insert. eh o seguinte, um sistema d cadastro d materiais, pego umas variaveis ($_POST) enviadas de um formulario anterior e faço um insert da seguinte forma:
<...inicio da pagina>
<?
//RECEBE AS VARIAVEIS
$nome = $SESSION[nome];
$mat_cod = $_POST[mat_cod];
$mat_nome = $_POST[mat_nome];
$un_num = $_POST[un_num];
$div_cod = $_POST[div_cod];
$mat_tipo = $_POST[mat_tipo];

if ((isset($mat_cod)) && (mat_cod != ''))
{

//MONTANDO O INSERT
$sql_inserir="INSERT INTO `banco`.`material` ( `mat_cod`,
`mat_nome`,
`mat_tipo`,
`un_num`,
`mat_dep_resp`)
VALUES (
`$mat_cod`,
`$mat_nome`,
`$mat_tiipo`,
`$un_num`,
`$div_cod`)" ;

//EFETUANDO O INSERT
$insert = mysql_query($sql_inserir);
if ( ! $insert )
{
//SE NAO INSERIR MOSTRA MSG COM ERRO SQL
echo ("<font color='red'>Erro ao inserir dados! </font><br> ".mysql_error()."<br>");
}
//SE INSERIR MOSTRA MSG POSITIVA
else
{
echo ("<font color='green'>Dados inseridos com sucesso!</font>");
}
}
?>
<...restante da pagina>

Pois eh, faço o insert mas a pagina executa o insert duas vezes e os dados sao inseridos duplicados. Sempre que faço alguma alteração na parte em q comentei //EFETUANDO O INSERT ele faz uma fez certo mas depois volta a duplicar os dados!!!

se alguem puder por favor ajudar!

grato!


  


2. cara

João Marcos Menezes
stremer

(usa Arch Linux)

Enviado em 01/04/2008 - 11:21h

posta a página inteira que o erro deve estar em outro lugar. Acredito que você esteja executando realmente 2 vezes "sem querer".


3. Re: insert php mysql

edson floriano de sousa júnior
esomeumesmo

(usa Fedora)

Enviado em 01/04/2008 - 11:29h

O restante eh soh html cara... o q eu acho mais estranho eh q qdo eu mecho na parte q insere mesmo ele funciona coreto 1 vez e dpois volta a inserir duplicado...


4. então

João Marcos Menezes
stremer

(usa Arch Linux)

Enviado em 01/04/2008 - 11:38h

por isso que to achando que tem algum lugar mais executando a query, pois se continua inserindo uma vez você mexendo na parte que insere, deve ter outro lugar escondido. Não seria em nenhum arquivo de include não?


5. Vc está executando duas vezes!

Gabriel Duarte Guimarães Costa
gabrield

(usa Debian)

Enviado em 01/04/2008 - 11:51h

Na parte do código:
...
$insert = mysql_query($sql_inserir);

if ( ! $insert )
{
...

no "$insert" vc faz sua query e logo abaixo, no "if" voce a excuta novamente com uma condição de teste, e assim, a query é executada novamente, por isso dá erro...

Subistitua essa parte do código e coloque assim:


//EFETUANDO O INSERT
if (!mysql_query($sql_inserir))
{
//SE NAO INSERIR MOSTRA MSG COM ERRO SQL
echo ("<font color='red'>Erro ao inserir dados! </font><br> ".mysql_error()."<br>");
}
//SE INSERIR MOSTRA MSG POSITIVA
else
{
echo ("<font color='green'>Dados inseridos com sucesso!</font>");
}


6. é...

João Marcos Menezes
stremer

(usa Arch Linux)

Enviado em 01/04/2008 - 12:14h

acho que é isso mesmo.
O insert pode voltar um objeto caso seja associado a uma variavel (já que não tem tipagem em PHP oque é nojento mas). Você poderia chamar a mysql_query direto e utilizar mysql_affected_rows para verificação. Acho que ficaria melhor.
mais ou menos assim:

<?
$sql = "INSERT into tabela(campo) values('$valor');";
mysql_query($sql);
$registros = mysql_affected_rows();
if ($registros > 0) {
echo "ok";
} else {
echo "erro";
}
?>


7. Ae

João Marcos Menezes
stremer

(usa Arch Linux)

Enviado em 01/04/2008 - 12:15h

Neste caso pode não ter muita diferença por ser um insert mas se fosse um update mysql_affected_rows seria melhor pois poderia ver a quantidade de registros atualizados ou no caso de um delete a quantidade de excluidos.


8. jah tinha tentado

edson floriano de sousa júnior
esomeumesmo

(usa Fedora)

Enviado em 01/04/2008 - 14:31h

...
if (!mysql_query($sql_inserir))
{...

amigos, valew msm as sugestoes mas isso eu jah tinha tentado, alias era isso q eu usava antes e jah acontecia a duplicidade... setar uma variavel pra o comando foi uma das tentativas desesperadas pra ver se o aspecto mudava, mas nda d dar certo!!! eh mto estranho cara, fiz o seguinte agora:
1º coloquei um "die();" logo dpois do "$insert = mysql_query($sql_inserir);" e vi q realmente nessa linha ele jah insere os dados no banco;
2º corrigi de acordo com a sugestao do colega mas funcionou apenas na 1º vez, quando fui inserir dados d novo deu duplicado novamente, do jeito q falei no primeiro post, funciona 1 vez e para!

vou continuar apanhando aqui, se alguem tiver mais uma ideia será mto bem vinda assim como todas as outras jah citadas.

obrigado!


9. por favor!

edson floriano de sousa júnior
esomeumesmo

(usa Fedora)

Enviado em 01/04/2008 - 15:35h

alguem me ajude!!!


10. Re: insert php mysql

Carlos Moreira
cmoreiraviva

(usa Debian)

Enviado em 01/04/2008 - 17:34h

O problema está aqui:

1---->$insert = mysql_query($sql_inserir);
2---->if ( ! $insert )...

deveria ser:

if ( $insert = mysql_query($sql_inserir) )...

Abs,

Carlos
www.universogeek.com



11. PROBLEMAS C/ O $_POST

Paulo
henbran

(usa Debian)

Enviado em 13/06/2008 - 14:44h

usei a seguinte definição, sendo que os campos do rmf são exatamente os do $_POST, porém somente o primeiro campo, no caso o cep, é que recebe valores do form. Porque isso ocorre?

$cep=trim( $_POST['cep'] );
$ext_cep=trim( $_POST['ext_cep'] );
$log_cep=trim( $_POST['log_cep'] );
$bai_cep=trim( $_POST['bai_cep'] );
$cid_cep=trim( $_POST['cid_cep'] );
$uf_cep=trim( $_POST['uf'] );







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts