Ir para conteúdo

POWERED BY:

Arquivado

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

AlexChande

Ajuda com erro no código php

Recommended Posts

ola esto com dificuldade em achar o erro nesse código ele esta dando este erro aqui

Strict Standards: Only variables should be passed by reference in/home/u347838814/public_html/editar_galeria.php on line 29

Warning: imagejpeg(galerias/): failed to open stream: Is a directory in/home/u347838814/public_html/crop.php on line 15

o código PHP é esse

<?php include_once "config.php";?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Cadastrar Galeria</title>
<link href="css/style.css" rel="stylesheet" type="text/css" media="screen" />
</head>


<body>
   <div id="box_form">
   <h1>Cadastrar nova Imagem</h1>
  <?php
  $id_galery = (int)$_GET['galeria_id'];
  if(isset ($_POST['acao'])  && $_POST['acao'] == 'enviar'):
 $titulo = strip_tags(filter_input(INPUT_POST, 'titulo'));
 $descricao = strip_tags(filter_input(INPUT_POST, 'descricao'));
 $imagem = $_FILES['imagem'];
 $permitido = array('jpg', 'jpeg', 'JPEG', 'JPG');


 if($titulo == ''){
 echo '<script>alert("Preencha o Titulo"); location.href="editar_galeria.php?galeria_id='.$id_galery.'"</script>';
    }elseif($descricao == ''){
 echo '<script>alert("Informe a descrição da Imagem"); location.href="editar_galeria.php?galeria_id='.$id_galery.'"</script>';
 }elseif($imagem['error'] == '4'){
 echo '<script>alert("Informe uma Imagem para Upload"); location.href="editar_galeria.php?galeria_id='.$id_galery.'"</script>';
 }else{
$ext = end(explode('.', $imagem['name']));
if(!in_array($ext, $permitido)){
echo '<script>alert("A Imagem tem que ser jpeg"); location.href="editar_galeria.php?galeria_id='.$id_galery.'"</script>';
}else{
include_once "crop.php";
$image_maior = md5 (uniqid(rand(), true)).$imagem['name'];
$image_menor = md5 (uniqid(rand(), true)).$imagem['name'];
if(crop('galerias', $imagem ['tmp_name'], '200', '200', $imagem_menor)){
if(move_uploaded_file($imagem['tmp_name'], 'galerias/' .$imagem_maior)){ 
$cadastrar_galeria = $pdo->prepare("INSERT INTO fotos (id_ga, titulo, descricao, miniatura, imagem) VALUES(?,?,?,?,?) ");
$dados = array($id_galery, $titulo, $descricao, $imagem_menor, $imagem_maior);
if($cadastrar_galeria->execute($dados)){
echo '<script>alert("Imagem Cdastrada"); location.href="editar_galeria.php?galeria_id='.$id_galery.'"</script>';
}
}
}


} 




 }
 endif;
  ?>
  
   <form action="" method="post" enctype="multipart/form-data">
    <label>
     <span>Titulo da Galeria</span>
     <input type="text" name="titulo" />
    </label>
    <label>
     <span>Descrição</span>
     <input type="text" name="descricao" />
    </label>
    <label>
     <span>Imagem</span>
     <input type="file" name="imagem" />
    </label>
    <input type="hidden" name="acao" value="enviar" />
    <input type="submit" value="Cadastrar Imagem" />
   </form>
   <div style="clear:both;"</div>
   </div>
</body></html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom... colei na minha IDE o seu code e pelo que vi a linha 29 é essa, que não possui nenhum erro:

echo '<script>alert("Informe uma Imagem para Upload"); location.href="editar_galeria.php?galeria_id='.$id_galery.'"</script>';

Dito isso, assumo que o erro acusado na linha 29 está acontecendo na linha 31 do código que você postou, pois é bem comum esse erro. Você pode solucionar isso apenas separando o end() do explode(), pois a função end() espera uma variável e você está passando um valor. Aqui tem mais a respeito: http://stackoverflow.com/questions/33127618/endexplode-strict-standards-only-variables-should-be-passed-by-reference-in

Isso não é nada grave e não é por causa disso que seu código não está funcionando, mas é bom corrigir.

Sobre o outro erro, ele está dentro do arquivo crop.php e não do que você postou... mas é muito simples de entender: a variável que você está passando pra dentro do imagejpeg não possui o nome do arquivo que você deseja manipular. Você está mandando somente a pasta "galerias/", enquanto deveria mandar algo como "galerias/foto.jpg". Talvez você esteja com problemas no seu upload, no tratamento dos erros ou simplesmente na manipulação da variável até o ponto em que ela é passada na função...

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mano o primeiro erro foi resolvido graças a sua ajuda. Mas esse segundo ta difícil de arrumar eu tentei colocar como você falou "galerias/fotos"mas não deu certo.

