Array
(
)

Alterar cadastro com foto

PHP
Marcelo Xavier
   - 06 mar 2014

Boa tarde pessoal, Tenho um sistema de cadastro para escolas, precisei inserir fotos, no caso tive de alterar modelo de cadastro original para outro que se adaptava para o cadastro da foto, nesse caso cadastrando a foto na pasta e só o caminho no bd. Deu uma pequena dor de cabeça mas agora está ok, pelo uso do md5 ele altera o nome da foto não deixando ser igual na pasta. O cadastro consegui, mas para alterar eu não cheguei a uma solução.
Na verdade o que implemente foi uma dica pega na internet, mas nesse caso fazendo uma página nova como UPDATE SET não deu resultado, quando vou em alterar a foto aparece mas os dados do aluno não. Alguém poderia dar uma dica pelo código de cadastro que está perfeitamente funcional.

<?php
// Conexão com o banco de dados
include "../dbconfig.php";
if ($_SESSION['nome'] == "" or $_SESSION['login'] == "" or $_SESSION['id_nivel'] == "3" or $_SESSION['id_nivel'] == "4") { header("Location:index.php"); }
// Se o usuário clicou no botão cadastrar efetua as ações
if ($_POST['cadastrar']) {

// Recupera os dados dos campos
$aluno = $_POST['aluno'];
$ativo = $_POST['ativo'];
$email = $_POST['email'];
$endereco = $_POST['endereco'];
$numero = $_POST['numero'];
$complemento = $_POST['complemento'];
$bairro = $_POST['bairro'];
$cep = $_POST['cep'];
$cidade = $_POST['cidade'];
$uf = $_POST['uf'];
$telefone = $_POST['telefone'];
$celular = $_POST['celular'];
$pai = $_POST['pai'];
$mae = $_POST['mae'];
$sexo = $_POST['sexo'];
$nascimento = $_POST['nascimento'];
$cpf = $_POST['cpf'];
$matricula = $_POST['matricula'];
$id_serie = $_POST['id_serie'];
$login = $_POST['login'];
$senha = $_POST['senha'];
$obs = $_POST['obs'];
$foto = $_FILES["foto"];

// Se a foto estiver sido selecionada
if (!empty($foto["name"])) {

// Largura máxima em pixels
$largura = 150;
// Altura máxima em pixels
$altura = 180;
// Tamanho máximo do arquivo em bytes
$tamanho = 1000;
// Verifica se o arquivo é uma imagem
if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $foto["type"])){
$error[1] = "Isso não é uma imagem.";
}

// Pega as dimensões da imagem
$dimensoes = getimagesize($foto["tmp_name"]);

// Verifica se a largura da imagem é maior que a largura permitida
if($dimensoes[0] > $largura) {
$error[2] = "A largura da imagem não deve ultrapassar ".$largura." pixels";
}
// Verifica se a altura da imagem é maior que a altura permitida
if($dimensoes[1] > $altura) {
$error[3] = "Altura da imagem não deve ultrapassar ".$altura." pixels";
}

// Verifica se o tamanho da imagem é maior que o tamanho permitido
if($arquivo["size"] > $tamanho) {
$error[4] = "A imagem deve ter no máximo ".$tamanho." bytes";
}
// Se não houver nenhum erro
if (count($error) == 0) {

// Pega extensão da imagem
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $foto["name"], $ext);
// Gera um nome único para a imagem
$nome_imagem = md5(uniqid(time())) . "." . $ext[1];
// Caminho de onde ficará a imagem
$caminho_imagem = "fotos/" . $nome_imagem;
// Faz o upload da imagem para seu respectivo caminho
move_uploaded_file($foto["tmp_name"], $caminho_imagem);

// Insere os dados no banco
$sql = mysql_query("INSERT INTO alunos VALUES ('', '".$aluno."', '".$ativo."',
'".$email."', '".$endereco."', '".$numero."', '".$complemento."', '".$bairro."', '".$cep."', '".$cidade."', '".$uf."', '".$telefone."', '".$celular."', '".$pai."', '".$mae."', '".$sexo."', '".$nascimento."', '".$cpf."', '".$matricula."', '".$id_serie."', '".$login."', '".$senha."', '".$obs."', '".$nome_imagem."')");

