Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
A paz de Nosso Maravilhoso e Perfeito Jesus Cristo amigos!
Gostaria de Saber de Vossas Senhorias, onde posso estar errando no código. Crei uma página para edição de anúncio de um site de imobiliaria.
Esta ficando ótima! Consigo editar além dos dados do anunciante (com os campos a mais que coloquei), listo os anuncios de cada cliente e adaptei uma página para editar o anuncio no painel do admin.
Pois bem, consigo alterar, excluir inclusive as fotos extras dos anuncios. Deu a "bixiga" e até agora nao consigo encontrar o erro de nao conseguir editar a foto principal. Revi os codigos das fotos extras embaixo e nada. Pequei o codigo da página de cadastro pra colocala lá pra editar a foto usando UPDATE. Fiz vários testes até em texto e não grava nada na coloca "imoveisThumb" da tabela imoveis do DB.
Não da nenhum erro de sintaxe ou aparece nada de errado, só não mexe nada nos dados lá, e nem vai pra pasta a imagem. Apenas quando vou testar, seleciono o arquivo, clico no botão Alterar Imagem, e ele abre novamente a janela pra selecionar o arquivo no computador. ESTRANHO.
Segue o código, lembrando que as variáveis de imovelId e outras ta tudo normal, testei já, esta pegando perfeitamente. So que me enrolo com imagens! Fiquei com tanta dor de cabeça de tanto pensar, e refazer os códigos que axo que estão com erros bestas! mas espero que os caros amigos me ajudem a revolver! Grato
O modelo do sistema funciona da seguinte forma:
Existe uma tabela onde é gravado os dados dos anúncios dos imóveis (up_imoveis), e outra tabela que grava as imagens extras do anuncio (up_midias).
Cada anuncio de imóvel, além dos dados de praxe, guarda tb uma imagem principal que ñ é guardada na tabela up_midias, mas é gravada na coluna imovelThumb na tabela up_imoveis.
O que to tentando fazer, é justamente conseguir editar essa imagem do anuncio, e não estou conseguindo. Segue o código.
Fiquem na Paz de DEUS!
<!-- PARTE DO CÓDIGO DE EDÇÃO DE FOTO DO PERFIL DO ANÚNCIO-->
<?php if(isset($_POST['executar']) && $_POST['executar'] == 'Alterar imagem'){
$imovelId = $_POST['imovelId'];
$clienteId = $_POST['clienteId'];
$alteraThumb = $_FILE['thumb'];
$imovelPasta = '../midias/';
$imgPermitido = array('image/jpg','image/jpeg','image/pjpeg');
$contarImg = count($imovelThumb['name']);
require("sistema/upload.php");
for($i=0;$i<$contarImg;$i++){
$imagemNome = $alteraThumb['name'][$i];
$imagemCaminho = $alteraThumb['tmp_name'][$i];
$imagemTipo = $alteraThumb['type'][$i];
if(!empty($imagemNome) && in_array($imagemTipo, $imgPermitido)){
$nome = 'cliente='.$clienteId.'-'.md5(uniqid(rand(), true)).'.jpg';
Redimensionar($imagemCaminho, $nome, 500, $imovelPasta);
$sql_alteraImagem = 'UPDATE up_imoveis SET imovelThumb = :imovelThumb WHERE imovelId = :imovelId';
try {
$query_alteraImagem->$conecta->prepare($sql_alteraImagem);
$query_alteraImagem->bindValue(':imovelThumb',$alteraThumb,PDO::PARAM_STR);
$query_alteraImagem->bindValue(':imovelId',$ImovelId,PDO::PARAM_STR);
$query_alteraImagem->bindValue(':clienteId', $clienteId,PDO::PARAM_STR);
$query_alteraImagem->execute();
echo '<h2>DEU CERTO</h2>';
}catch(PDOexception $error_alteraImagem){
echo 'Erro ao Alterar Imagem '.$error_alteraImagem->getMessage();
}
}
}
}?>
<form name="alterar_imagem" action="" enctype="multipart/form-data" method="post" >
<label>
<span>Alterar Imagem de exibição do Imóvel: (<strong style="color:#900;">OBRIGATÓRIO, deve ser .jpg</strong>)</span>
<input type="file" name="thumb" size="60"/>
<input type="hidden" name="imovelId" value="<?php echo $ImovelId ?>" />
<input type="hidden" name="clienteId" value="<?php echo $editCliente ?>" />
<input type="submit" name="executar" id="executar" value="Alterar Imagem" />
</label>
</form>
<!-- FINAL DA PARTE DO CÓDIGO DE EDÇÃO DE FOTO DO PERFIL DO ANÚNCIO-->
Primeiramente obrigado por tentar ajudar.
Peguei esse código que já funciona na tela de cadastro dos anuncios, e tentei adaptalo pra ele fazer a mesma coisa mas só que subistituindo a imagem anterior.
A coluna que quero inserir, ficaria o link da imagem, ou seja, o nome que é gerado depois do upload. Também não esta realizando o uploado para a pasta lá.
TABELA: up_imoveis COLUNA imovelThumb = cliente='idCliente'-nomerandômico'.jpg'
Espero ter conseguido explicar pra você!?
Grato Fiquem com DEUS Pai Maravilhoso!
Primeiramente corrija diversos erros que está no seu script, a variável de upload é $_FILES e não $_FILE.
Segundamente, altere esta linha:
$query_alteraImagem->bindValue(':imovelThumb',$alteraThumb,PDO::PARAM_STR);
Por esta:
$query_alteraImagem->bindValue(':imovelThumb',$nome,PDO::PARAM_STR);
Poste resultados.
Abraços...
Erick-Master - CTM Team Softwares
>
Primeiramente corrija diversos erros que está no seu script, a variável de upload é $_FILES e não $_FILE.
Segundamente, altere esta linha:
$query_alteraImagem->bindValue(':imovelThumb',$alteraThumb,PDO::PARAM_STR);
Por esta:
$query_alteraImagem->bindValue(':imovelThumb',$nome,PDO::PARAM_STR);
Poste resultados.
Abraços...
Erick-Master - CTM Team Softwares
Brigadão cara pela ajuda! Creio que os erros eram apenas que: Como a variável de arquivo é $_FILES e não estava correta, por esse motivo não fazia o upload.
E outra, não alterava nada na coluna que queria alterar, por que as informações que eram pra serem gravadas na coluna, não estava incorreta.
Quando chegar do trabalho vou testar pra ver. Usando a lógica deve ser isso, pois sou iniciante ainda.
Depois vou ver se adapto o código, para que ao mesmo tempo que atualiza a foto, antes apague a que ja esta na pasta, para que não fique gerando lixo desnecessário.
Muito Grato mesmo amigo. Quando testar aviso o resultado aqui!
Fiquem com DEUS Pai Maravilhoso!
A paz de Nosso Maravilhoso Senhor Jesus Cristo Nosso Salvador queridos...
Ainda continua o mesmo erro pessoal!
ñ aparece nenhum erro. Não altera a coluna, nem faz o upload da imagem.
Fiquem com DEUS Pai Maravilhoso!
A paz de Nosso Senhor e Glorioso Jesus Cristo Salvador.
Senhores, consultando mais uma vez vi que e concertei uns erros e constatei o seguinte erro:
ESTAVA ASSIM - MODO ERRADO
if(isset($_POST['executar']) && $_POST['executar'] == 'Alterar imagem'){
MODO CORRETO
if(isset($_POST['executar']) && $_POST['executar'] == 'Alterar Imagem'){
Depois dessas alterações, agora consegue realizar o upload da imagem corretamente, mas agora
aparece um erro na página que seria esse:
Erro ao Alterar Imagem SQLSTATE[HY093]: Invalid parameter number: number of bound variables
does not match number of tokens
MEU CÓDIGO ESTA NESSE MOMENTO DESSA FORMA:
<!-- PARTE DO CÓDIGO DE EDÇÃO DE FOTO DO PERFIL DO ANÚNCIO-->
<?php
if(isset($_POST['executar']) && $_POST['executar'] == 'Alterar Imagem'){
$imovelId = $_POST['imovelId'];
$clienteId = $_POST['clienteId'];
$imovelThumb = $_FILES['thumb'];
$imovelPasta = '../midias/';
$imgPermitido = array('image/jpg','image/jpeg','image/pjpeg');
$contarImg = count($imovelThumb['name']);
require("sistema/upload.php");
for($i=0;$i<$contarImg;$i++){
$imagemNome = $imovelThumb['name'][$i];
$imagemCaminho = $imovelThumb['tmp_name'][$i];
$imagemTipo = $imovelThumb['type'][$i];
if(!empty($imagemNome) && in_array($imagemTipo, $imgPermitido)){
$nome = 'cliente='.$clienteId.'-'.md5(uniqid(rand(), true)).'.jpg';
Redimensionar($imagemCaminho, $nome, 500, $imovelPasta);
$sql_alteraImagem = 'UPDATE up_imoveis SET imovelThumb = :imovelThumb WHERE
imovelId = :imovelId';
try {
$query_alteraImagem = $conecta->prepare($sql_alteraImagem);
$query_alteraImagem->bindValue(':imovelThumb',$nome,PDO::PARAM_STR);
$query_alteraImagem->bindValue(':imovelId',$imovelId,PDO::PARAM_STR);
$query_alteraImagem->bindValue(':clienteId',
$clienteId,PDO::PARAM_STR);
$query_alteraImagem->execute();
echo '<h2>DEU CERTO</h2>';
}catch(PDOexception $error_alteraImagem){
echo 'Erro ao Alterar Imagem
'.$error_alteraImagem->getMessage();
}
}
}
}?>
<form name="alterar_imagem" action="" enctype="multipart/form-data" method="post" >
<span>Alterar Imagem de exibição do Imóvel: (<strong
style="color:#900;">OBRIGATÓRIO, deve ser .jpg</strong>)</span>
<input type="file" name="thumb[]" size="80"/>
<input type="hidden" name="imovelId" value="<?php echo $ImovelId ?>" />
<input type="hidden" name="clienteId" value="<?php echo $editCliente ?>" />
<input type="submit" name="executar" id="executar" value="Alterar Imagem" />
</form>
<!-- FINAL DA PARTE DO CÓDIGO DE EDÇÃO DE FOTO DO PERFIL DO ANÚNCIO-->
Espero conseguir resolver logo, ta atrasando muito o cronograma do projeto.
Grato pessoal. Fiquem na Paz de DEUS Pai Maravilhoso e
Perfeito.
Up...
Alguem please!
Fiquem com DEUS Pai todo Poderoso e Amoroso!
Verifique se alguma coluna do SQL é int e está enviando string no update...
A paz de Nosso Senhor Jesus Cristo Único Salvador!
Pelo o que entendi de sua pergunta, la vai as repostas.
No Banco de dados, e todas as tabelas, apenas a do id é que é do tipo INT, o restante são todas VARCHAR COM 255 DE LENGTH.
E não está gravando o nome da imagem na coluna que eu quero (imovelThumb), agora manda direitinho a imagem para a pasta, redimenciona tudo normal. Mas nao substitui no db.
Grato
Fiquem com DEUS Pai Misericordioso e Fiel!
Lembrando mais uma coisa, acabei de pensar isso:
Nessa Página eu edito várias informações, e fui encrementando de acordo com minhas necessidades. Então, ela exibe dentro dos formulários os dados, da qual posso conferir e mudar se for o caso. Faz SELECT e UPDATE. A variável "imovelThum" esta sendo muito usada, tanto na seleção que foi feita abaixo do código, como na exibição dessa imagem na mesma página.
E depois esse UPDATE que estou tentando fazer. Se os senhores prestarem atenção ela se repete muito, e axo que devo alterala justamente na parte dos bindValues e consequentemente na $sql_alteraImagem para a normal.
Creio que o uso grande da mesma variável é que esta causando o erro, estarei testando pra ver.
SENHORES - RESOLVIDO DEPOIS DE MUITO NEURÔNIO QUEIMADO!
O erro consistia em uma linha a mais na execução ou seja, retirei e deu certo até agora nos testes! Vou batalhar para antes de gravar os novos dados, exclua a imagem antiga la do banco de dados.
Glória Seja dada ao SENHOR dos senhores, ao DEUS de todos dos deuses! Para ele Seja toda Honra e Toda Glória!
RETIREI ESSSA
$query_alteraImagem->bindValue(':clienteId',$clienteId,PDO::PARAM_STR);
try {
$query_alteraImagem = $conecta->prepare($sql_alteraImagem);
$query_alteraImagem->bindValue(':imovelThumb',$nome,PDO::PARAM_STR);
$query_alteraImagem->bindValue(':imovelId',$imovelId,PDO::PARAM_STR);
$query_alteraImagem->execute();
echo '<h2>DEU CERTO</h2>';
O que fica armazenado na coluna da imagem?