Jump to content
JorgeGraca

[Resolvido] Remover Foto Carregada

Recommended Posts

JorgeGraca

Boa tarde, pessoal.

Estou a desenvolver uma pequena aplicação que consiste em fazer o upload de imagens sucessivo.

O formulário de upload é submetido por uma função AJAX, assim como o formulário para remover esse mesmo upload.

Quando uma dessas funções é submetida, apresenta numa div todos os uploads já feitos pelo utilizador.

Esses valores estão guardados em 4 variaveis de sessão para mais tarde serem enviadas e guardadas num WebService juntamente com a imagem:

$_SESSION['uploaded_item_fotos_id'] = array();
$_SESSION['uploaded_item_fotos_name'] = array();
$_SESSION['uploaded_item_fotos_location'] = array();
$_SESSION['uploaded_item_fotos_gallery'] = array();

O problema é que quando quero remover alguma imagem das variaveis de sessão,consigo fazê-lo mas só me elimina a primeira imagem guardada em sessão devido aos id's.

Ou seja, o código de submissão é o seguinte:

$('#removeFoto').live('click',function(){
$("#remove_item_foto").ajaxForm( {target: '#item_fotos3'} ).submit();
});

Quando carrego na imagem para remover (neste caso) com o id = #removeFoto, submete-me o formulário com o id = #remove_item_foto.

Todos os formulários têm o mesmo id e esse é mesmo o problema pelo que me apercebi. Já tentei colocar tipo, #remove_item_foto1 e por ai adiante com uma variável de sessão, mas o formulário enviava sempre os mesmo valores.

Código para o upload de imagens:

<form action="main/modules/request.php" name="add_item_foto" id="add_item_foto" method="POST" enctype="multipart/form-data">
<input type="hidden" name="request_item_foto_add" value="true" />
<input type="file" name="uploadFoto" id="uploadFoto" class="file1" />
</form>

Código para imprimir as imagens:

<?php
foreach($_SESSION['uploaded_item_fotos_id'] as $id){
$foto = $_SESSION['uploaded_item_fotos_name'][$id-1]; list($name,$ext) = explode('.',$foto);
$location = $_SESSION['uploaded_item_fotos_location'][$id-1];
$gallery = $_SESSION['uploaded_item_fotos_gallery'][$id-1];
?>
<div id="itemFoto<?php echo $id; ?>" style="width:163px; float:left; margin-bottom:5px; margin-right:3.5px;">
<table style="border:1px solid #CCC; padding:5px; background-color:white;">
<tr>
<td colspan="2" align="center"><img src="<?php echo $location.''.$foto; ?>" style="width:145px; height:95px; border:1px solid #D5D5D5;" /></td>
</tr>
<tr>
<td align="right" style="padding-top:3px; cursor:pointer;" valign="bottom">
<form action="main/modules/request.php" name="remove_item_foto" id="remove_item_foto" method="POST">
<input type="hidden" name="request_item_foto_remove" value="true" />
<input type="hidden" name="fotoID<?php echo $id; ?>" value="<?php echo $id; ?>" />
<img id="removeFoto" src="main/images/remove.png" />
</form>
</td>
</tr>
</table>
</div>
<?php
}
?>

(Acho que me fiz entender)

Gostava que me dessem uma dica porque, já dei muitas voltas no código e não consegui encontrar solução.

Obrigado!

Edited by brunoais
geshi

Share this post


Link to post
Share on other sites
taviroquai

Em vez de usares #remove_foto_item1, usa o atributo data-fotoid="1" e depois obtem o valor com $(this).attr('data-fotoid');

Share this post


Link to post
Share on other sites
HappyHippyHippo

$('.removeFoto').live('click',function(){
 var $this = $(this);
 var id = $this.attr('imgid');
 $this.parent().ajaxForm( {target: id} ).submit();
});

<?php
foreach($_SESSION['uploaded_item_fotos_id'] as $id){
 $foto = $_SESSION['uploaded_item_fotos_name'][$id-1]; list($name,$ext) = explode('.',$foto);
 $location = $_SESSION['uploaded_item_fotos_location'][$id-1];
 $gallery = $_SESSION['uploaded_item_fotos_gallery'][$id-1];
?>
<div id="itemFoto<?php echo $id; ?>" style="width:163px; float:left; margin-bottom:5px; margin-right:3.5px;">
 <table style="border:1px solid #CCC; padding:5px; background-color:white;">
   <tr>
     <td colspan="2" align="center"><img src="<?php echo $location.''.$foto; ?>" style="width:145px; height:95px; border:1px solid #D5D5D5;" /></td>
   </tr>
 <tr>
 <td align="right" style="padding-top:3px; cursor:pointer;" valign="bottom">
   <form action="main/modules/request.php" name="remove_item_foto" class="remove_item_foto" method="POST">
     <input type="hidden" name="request_item_foto_remove" value="true" />
     <img class="removeFoto" src="main/images/remove.png" imgid="<?php echo $id; ?>"/>
   </form>
 </td>
</tr>
</table>
</div>
<?php
}
?>

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
JorgeGraca

Em vez de usares #remove_foto_item1, usa o atributo data-fotoid="1" e depois obtem o valor com $(this).attr('data-fotoid');

Vou tentar.

Obrigado

$('.removeFoto').live('click',function(){
 var $this = $(this);
 var id = $this.attr('imgid');
 $this.parent().ajaxForm( {target: id} ).submit();
});

<?php
foreach($_SESSION['uploaded_item_fotos_id'] as $id){
 $foto = $_SESSION['uploaded_item_fotos_name'][$id-1]; list($name,$ext) = explode('.',$foto);
 $location = $_SESSION['uploaded_item_fotos_location'][$id-1];
 $gallery = $_SESSION['uploaded_item_fotos_gallery'][$id-1];
?>
<div id="itemFoto<?php echo $id; ?>" style="width:163px; float:left; margin-bottom:5px; margin-right:3.5px;">
 <table style="border:1px solid #CCC; padding:5px; background-color:white;">
<tr>
  <td colspan="2" align="center"><img src="<?php echo $location.''.$foto; ?>" style="width:145px; height:95px; border:1px solid #D5D5D5;" /></td>
</tr>
 <tr>
 <td align="right" style="padding-top:3px; cursor:pointer;" valign="bottom">
<form action="main/modules/request.php" name="remove_item_foto" class="remove_item_foto" method="POST">
  <input type="hidden" name="request_item_foto_remove" value="true" />
  <img class="removeFoto" src="main/images/remove.png" imgid="<?php echo $id; ?>"/>
</form>
 </td>
</tr>
</table>
</div>
<?php
}
?>

O problema não é com o id da imagem, o problema é com o id do formulário.

Mas obrigado na mesma

Share this post


Link to post
Share on other sites
HappyHippyHippo

O problema não é com o id da imagem, o problema é com o id do formulário.

oi ... está ai alguém ?

ou pelo menos alguém que leia o post correctamente e veja que o problema do "formulário" não existe no código apresentado ?

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
JorgeGraca

Já consegui resolver o problema (com uma pequena ajuda).

Em vez de utilizar os formulários, vou fazer um request por AJAX.

Mas obrigado na mesma pelas vossas opiniões.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.