// Se os dados forem inseridos com sucesso
if ($sql){
echo "Você foi cadastrado com sucesso.";
}
}

// Se houver mensagens de erro, exibe-as
if (count($error) != 0) {
foreach ($error as $erro) {
echo $erro . "<br />";
}
}
}
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>ADMINISTRAÇÃO GERAL</title>
<link href="estilo.css" rel="stylesheet" type="text/css" />

</head>
<body bgcolor="#E8E8E8">
<table width="1000" border="1" align="center" cellpadding="2" cellspacing="0" bordercolor="#000000" style="border-collapse: collapse">
<tr>
<td colspan="2" bgcolor="#CFCFCF">
<table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr>
<td width="50%"><b>LOGADO COMO:</b> <?=$_SESSION['nome']." - ".$_SESSION['login']?></td>
<td align="right">
<b>DATA:</b>
<? if (date("D") == "Sun") $dia = "Domingo";
if (date("D") == "Mon") $dia = "Segunda";
if (date("D") == "Tue") $dia = "Terça";
if (date("D") == "Wed") $dia = "Quarta";
if (date("D") == "Thu") $dia = "Quinta";
if (date("D") == "Fri") $dia = "Sexta";
if (date("D") == "Sat") $dia = "Sábado";
echo $dia.", ".date("d/m/Y")?> - <b>HORA:</b> <?=date("H:i")?> - <b>IP:</b> <?=getenv("REMOTE_ADDR")?></td>
</tr>
</table>
</td>
</tr>
<tr valign="top">
<td width="100" bgcolor="#CFCFCF">
<? include ("menu.php")?><br>
</td>
<td width="540">
<p align="center"><b>ALUNOS</b></p>
<h1>Novo Usuário</h1>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data" name="cadastrar" >
Aluno:<br />
<input name="aluno" type="text" value="<?=@mysql_result($sql,0,aluno)?>" size="60" onkeyup="up(this)"><br /><br />
Email:<br />
<input name="email" type="text" value="<?=@mysql_result($sql,0,email)?>" size="60" ><br /><br />
Endereço:<br />
<input name="endereco" type="text" value="<?=@mysql_result($sql,0,endereco)?>" size="60" onkeyup="up(this)"><br /><br />
Número:<br />
<input name="numero" type="text" value="<?=@mysql_result($sql,0,numero)?>" size="20"><br /><br />
Complemento:<br />
<input name="complemento" type="text" value="<?=@mysql_result($sql,0,complemento)?>" size="60" onkeyup="up(this)"><br /><br />
Bairro:<br />
<input name="bairro" type="text" value="<?=@mysql_result($sql,0,bairro)?>" size="60" onkeyup="up(this)"><br /><br />
Cep:<br />
<input name="cep" type="text" maxlength="9" id="cep" OnKeyPress="return formatarcep(event,'cep');" value="<?=@mysql_result($sql,0,cep)?>" size="20"><font face="Arial" size="2"> <span class="style1">*</span>Somente números</font>><br /><br />
Cidade:<br />
<input name="cidade" type="text" value="<?=@mysql_result($sql,0,cidade)?>" size="45" onkeyup="up(this)"><br /><br />
UF:<br />
<select name="uf">
<? $sql_uf = mysql_query("SELECT * FROM estados ORDER BY id_uf ASC");
while($coluna = mysql_fetch_array($sql_uf)) { ?><option value="<?=$coluna[uf]?>"<? if(@mysql_result($sql,0,uf) == $coluna[uf]) echo " selected"; ?>><?=$coluna[uf]?></option>
<? } ?></select><br /><br />
Telefone:<br />
<input name="telefone" type="text" id="telefone" maxlength="15" value="<?=@mysql_result($sql,0,telefone)?>" size="20"><font face="Arial" size="2"> <span class="style1">*</span>Somente números</font><br /><br />
Celular:<br />
<input name="celular" type="text" id="celular" maxlength="15" value="<?=@mysql_result($sql,0,celular)?>" size="20"><font face="Arial" size="2"> <span class="style1">*</span>Somente números</font><br /><br />
Pai:<br />
<input name="pai" type="text" value="<?=@mysql_result($sql,0,pai)?>" size="60" onkeyup="up(this)"><br /><br />
Mãe:<br />
<input name="mae" type="text" value="<?=@mysql_result($sql,0,mae)?>" size="60" onkeyup="up(this)"><br /><br />
Sexo:<br />
<select name="sexo">
<? $sql_sexo = mysql_query("SELECT * FROM sexos ORDER BY id_sexo ASC");
while($coluna = mysql_fetch_array($sql_sexo)) { ?><option value="<?=$coluna[sexo]?>"<? if(@mysql_result($sql,0,sexo) == $coluna[sexo]) echo " selected"; ?>><?=$coluna[sexo]?></option>
<? } ?></select><br /><br />
Nascimento:<br />
<input name="nascimento" type="text" maxlength="10" id="data" OnKeyPress="return formatardata(event,'data');" value="<?=@mysql_result($sql,0,nascimento)?>" size="20"><font face="Arial" size="2"> <span class="style1">*</span>Somente números</font><br /><br />
CPF:<br />
<input name="cpf" type="text" maxlength="14" id="cpf" OnKeyPress="return formatarcpf(event,'cpf');" OnBlur="validarcpf('cpf');" value="<?=@mysql_result($sql,0,cpf)?>" size="20"><font face="Arial" size="2"> <span class="style1">*</span>Somente números</font><br /><br />
Matrícula:<br />
<input name="matricula" type="text" value="<?=@mysql_result($sql,0,matricula)?>" size="20"><br /><br />
Série/Turma:<br />
<select name="id_serie">
<option value="id-serie">SELECIONE UMA SÉRIE/TURMA</option>
<? $sql_serie = mysql_query("SELECT * FROM series ORDER BY serie");
while($coluna = mysql_fetch_array($sql_serie)) { ?><option value="<?=$coluna[id_serie]?>"<? if(@mysql_result($sql,0,id_serie) == $coluna[id_serie]) echo " selected"; ?>><?=$coluna[serie]?></option>
<? } ?></select><br /><br />
Login:<br />
<input name="login" type="text" value="<?=@mysql_result($sql,0,login)?>" size="30"><br /><br />
Senha:<br />
<input name="senha" type="password" value="<?=@mysql_result($sql,0,senha)?>" size="30"><br /><br />
Obs:<br />
<input name="obs" type="text" value="<?=@mysql_result($sql,0,obs)?>" size="60" onkeyup="up(this)"><br /><br />
<input name="ativo" type="checkbox" id="ativo" value="1"<? if (@mysql_result($sql,0,ativo)) echo " checked"; ?>>
ALUNO COM ACESSO A ÁREA RESTRITA <br /><br />
Foto de exibição:<br />
<input type="file" name="foto" /><br /><br />
<input type="submit" name="cadastrar" value="Cadastrar" />
</form>

<?php
// Seleciona todos os usuários
$sql = mysql_query("SELECT * FROM alunos WHERE id_aluno=$_GET[id]");
// Exibe as informações de cada usuário
while ($aluno = mysql_fetch_object($sql)) {
// Exibimos a foto
echo "<img src='fotos/".$aluno->foto."' alt='Foto de exibição' /><br />";
// Exibimos o nome e email

}
?>
</body>
</html>

Milléo
   - 08 mar 2014

Olá Marcelo,

realmente seu código parece estar OK, mas pelo que entendi, aqui no código você está no começo usando a variável $sql, que alimenta todos os values do formulário como resultado de uma query de inserção, mas a variável $sql não é preenchida com algum resultado de busca no banco de dados, parece que você deve criar uma variável $sql igual ao que você fez no fim do formulário para buscar a imagem do aluno. E claro, criar uma função que realize o update do registro encontrado.

Marcelo Xavier
   - 08 mar 2014

Sim, o problema é que não consegui a lógica para fazer isso, por isso estou pedindo um auxílio mostrando como está o cadastramento