Ir para conteúdo

POWERED BY:

Arquivado

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

FranJun

[Resolvido] Update Erro

Recommended Posts

Olá boa tarde pessoal, eu fiz um Script para fazer o UPDATE em meu cadastro e nele eu quero está fazendo UPDATE também da imagen que tenho cadastrado, mais não estou conseguindo, os outros dados que está no registro faz o UPDATE normalmente mais a imagens substituindo por NULL, o que será que estou fazendo de errado nesse Script?

 

if(isset($_POST['bt_alterar'])){

       $arquivo = $_FILES['arquivo']['name'];
       $temporaria = $_FILES['arquivo']['tmp_name'];
       $diretorio_final = "../uploads/marquee/".$arquivo;

       move_uploaded_file($temporaria,$diretorio_final);

       $quando = date("Y-m-d");
       $sql="UPDATE noticias SET
                  SubMenu_idSubMenu = '$_POST[subMenu_idSubMenu]',
                  Funcionario_idFuncionario = NULL,
                  titulo_noticia = '$_POST[titulo_noticia]',
                  dt_noticia = '$quando',
                  res_noticia = '$_POST[res_noticia]',
                  res_img = '$arquivo',
                  destaque = '$_POST[destaque]',
                  materia = '$_POST[materia]',
                  status = '$_POST[status]'
                  WHERE
                  idNoticias = '$_GET[id]';
                  ";
        mysql_query($sql);      

       header("Location: cadastro_noticia.php?id=".$_GET['id']."&notc=e");

 

Obrigado pela Atenção

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando utilizo update com imagens e arquivos eu executo uma query primeiro pra pegar o nome existente no banco

 

caso o arquivo/imagem nao seja enviada executo o update com nome que ja existia no banco

 

 


$imagem = $_FILE['arquivo'];

if(!$imagem){
//se nao enviar nenhuma foto faco o update com nome que peguei na query
$sql="UPDATE noticias SET
                  SubMenu_idSubMenu = '$_POST[subMenu_idSubMenu]',
                  Funcionario_idFuncionario = NULL,
                  titulo_noticia = '$_POST[titulo_noticia]',
                  dt_noticia = '$quando',
                  res_noticia = '$_POST[res_noticia]',
                  res_img = '$arquivo',
                  destaque = '$_POST[destaque]',
                  materia = '$_POST[materia]',
                  status = '$_POST[status]'
                  WHERE
                  idNoticias = '$_GET[id]';
                  ";
        mysql_query($sql);    
}else{
//senao faco com o novo nome
$sql="UPDATE noticias SET
                  SubMenu_idSubMenu = '$_POST[subMenu_idSubMenu]',
                  Funcionario_idFuncionario = NULL,
                  titulo_noticia = '$_POST[titulo_noticia]',
                  dt_noticia = '$quando',
                  res_noticia = '$_POST[res_noticia]',
                  res_img = '$arquivo',
                  destaque = '$_POST[destaque]',
                  materia = '$_POST[materia]',
                  status = '$_POST[status]'
                  WHERE
                  idNoticias = '$_GET[id]';
                  ";
        mysql_query($sql);    
}

 

 

Acho que deu pra enetende neh..

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu quero seja inserido outro outro nome da imagens quando eu fazer o UPDATE, quando eu faço o UPDATE o nome da imagens que está no campo acaba apagando ficando NULL mais os outros dados é atualizado normalmento... Será que tem a possibilidades mesmo de está fazendo o UPDATE da imagem junto com os dados???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz assim, e poste o retorno:

<?php	
    if( isset( $_POST[ 'bt_alterar' ] ) ) {
       $arquivo = $_FILES[ 'arquivo' ][ 'name' ];
       $temporaria = $_FILES[ 'arquivo' ][ 'tmp_name' ];
       $diretorio_final = '../uploads/marquee/' . $arquivo;
       move_uploaded_file( $temporaria , $diretorio_final );

echo '<pre>';
print_r( $_FILES ); // Apenas para debug.
echo '</pre>';

       $quando = date( 'Y-m-d' );

$sql = sprintf( "UPDATE `noticias` SET `SubMenu_idSubMenu` = '%s', `Funcionario_idFuncionario` = NULL, `titulo_noticia` = '%s',
`dt_noticia` = '%s', `res_noticia` = '%s', `res_img` = '%s', `destaque` = '%s', `materia` = '%s', `status` = '%s',
        WHERE `idNoticias` = '%s' " , $_POST[ 'SubMenu_idSubMenu' ] , $_POST[ 'titulo_noticia' ] , $quando , $_POST[ 'res_noticia' ] ,
 $arquivo , $_POST[ 'destaque' ] , $_POST[ 'materia' ] , $_POST[ 'status' ] , $_GET[ 'id' ] );

 echo $sql ; // Apenas para debug
        mysql_query( $sql ) or die( mysql_error() ) ;

 header( sprintf( 'Location: cadastro_noticia.php?id=%s&notc=e' , $_GET[ 'id' ] ) );
    }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Retornou isso:

 

Array
(
   [arquivo] => Array
       (
           [name] => dsfg.jpg
           [type] => image/jpeg
           [tmp_name] => C:\xampp\tmp\php9C43.tmp
           [error] => 0
           [size] => 159137
       )

)

UPDATE `noticias` SET `SubMenu_idSubMenu` = '19', `Funcionario_idFuncionario` = NULL, `titulo_noticia` = 'Fazendo os Último teste para finalizar II', `dt_noticia` = '2011-09-09', `res_noticia` = 'Blá blá blá blá blá blá blá blá blá blá blá blá blá blá blá blá', `res_img` = 'dsfg.jpg', `destaque` = 'sim', `materia` = '

Fazendo testes..
', `status` = 'c', WHERE `idNoticias` = '19' 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 'WHERE `idNoticias` = '19'' at line 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque o seu $sql atual por este, execute novamente, e poste o retorno !

$sql = sprintf( "UPDATE `noticias` SET `SubMenu_idSubMenu` = '%s', `Funcionario_idFuncionario` = NULL, `titulo_noticia` = '%s',
`dt_noticia` = '%s', `res_noticia` = '%s', `res_img` = '%s', `destaque` = '%s', `materia` = '%s', `status` = '%s'
WHERE `idNoticias` = '%s' " , $_POST[ 'SubMenu_idSubMenu' ] , $_POST[ 'titulo_noticia' ] , $quando , $_POST[ 'res_noticia' ] ,
$arquivo , $_POST[ 'destaque' ] , $_POST[ 'materia' ] , $_POST[ 'status' ] , $_GET[ 'id' ] );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não retornou nenhum erro mais deu certo, mais eu tenho uma questão, quando eu faço o UPDATE sem colocar outra imagem ele apaga no nome da imagem que está cadastrada, tem alguma script que evita isso, ou não tem como?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo .. então faz assim:

$sql = sprintf( "UPDATE `noticias` SET `SubMenu_idSubMenu` = '%s', `Funcionario_idFuncionario` = NULL, `titulo_noticia` = '%s',
`dt_noticia` = '%s', `res_noticia` = '%s', %s `destaque` = '%s', `materia` = '%s', `status` = '%s'
WHERE `idNoticias` = '%s' " , $_POST[ 'SubMenu_idSubMenu' ] , $_POST[ 'titulo_noticia' ] , $quando , $_POST[ 'res_noticia' ] ,
!isset( $_FILES[ 'arquivo' ] ) ? null : "`res_img` = '{$arquivo}', " , $_POST[ 'destaque' ] , $_POST[ 'materia' ] , $_POST[ 'status' ] , $_GET[ 'id' ] );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me desculpe, não expliquei o erro, usei o script que você passo mais ele não manteve o nome da imagem que estava cadastrado, acabou apagando...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho .. faz assim então:

$sql = sprintf( "UPDATE `noticias` SET `SubMenu_idSubMenu` = '%s', `Funcionario_idFuncionario` = NULL, `titulo_noticia` = '%s',
`dt_noticia` = '%s', `res_noticia` = '%s', %s `destaque` = '%s', `materia` = '%s', `status` = '%s'
WHERE `idNoticias` = '%s' " , $_POST[ 'SubMenu_idSubMenu' ] , $_POST[ 'titulo_noticia' ] , $quando , $_POST[ 'res_noticia' ] ,
( count( $_FILES[ 'arquivo' ] ) ? "`res_img` = '"{$arquivo}"', " : null ) , $_POST[ 'destaque' ] , $_POST[ 'materia' ] , $_POST[ 'status' ] , $_GET[ 'id' ] );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opz, erro de aspas .. não tinha percebido às aspas dupla alí, normalmente costumo ver esse tipo de erro pelo highlighter do fórum, mas .. não ficou colorido, então provavelmente achei que não estava alterando, troque o SQL novamente !!! para esse aqui rsrs.

$sql = sprintf( "UPDATE `noticias` SET `SubMenu_idSubMenu` = '%s', `Funcionario_idFuncionario` = NULL, `titulo_noticia` = '%s',
`dt_noticia` = '%s', `res_noticia` = '%s', %s `destaque` = '%s', `materia` = '%s', `status` = '%s'
WHERE `idNoticias` = '%s' " , $_POST[ 'SubMenu_idSubMenu' ] , $_POST[ 'titulo_noticia' ] , $quando , $_POST[ 'res_noticia' ] ,
count( $_FILES[ 'arquivo' ] ) ? "`res_img` = '{$arquivo}', " : null , $_POST[ 'destaque' ] , $_POST[ 'materia' ] , $_POST[ 'status' ] , $_GET[ 'id' ] );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoalmente acho desncessário e confuso usar sprintf() nesses casos.

 

Essa função, faz muito mais do que apenas concatenar. Então, pq não usar ela para esse muito mais, e deixar o apenas concatenar, para coisas que apenas concatenam?

 

 

http://php.net/sprintf

 

Leitura para reflexão:

http://pt.w3support.net/index.php?db=so&id=1386593

 

 

@Andrey, você só complicou o usuário qndo colocou o sprintf() nesse tópico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Andrey, você só complicou o usuário qndo colocou o sprintf() nesse tópico.

Eu acho melhor usar o 'sprintf' para atrelar variável em uma string, não é porque 'ficou grande' que ficou complicado !

Ele pode concatenar normalmente com o '.' o sql dele.

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.