Alterar cadastro com foto
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)$/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>
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)$/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>
Marcelo Xavier
Curtidas 0
Respostas
Rafael Carrenho
06/03/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.
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.
GOSTEI 0
Marcelo Xavier
06/03/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
GOSTEI 0