Ir para conteúdo

POWERED BY:

Arquivado

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

RenanMonteiro

[Resolvido] inserir nome de arquivo em um campo no banco de dados

Recommended Posts

estou usando esse script abaixo de php para inserir as informações de um formulário no banco de dados. Eu quero que o nome do arquivo enviado por upload, vá para o campo 'arquivo' como texto, e que 'data' seja o dia do envio, esse campo sera preenchido automaticamente, claro (isso acho que isso deve ser em algo lá no painel do myadmin...) - alguém sabe como fazê-lo?

 

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "upload")) {
 $insertSQL = sprintf("INSERT INTO producao (data, codigo, arquivo, comentario, status) VALUES (%s, %s, %s, %s, %s)",
                      GetSQLValueString($_POST['data'], "text"),
                      GetSQLValueString($_POST['codigo'], "text"),
                      GetSQLValueString($_POST['arquivo'], "text"),
                      GetSQLValueString($_POST['comentario'], "text"),
				   GetSQLValueString($_POST['status'], "text"));

Compartilhar este post


Link para o post
Compartilhar em outros sites

$_FILES['arquivo']['name'] //nome do arquivo enviado pelo form

NOW() //função SQL que te devolve 'o instante de agora'.

 

 

dica: largue o Dreamweaver, o código que ele gera é extremamente porco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

fico tanto tempo corrigindo os codigos do DW que seria mais rapido mesmo criar o meu do zero!

concordo, e aliás, fica a dica. Largue o DW, e crie na mão.

 

troque:

  $insertSQL = sprintf("INSERT INTO producao (data, codigo, arquivo, comentario, status) VALUES (%s, %s, %s, %s, %s)",
                      GetSQLValueString($_POST['data'], "text"),
                      GetSQLValueString($_POST['codigo'], "text"),
                      GetSQLValueString($_POST['arquivo'], "text"),
                      GetSQLValueString($_POST['comentario'], "text"),
                                          GetSQLValueString($_POST['status'], "text"));

por:

$insertSQL = "INSERT INTO producao (data, codigo, arquivo, comentario, status) 
  VALUES ('NOW()', '".GetSQLValueString($_POST['codigo'], "text")."', '".$_FILES['arquivo']['name']."', 
'".GetSQLValueString($_POST['comentario'], "text")."', '".GetSQLValueString($_POST['status'], "text")."')";

 

e lógico, substitua a chave ['arquivo'] pela correspondente ao atributo name do teu input file.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é isso mesmo que eu queria Andrey! Valeu!

 

adorei o codigo do William, bem mais simples e limpo que o do Dw, mas agora apareceu esse errinho aqui:

 

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 'Teste'', 'NULL'' at line 3

 

Teste = O Texto que botei do campo 'comentario' do formulario.

 

Nenhum dos campos do MySql estão em 'null' - é bem estranho né?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente Assim Amigo .!

$insertSQL = "INSERT INTO producao (data, codigo, arquivo, comentario, status) 
  VALUES ('NOW()', '".GetSQLValueString($_POST['codigo'], "text")."', '".$_FILES['arquivo']['name']."', 
'".GetSQLValueString($_POST['comentario'], "text")."', '".GetSQLValueString($_POST['status']."', "text")."'";

 

Abraços ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

seguinte:

echo $insertSQL;

logo depois da criação da string.

 

diga oque voltar, ai ficará mais fácil de analisarmos o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

INSERT INTO producao (data, codigo, arquivo, comentario, status) VALUES ('NOW()', 'NULL', 'asterisco.png', ''ast'', 'NULL'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 'ast'', 'NULL'' at line 3

 

asterisco.png = arquivo enviado por upload.

ast = comentario escrito no formulário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum... o problema está no $_POST['comentario']

 

você está colocando aspas ?

coloca assim:

$insertSQL = "INSERT INTO producao (data, codigo, arquivo, comentario, status) 
  VALUES ('NOW()', '".GetSQLValueString($_POST['codigo'], "text")."', '".$_FILES['arquivo']['name']."', 
'".addslashes( $_POST['comentario'] )."', '".GetSQLValueString($_POST['status'], "text")."')";

echo $insertSQL,'<pre>';
var_dump( $_POST ); 

diga oq retornar, e veja se deu certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

INSERT INTO producao (data, codigo, arquivo, comentario, status) VALUES ('NOW()', 'NULL', 'acompanhamento.png', 'acompanhamento.', 'NULL'

array(3) {

["comentario"]=>

string(15) "acompanhamento."

["MM_insert"]=>

string(6) "upload"

["enviar"]=>

string(7) "Enviar!"

}

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 '' at line 3

 

:angry:

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloca assim:

 

$insertSQL = "INSERT INTO producao (data, codigo, arquivo, comentario, status) 
  VALUES ('NOW()', '".GetSQLValueString($_POST['codigo'], "text")."', '".$_FILES['arquivo']['name']."', 
'".addslashes( $_POST['comentario'] )."', '".GetSQLValueString($_POST['status'], "text")."')";

 

falha minha, removi um fecha parenteses indevidamente.

Mas dá para perceber que tem algum erro no teu HTML, pois o post status, e código não estão vindo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

:lol: 'Conseguimos'! haha - depois de muito esforço e quebra cabeça, o código está funcionando muito bem, só não estava aparecendo a data quando eu cadastrava, ai eu coloquei 'NOW()', sem as aspas simples - NOW(). Agora a pagina do usuário envia arquivos pro FTP, e tem todo o registro lá, de hora, nome do arquivo, quem enviou e o status. Obrigado William e Andrey!

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.