A ele não ta enviando para o banco de dados

este é o arquivo Crop.php

<?php
function crop($pasta, $imagem_original, $largura, $altura, $novo_nome){
list($current_width, $current_height) = getimagesize ($imagem_original);
$left = $current_width/3;
$top = $current_height/3;
$width = $current_width/3;
$height = $current_height/3;
$thumb = imagecreatetruecolor ($largura, $altura);
$image = imagecreatefromjpeg ($imagem_original);
imagecopyresampled ($thumb,$image, 0,0,$left,$top,$largura,$altura,$width, $height);
if(imagejpeg($thumb, "$pasta/".$novo_nome,100)){
return true;
}else{
return false;
}
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora só aparace este erro aqui

linha 15 do crop.php para min aqui e esta " if(imagejpeg($thumb, "$pasta/".$novo_nome,100)){ "

Warning: imagejpeg(galerias/): failed to open stream: Is a directory in/home/u347838814/public_html/crop.php on line 15

​eu achei que poderia ser porque não tinha a pasta fotos no servidor ai coloquei ela mas mesmo assim não funcionou

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema não está na pasta... O problema é que a variável $novo_nome está vazia.

O segundo argumento da função imagejpeg recebe um arquivo e não uma pasta, que indica o nome do arquivo a ser salvo.

Vou postar novamente o link da documentação: http://php.net/manual/pt_BR/function.imagejpeg.php

EDIT: outro detalhe é que isso é totalmente redundante:

if(imagejpeg($thumb, "$pasta/".$novo_nome,100)){
return true;
}else{
return false;
}

Prefira dessa forma:

if ( (string)$novo_nome === '' )
	throw new \BadFunctionCallException( 'Nome vazio.' );
	
return imagejpeg($thumb, "{$pasta}/{$novo_nome}", 100);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mano fiz como você mandou mudei o código agora esta dando este erro aqui

Fatal error: Uncaught exception 'BadFunctionCallException' with message 'Nome vazio.' in /home/u347838814/public_html/crop.php:16 Stack trace: #0 /home/u347838814/public_html/editar_galeria.php(37): crop('galerias', '/tmp/php7ixNTU', '200', '200', NULL) #1 {main} thrown in/home/u347838814/public_html/crop.php on line 16

já peso desculpa ai mas ta difícil aqui para min entender o que esta dando de errado, mas sei que com ajuda de vocês tudo vai dar certo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, eu disse que o problema estava no fato de a variável $novo_nome estar vazia, sugerindo que você buscasse o motivo disso...

Observe como você chama a função:

$image_menor = md5 (uniqid(rand(), true)).$imagem['name'];
if(crop('galerias', $imagem ['tmp_name'], '200', '200', $imagem_menor)){

Nota o erro de digitação no nome da variável?

$image_menor => $imagem_menor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa

mas ta dando este erro agora

pelo que entendi ele esta dizendo que a tabela 'fotos' não existe no sql mas ela esta la.

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S02]: Base table or view not found: 1146 Table 'u347838814_foto.fotos' doesn't exist' in /home/u347838814/public_html/editar_galeria.php:41 Stack trace: #0 /home/u347838814/public_html/editar_galeria.php(41): PDOStatement->execute(Array) #1 {main} thrown in/home/u347838814/public_html/editar_galeria.php on line 41

no codigo esta asim ("INSERT INTO fotos (id_ga, titulo, descricao, miniatura, imagem) VALUES(?,?,?,?,?) ");

fotos esta sem aspas quando coloco aspas da este erro

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''fotos' (id_ga, titulo, descricao, miniatura, imagem) VALUES('0','gabi','Gabriel' at line 1' in /home/u347838814/public_html/editar_galeria.php:41 Stack trace: #0 /home/u347838814/public_html/editar_galeria.php(41): PDOStatement->execute(Array) #1 {main} thrown in/home/u347838814/public_html/editar_galeria.php on line 41

Compartilhar este post


Link para o post
Compartilhar em outros sites

então olhei e esta la a tabela fotos e o nome esta certo

57f7b523b1cd9_Desktop10.07.2016-11.41.29

este é o config.php

<?php
try{
$pdo = new PDO('mysql:host=mysql.hostinger.com.br;dbname=u347838814_foto','u347838814_teste','senha');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

}catch(PDOExcepion $e){
echo $e->getMessage();
exit("Erro ao conectar");


}

?>

57f7b53b749c6_Desktop10.07.2016-11.41.53

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.