FranJun 0 Denunciar post Postado Setembro 8, 2011 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']."¬c=e"); Obrigado pela Atenção Compartilhar este post Link para o post Compartilhar em outros sites
Fabio Pratta 14 Denunciar post Postado Setembro 8, 2011 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
FranJun 0 Denunciar post Postado Setembro 8, 2011 ainda está dando o mesmo erro... Compartilhar este post Link para o post Compartilhar em outros sites
H. Romeu 0 Denunciar post Postado Setembro 8, 2011 Voce quer atualizar o valor para nulo ou vazio ? Compartilhar este post Link para o post Compartilhar em outros sites
FranJun 0 Denunciar post Postado Setembro 9, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Setembro 9, 2011 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¬c=e' , $_GET[ 'id' ] ) ); } Compartilhar este post Link para o post Compartilhar em outros sites
FranJun 0 Denunciar post Postado Setembro 9, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Setembro 9, 2011 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
FranJun 0 Denunciar post Postado Setembro 9, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Setembro 9, 2011 Você diz, se não for enviada nenhuma foto, manter a imagem atual que está no banco ? Compartilhar este post Link para o post Compartilhar em outros sites
FranJun 0 Denunciar post Postado Setembro 9, 2011 Sim, isso mesmo Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Setembro 9, 2011 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
FranJun 0 Denunciar post Postado Setembro 9, 2011 Não deu certo... Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Setembro 9, 2011 Não deu certo... Qual o erro ? sempre que algo der errado, poste qualquer retorno da execução do script. Compartilhar este post Link para o post Compartilhar em outros sites
FranJun 0 Denunciar post Postado Setembro 9, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Setembro 9, 2011 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
FranJun 0 Denunciar post Postado Setembro 9, 2011 Deu esse erro: ; Eu devo está fazendo algo de errado para não funcionar Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Setembro 9, 2011 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
William Bruno 1501 Denunciar post Postado Setembro 9, 2011 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 Knupp Vital 136 Denunciar post Postado Setembro 9, 2011 @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