Jump to content


Photo

Como Funciona O Values Do Insert?


  • Faça o login para participar
14 replies to this topic

#1 Célio-Ctba

Célio-Ctba

    12 Horas

  • Usuários
  • 293 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 28/11/2005, 16:11

Fala galera!!!

Tenho uma tabela com 15 campos, estou fazendo um INSERT da seguinte forma
while(list($key, $val) = each($_POST)) {
  $cadastrar = mysql_query("INSERT INTO `$tabela` (nome, empresa, email, motomoney, just_motomoney, treina_exclus, just_treina_exclus, folhe_prod, just_folhe_prod, comunic_exclus, just_comunic_exclus, supor_fabr, just_supor_fabr, logo_moto, just_logo_moto, cert_premium, just_cert_premium, declar, just_declar, divulga)
VALUES('".$val."')");
if (!$cadastrar) {
die('esta query esta com erro: ' . mysql_error());

Mas não está cadastrando e me dá a seguinte mensagem:

Column count doesn't match value count at row 1


Pelo que entendi o erro está nesta variável do VALUES
Como funciona pra ele pegar todos os valores do form e inserir?
- Jesus -

#2 MarcoviZ

MarcoviZ

    ubuntu for human being

  • Usuários
  • 1137 posts
  • Sexo:Não informado

Posted 28/11/2005, 16:29

cara vc quer por esse valor em todos os campos? se sim é assim:

(campo1,campo2) VALUES ('$variavel','$variavel')
vc vai ter q por todas as vezes... e para que cadastrar o mesmo valor em todos os cmapos?


[]´s :P
[]'s

#3 Célio-Ctba

Célio-Ctba

    12 Horas

  • Usuários
  • 293 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 28/11/2005, 16:38

É que não consegui me expressar direito, na verdade agora me perdi de vez.
Como funciona pra ele pegar todos os valores do form e inserir? Não teria como montar um while pra isso? Ou vou ter colocar o nome de todas as váriaveis de onde estao vindo os dados?
- Jesus -

#4 MarcoviZ

MarcoviZ

    ubuntu for human being

  • Usuários
  • 1137 posts
  • Sexo:Não informado

Posted 28/11/2005, 19:17

ex:
vc tem um form com os campos: campo1, campo2, campo3

apos mandar o form para a action. vc resgata:

$campo1 = $_POST['campo1'];
$campo2 = $_POST['campo2'];
$campo3 = $_POST['campo3'];

e intao insere no db

(campo1,campo2,campo3) VALUES ('$campo1','$campo2','$campo3')

assim.


[]´s :P
[]'s

#5 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 28/11/2005, 19:23

use a função $_POST['NOME_DO_CAMPO'];

OBS: USE A BUSCA !!!

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#6 Célio-Ctba

Célio-Ctba

    12 Horas

  • Usuários
  • 293 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 29/11/2005, 07:48

O q estou tentando dizer é se tem como resgatar os valores do formulário de uma forma mais rápida sem ter que criar um variável para cada campo do form.

Não sei se tem como, o que me fez pensar que sim, é q usando a função each, quando mostro na tela ele traz todos os dados passados no form

while(list($key, $val) = each($_POST)) {
echo ".$val."<br>"; //assim mostra somente os valores dos campos do form
echo .$key."=".$val"<br>"; //assim mostra o nome do campo e o valor vindos do form
Imaginei que houvesse uma forma de fazer o INSERT na tabela usando um while para não precisar escrever todos os nomes das variáveis no VALUES


- Jesus -

#7 MarcoviZ

MarcoviZ

    ubuntu for human being

  • Usuários
  • 1137 posts
  • Sexo:Não informado

Posted 29/11/2005, 09:55

print_r ($_POST);

[]´s :P
[]'s

#8 Célio-Ctba

Célio-Ctba

    12 Horas

  • Usuários
  • 293 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 29/11/2005, 10:15

Não pode ser print_r pois ele vai ser inserido no banco
- Jesus -

#9 MarcoviZ

MarcoviZ

    ubuntu for human being

  • Usuários
  • 1137 posts
  • Sexo:Não informado

Posted 29/11/2005, 10:56

cara são oq? 1zilhão de cmapos para num dar para escrever o código?


[]´s :P
[]'s

#10 Célio-Ctba

Célio-Ctba

    12 Horas

  • Usuários
  • 293 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 29/11/2005, 11:05

É bem isso, são 122 campos

vai me chamar de louco ou preguiçoso, mas não é isso, na verdade tem uma longa estória.
- Jesus -

#11 hisamu

hisamu

    Normal

  • Usuários
  • 117 posts
  • Sexo:Não informado

Posted 29/11/2005, 11:07

$i = 0;
foreach ($_POST as $key=>$val) {
$i++;
if ($i != count($_POST)) {
$val = $val.",";
}
$valor .= $val;
}

$cadastrar = mysql_query("INSERT INTO '$tabela' (nome, empresa, email, motomoney, just_motomoney, treina_exclus, just_treina_exclus, folhe_prod, just_folhe_prod, comunic_exclus, just_comunic_exclus, supor_fabr, just_supor_fabr, logo_moto, just_logo_moto, cert_premium, just_cert_premium, declar, just_declar, divulga) VALUES ('$valor')");
if (!$cadastrar) {
die('esta query esta com erro: ' . mysql_error());

testa ae pq to no trampo e n da =/

se tiver errado me corrijam ^^

Edição feita por: hisamu, 29/11/2005, 11:12.


#12 Célio-Ctba

Célio-Ctba

    12 Horas

  • Usuários
  • 293 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 29/11/2005, 14:08

Assim está dando o mesmo erro que dava quando usava o
while(list($key, $val) = each($_POST)) {


o erro é: esta query esta com erro: Column count doesn't match value count at row 1
- Jesus -

#13 walkovyr

walkovyr

    Novato no fórum

  • Usuários
  • 7 posts
  • Sexo:Não informado

Posted 30/11/2005, 08:45

Este erro significa que a quantidade de campos definidos é diferente da quantidade de campos que tem em values, da um echo nesta query e veja o que esta sendo feito de errado.
www.estrategiaf1.com

#14 Célio-Ctba

Célio-Ctba

    12 Horas

  • Usuários
  • 293 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 30/11/2005, 09:40

Ok, agora está tudo certo nesta parte.
O erro agora é: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''nome,empresa,email,motomoney,just_motomoney,treina_exclus,just

É algum problema na sintaxe do Mysql? O que ele quer dizer trazendo alguns campos do banco?

Vejam o cód:
$fields = $fields_val = array();
   foreach($_POST as $key => $value) {
      $fields[] = $key;
      $fields_val[] = $value;
}
$sql = mysql_query("INSERT INTO `$tabela` ('". join(',', $fields) ."') VALUES ('". join(',', $fields_val) ."')");
  if (!$sql) {
  die('esta query esta com erro: ' . mysql_error());
 }  

- Jesus -

#15 Célio-Ctba

Célio-Ctba

    12 Horas

  • Usuários
  • 293 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 30/11/2005, 12:33

Encontrei o erro:

Estava assim:
$sql = mysql_query("INSERT INTO `$tabela` ('". join(',', $fields) ."') VALUES ('". join(',', $fields_val) ."')");


O problema era que no VALUES tinha que ter como separador além da vírgula, aspas simples:
$sql = mysql_query ("INSERT INTO `$tabela` (". join(',', $fields) .") VALUES ('". join("','", $fields_val) ."')");


Mto obrigado a todos.
- Jesus -




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq