Ir para conteúdo

POWERED BY:

Arquivado

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

gustavoalencar

[Resolvido] Cadastro e exibição com foto - php

Recommended Posts

Estou com um cadastro de alunos. Onde tem opção de inserir foto, sendo que só faz isso depois que ele faz seu cadastro normal, no caso ele cadastrado, tem a opção de incluir a foto. Quando vou incluir a foto da um erro mais mesmo assim cadastra. Tem também abaixo dos dados deles a exibição de todos os cadastrados, onde queria incluir a foto deles tb na exibição.

 

Vou postar aqui primeiro a parte do cadastro, onde inclui a foto e dá erro.

 

INICIO

<?php
require("configuracao_alunos.php");
session_start();
require("verifica.php");
$idexaluno = $_GET[idexaluno];
?>

 

FORM DO ENVIO DE FOTO

<form action="insere_foto-exaluno.php" method="post" enctype="multipart/form-data" name="formulario" id="formulario">
	<table width="526" height="94" border="0" cellpadding="0" cellspacing="0">
               <tr>
                 <td width="90" height="24" align="right">Arquivo:</td>
                 <td width="18" align="right"> </td>
                 <td colspan="2"><input name="foto"  type="file" class="textfield" size="50"/>
                 <input type="hidden" id="idexaluno" name="idexaluno" value="<?php echo $idexaluno; ?>" /></td>
               </tr>

               <tr>
                 <td height="24" align="right"> </td>
                 <td align="center"><label></label></td>
                 <td width="161"><label>
                   <input name="cadastrar" type="submit" class="textfield" id="cadastrar" value="Cadastrar" />
                 </label></td>
                 <td width="257"><input name="Reset" type="reset" class="textfield" value="Limpar" /></td>
               </tr>
               <tr>
                 <td height="13" colspan="4" align="right"> </td>
               </tr>
             </table>
          </form>

PHP DO ENVIO DE FOTO

<?php
$sql2 = mysql_query("SELECT substring(foto,16) as nome FROM exalunofoto WHERE idexaluno='$idexaluno' ORDER BY idfotoexaluno DESC");
echo "<img src='fotos-exalunos/".$listafotos['nome']."' id='cropbox' />";
echo "<div style='width:100px;height:100px;overflow:hidden;'>";
echo "<img src='fotos-exalunos/".$listafotos['nome']."' id='preview' />";
echo "</div>";
//}
?>

 

O ARQUIVO CHAMA OUTRO ARQUIVO DE ENVIO

insere_foto-exaluno.php

 

<?php
header("Content-type: text/html; charset=ISO-8859-1", true);
require("configuracao_alunos.php");
session_start();
require("verifica.php");


//se existir o arquivo
if(isset($_FILES["foto"])){
$foto = $_FILES["foto"];
$idexaluno = $_POST["idexaluno"];

$pasta_dir = "fotos-exalunos/";//diretorio dos arquivos
//se não existir a pasta ele cria uma
if(!file_exists($pasta_dir)){
mkdir($pasta_dir);
}

$arquivo_nome = $pasta_dir . $foto["name"];

// Faz o upload da imagem
move_uploaded_file($foto["tmp_name"], $arquivo_nome);

//aqui salva no banco o path da foto

$cadcaminho = "INSERT INTO exalunofoto (foto, idexaluno) VALUES ('$arquivo_nome', '$idexaluno')";
$result = mysql_query($cadcaminho);


   if(!$result){
       header("Location: http://www.google.com.br");
   } else {
       header("Location: cadastra_foto-exaluno.php");
}
}



?>

 

 

COMO FALEI ELE CADASTRA MAIS APRESENTA O ERRO ABAIXO:

 

Warning: move_uploaded_file(fotos-exalunos/dna.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/cscj-pi/www/cscj/exalunos/insere_foto-exaluno.php on line 22

 

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpWdeO4W' to 'fotos-exalunos/dna.jpg' in /home/cscj-pi/www/cscj/exalunos/insere_foto-exaluno.php on line 22

 

Warning: Cannot modify header information - headers already sent by (output started at /home/cscj-pi/www/cscj/exalunos/insere_foto-exaluno.php:22) in /home/cscj-pi/www/cscj/exalunos/insere_foto-exaluno.php on line 33

Compartilhar este post


Link para o post
Compartilhar em outros sites

O servidor é Linux ?

vai no seu programa de FTP, clica com o botão direito na pasta: fotos-exalunos/, e dê permissão de escrita (777) [depois ajuste para alguma menor]

 

 

O servidor é Windows ?

vá até o painel de controle da hospedagem, e dê permissão de escrita para este diretório. (chmod)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apareceu agiora esse erros:

 

Warning: require(configuracao.php) [function.require]: failed to open stream: No such file or directory in /home/cscj-pi/www/cscj/exalunos/cadastra_foto-exaluno.php on line 2

 

Warning: require(configuracao.php) [function.require]: failed to open stream: No such file or directory in /home/cscj-pi/www/cscj/exalunos/cadastra_foto-exaluno.php on line 2

 

Fatal error: require() [function.require]: Failed opening required 'configuracao.php' (include_path='.:/usr/local/lib/php') in /home/cscj-pi/www/cscj/exalunos/cadastra_foto-exaluno.php on line 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

não achou o arquivo. Tão simples qnto isso.

 

verifique o caminho, e o nome do arquivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, fiz as alterações.

 

Apresentou:

 

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/cscj-pi/www/cscj/exalunos/cadastra_foto-exaluno.php on line 119(em vermelho)

 

<?php

$sql2 = mysql_query("SELECT substring(foto,16) as nome FROM exalunofoto WHERE idexaluno='$idexaluno' ORDER BY idfotoexaluno DESC");

while($listafotos=mysql_fetch_array($sql2)){

echo "<img src='fotos-exalunos/".$listafotos['nome']."' id='cropbox' />";

echo "<div style='width:100px;height:100px;overflow:hidden;'>";

echo "<img src='fotos-exalunos/".$listafotos['nome']."' id='preview' />";

echo "</div>";

}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloque esse or die(), q ai você vai descobrir o motivo:

 

$sql2 = mysql_query("SELECT substring(foto,16) as nome 
FROM exalunofoto WHERE idexaluno='$idexaluno' 
ORDER BY idfotoexaluno DESC") or die( mysql_error() );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

Significa que esse campo "idfotoexaluno" não existe na sua tabela. Verifique se esse é o nome do campo mesmo. Se achar melhor poste aqui a estrutura da sua tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza Denis, era tinha esse campo dentro do código, substitui pelo certo, tá cadastrando agora sem erro.

 

Tenho esse código da página principal, onde o usuário se conecta, tem seus dados e abaixo consegue vê todos os usuários cadastrados, com avatar(foto) e seu nome, queria agora colocar a foto que ele enviaram no lugar do avatar.

<?php
$sql2 = mysql_query("SELECT idexaluno, login, nome, email, cidade, estado, profissao, ano, sexo, data FROM exalunos ORDER BY nome");

while ($res2 = mysql_fetch_array($sql2)) {
$nomecompleto=$res2["nome"];
$aux = explode (' ',$nomecompleto);
$primeironome = $aux[0];

echo "<div style='width:130px; height:150px; float:left; margin-left:20px; background:url(imagens/bg-usuario.png)'>";
echo "<p style='float: left; margin-left:22px; margin-top:10px; margin-bottom:0;'><span class='texto_normal'><img src='imagens/".$avatar.".png' alt='' width='80' height='100' /></span></p>";
echo "<p style='float:left; margin-left:15px; margin-top:10px;'><strong><span class='style3'><a href=\"perfil.php?idexaluno=".$res2["idexaluno"]."&idautor=".$idexaluno."\">".$primeironome." </a></span></strong></p></div>";
			}
			?>

 

E quando eu clico em algum usuário ele abre outra página sobre o mesmo...

 

Essa parte onde tem seus dados e sua foto, queria colocar a foto dele aqui também

<div style="background-color:#eefcff; width:90px; height:110px; float:left;">
<div style="background-color:#74bece; width:80px; height:100px; margin:5px;"><img src="imagens/user_48.png" alt="" width="80" height="100" /></div>
</div>
<div style="background-color:#eefcff; width:450px; height:110px; float:left;">
<ul style="list-style:none; margin-top:10px; display:block;">
<li>E-mail: <span class="destaque"><?php echo $res["email"]; ?></span></li>
<li>Cidade:<span class="destaque"><?php echo $res["cidade"]; ?></span></li>
<li>Estado: <span class="destaque"><?php echo $res["estado"]; ?></span></li>
<li>Ano em que saiu do colégio:<span class="destaque"><?php echo $ano; ?></span></li>
<li>Profissão: <span class="destaque"><?php echo $res["profissao"]; ?></span></li>
</ul>
</div>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

No primeiro caso, verifique se essa variável $avatar está sendo preenchida corretamente, pois pelo o que parece, é ela quem indica qual é o avatar do usuário.

 

No segundo caso você pode apenas criar mais um item na lista para colocar o avatar.

<li>Foto: <span class="destaque"><?php echo $avatar; ?></span></li>

Onde o valor do $avatar do segundo caso é o mesmo do primeiro.

Qualquer dúvida pode perguntar! :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Denis corrigi o segundo caso mais não entendi o primeiro...

 

Essa parte é o início da primeira...

<?php 
session_start();
require("verifica.php");
require("configuracao_alunos.php");
$login = ($_SESSION[login]);
$sql = mysql_query("SELECT idexaluno, login, nome, email, cidade, estado, profissao, ano, data FROM exalunos WHERE login='$login'");
$res = mysql_fetch_array($sql);
$idexaluno = $res ['idexaluno'];
//$sql3 = mysql_query("SELECT msg_exaluno.comentario, msg_exaluno.idcomentario FROM msg_exaluno WHERE idreceptor='$idexaluno' ORDER BY idcomentario DESC");
$sql3 = mysql_query("SELECT msg_exaluno.comentario, msg_exaluno.idautor, msg_exaluno.idcomentario, msg_exaluno.data_coment, exalunos.nome FROM msg_exaluno, exalunos WHERE idreceptor='$idexaluno' and idexaluno=idautor ORDER BY idcomentario DESC");
$ano = $res["ano"];
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, pelo o que eu entendi, no início você tem uma lista de alunos:

 

1° tela

. Aluno 1

. Aluno 2

. Aluno 3

 

Quando você clica em um desses alunos, uma tela com os dados do aluno + foto é aberta:

 

2° tela

(foto)

Nome do aluno

Telefone

etc...

 

 

 

A foto já está aparecendo na segunda tela, certo? Então para aparecer na primeira você precisa apontar o caminho correto de onde está a imagem.

Pelo o que eu vi no código que você postou, essa linha é a seguinte:

echo "<p style='float: left; margin-left:22px; margin-top:10px; margin-bottom:0;'><span class='texto_normal'><img src='imagens/".$avatar.".png' alt='' width='80' height='100' /></span></p>";

 

Note que aqui: <img src='imagens/".$avatar.".png' alt='' width='80' height='100' /> ele busca uma imagem, então o que está aqui: 'imagens/".$avatar.".png' deve estar certo.

 

O que eu disse foi para verificar se esse $avatar está vindo com o nome certo do arquivo de imagem.

O que você pode fazer para verificar o valor dessa variável é executar o comando "die" antes de imprimir a linha da foto, assim:

die($avatar);
echo "<p style='float: left; margin-left:22px; margin-top:10px; margin-bottom:0;'><span class='texto_normal'><img src='imagens/".$avatar.".png' alt='' width='80' height='100' /></span></p>";

Assim ele não vai imprimir a linha, mas sim mostrar o valor da variável. Claro que você vai precisar tirar ela linha com o "die" depois, mas por enquanto é só pra verificar se essa variável está certa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Denios cara não deu certo aqui.

 

Envio essas duas telas em anexo:

 

Tela 01 - Tela atual do que está no ar.

 

Tela 02 - Tela do que eu quero colocar no ar, essa já não tem mais a figura do avatar geral, ficou todas em branco, quando coloquei o comando que você disse só ficou um quadro desses em branco.. Note que no rodapé aparece o caminho de quem está acessando, o qual iria abrir os dessa pessoa.

 

tela1.jpg

 

tela2.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique se o sistema está buscando a imagem pelo nome e caminho certo...

 

Se o avatar é o mesmo do que tem na primeira tela, o local deve ser o mesmo.

 

Se preferir, talvez você consiga fazer isso direto executando o comando de exibir código-fonte da página.. por exemplo, no Firefox você pode clicar com o botão direito em alguma parte da página que está acessando e escolher a opção Código-fonte. Aí você pode procurar a parte da página que traz as imagens.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Gustavo! Desculpe a demora pra responder.

 

Então... creio que este caso esteja um pouco diferente de dúvidas específicas... Além disso, o tópico, por algum motivo, foi marcado como resolvido.

Eu sugiro que você crie um novo tópico citando suas dúvidas em relação ao programa, assim outras pessoas, além de mim, poderão te ajudar.

 

Até logo!

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.