Inserir imagem dentro do ID já cadastrado
Olá, boa tarde!
Tenho um sistema de cadastro com dados e foto. Acontece que precisei adaptar o código com Crop da imagem e desde então não consegui mais fazer funcionar corretamente. Primeiro tentei cadastrar a imagem "cropada" junto com o restante do cadastro, e não consegui... até pedi ajuda aqui no fórum há mais de um mês, e não obtive respostas.
Então resolvi mudar para um jeito mais simples: Primeiro faço o cadastro dos dados da pessoa, e depois tenho um link separado caso queira incluir uma foto neste cadastro. Só que ainda não está funcionando.
Estou gerando um nome aleatório e consigo gravar a imagem em um diretório, mas quando pego o cadastro pelo ID, não consigo atualizar o cadastro com a imagem.
Por favor, alguém pode me ajudar?
Este é o código do formulário:
mudar_foto.php
<?php
// memory limit
ini_set("memory_limit","50M");
set_time_limit(0);
// processa arquivo
$imagem = isset( $_FILES['imagem'] ) ? $_FILES['imagem'] : NULL;
$tem_crop = false;
$img = '';
if( $imagem['tmp_name'] )
{
$imagesize = getimagesize( $imagem['tmp_name'] );
if( $imagesize !== false )
{
if( move_uploaded_file( $imagem['tmp_name'], $imagem['name'] ) )
{
include( 'm2brimagem.class.php' );
$oImg = new m2brimagem( $imagem['name'] );
if( $oImg->valida() == 'OK' )
{
$oImg->redimensiona( '400', '', '' );
$oImg->grava( $imagem['name'] );
$imagesize = getimagesize( $imagem['name'] );
$img = '<img src="'.$imagem['name'].'" id="jcrop" '.$imagesize[3].' />';
$preview = '<img src="'.$imagem['name'].'" id="preview" '.$imagesize[3].' />';
$tem_crop = true;
}
}
}
}
?>
<?php if( $tem_crop === true ): ?>
<h2 id="tit-jcrop">Recorte a imagem</h2>
<div id="div-jcrop">
<div id="div-preview">
<?php echo $preview; ?>
</div>
<?php echo $img; ?>
<input type="submit" value="Salvar" id="btn-crop" />
</div>
<div id="debug">
<p><strong>X</strong> <input type="text" id="x" size="5" disabled /> x <input type="text" id="x2" size="5" disabled /> </p>
<p><strong>Y</strong> <input type="text" id="y" size="5" disabled /> x <input type="text" id="y2" size="5" disabled /> </p>
<p><strong>Dimensões</strong> <input type="text" id="h" size="5" disabled /> x <input type="text" id="w" size="5" disabled /></p>
</div>
<script type="text/javascript">
var img = '<?php echo $imagem['name']; ?>';
$(function(){
$('#jcrop').Jcrop({
onChange: exibePreview,
onSelect: exibePreview,
aspectRatio: 1
});
$('#btn-crop').click(function(){
$.post( 'crop.php', {
img:img,
x: $('#x').val(),
y: $('#y').val(),
w: $('#w').val(),
h: $('#h').val()
}, function(){
$('#div-jcrop').html( '<img src="' + img + '?' + Math.random() + '" width="'+$('#w').val()+'" height="'+$('#h').val()+'" />' );
$('#debug').hide();
$('#tit-jcrop').html('Feito!<br /><a href="crop-simples.php">enviar outra imagem</a>');
});
return false;
});
});
function exibePreview(c)
{
var rx = 100 / c.w;
var ry = 100 / c.h;
$('#preview').css({
width: Math.round(rx * <?php echo $imagesize[0]; ?>) + 'px',
height: Math.round(ry * <?php echo $imagesize[1]; ?>) + 'px',
marginLeft: '-' + Math.round(rx * c.x) + 'px',
marginTop: '-' + Math.round(ry * c.y) + 'px'
});
$('#x').val(c.x);
$('#y').val(c.y);
$('#x2').val(c.x2);
$('#y2').val(c.y2);
$('#w').val(c.w);
$('#h').val(c.h);
};
</script>
<?php else: ?>
<form name="frm-jcrop" id="frm-jcrop" method="post" action="crop-simples.php" enctype="multipart/form-data">
<input type="hidden" name="id" value="<?php echo $id; ?>" />
<p>
<label>Envie uma imagem:</label>
<input type="file" name="imagem" id="imagem" />
<input type="submit" value="Enviar" />
</p>
</form>
<?php endif; ?>
E o código que renomeia a imagem, salva no diretório e deveria salvar no banco, agora está assim:
crop.php
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
include( 'm2brimagem.class.php' );
$oImg = new m2brimagem( $_POST['img'] );
if( $oImg->valida() == 'OK' )
{
$oImg->posicaoCrop( $_POST['x'], $_POST['y'] );
$oImg->redimensiona( $_POST['w'], $_POST['h'], 'crop' );
$oImg->grava( $_POST['img'] );
//especifica o diretorio pra salvar a foto cropada
$diretorio = '../../foto/';
//cria um nome aleatorio
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $_POST['img'], $XTs);
$nome_novo = md5(uniqid(time())) . "." . $XTs[1];
//grava no diretorio, o nome aleatorio
$oImg->grava( $diretorio . $nome_novo );
$id = $_GET["id"];
$sql = mysql_query("UPDATE motoristas SET imagem=$nome_novo WHERE id='$id' ");
mysql_query ($sql)or die("Probelmas de conecção".$sql);
echo"Foto cadastrada com sucesso";
//apaga a imagem original
$return = @unlink($_POST['img']);
}
}
?>
Obs: fiz um teste só de INSERT e a imagem grava no banco em um novo ID, mas na hora do UPDATE do cadastro, não dá certo.
Só alterei este pedaço:
$oImg->grava( $diretorio . $nome_novo );
$sql = mysql_query("INSERT INTO motoristas (id, imagem ) VALUES ('$id', '$nome_novo') ");Discussão (9)
Carregando comentários...