Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida Na Utilização De Array


Andreia Regina

Pergunta

Olá!

Não tem jeito, eu tento mas não consigo entender sobre array.

Sei que o tema já está bastante presente no fórum, mas estou longe de entendê-lo, espero que dessa vez na prática eu consiga pegar o jeito, mas preciso da ajuda de vocês.

Tenho um formulário que exibe as imagens de uma determinada categoria da Galeria de Fotos.

<?php
    $sql = mysql_query("SELECT * FROM tb_galeria_img WHERE id_categoria='{$id_cat}' ORDER BY id_imagem ASC") or die (mysql_error());
    while ($row = mysql_fetch_array($sql))
    {
        $id_imagem   = $row["id_imagem"];
        $imagem      = $row["imagem"];
        $img_legenda = $row["img_legenda"];
        
        print "<img src=\"galeria_img_p/$imagem\" />"; ?><br/>
         <input type="checkbox" name="imagem[]" value="<?=$id_imagem?>" />Selecionar esta imagem. <?php echo "id ".$id_imagem; ?>
         <input type="hidden" name="nome_imagem[]" value="<?=$imagem?>" /> <?php echo "imagem ".$imagem;

    } //while ($row = mysql_fetch_array($sql))
    ?>
Exibe certinho os dados nesta página, porém na página que deve receber os dados thumbs_down.gif, a página que recebe os dados do formulário é esta:
    $array = $_POST['imagem'];
    $array = $_POST['nome_imagem'];

    foreach ($array as $imagem){
      echo $imagem;
      echo "<br/>";
  $quant  = count($imagem);
  }

Nesta página eu preciso receber os valores $id_imagem e $nome_imagem dos checkbox selecionados para excluir os registros correspondentes na tabela tb_galeria_img e excluir o arquivo correspondente ao registro nas pastas.

Desde já agradeço a quem puder me ajudar

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Você está criando um array de um campo hidden:

<input type="hidden" name="nome_imagem[]" value="<?=$imagem?>" />
Neste caso será passado todos os campos nome_imagem[] declarados no formulário e não somente os que você selecionou. Tu pode pegar somente o id da imagem:
<input type="checkbox" name="imagem[]" value="<?=$id_imagem?>" />
consultar a tabela tb_galeria_img para pegar o nome da imagem e deleta-la.
$array = $_POST['imagem'];
foreach ($array as $imagem){

$sql = mysql_query("SELECT nome_imagem FROM tabela WHERE id='$imagem'")or die(mysql_error());
list($nome_imagem) = mysql_fetch_array($sql);
unlink($nome_imagem);

echo $imagem." foi excluída com sucesso";
echo "<br/>";
}
$quant  = count($imagem);

T+

André

Link para o comentário
Compartilhar em outros sites

  • 0

Você está criando um array de um campo hidden:

<input type="hidden" name="nome_imagem[]" value="<?=$imagem?>" />
Neste caso será passado todos os campos nome_imagem[] declarados no formulário e não somente os que você selecionou. Tu pode pegar somente o id da imagem:
<input type="checkbox" name="imagem[]" value="<?=$id_imagem?>" />

consultar a tabela tb_galeria_img para pegar o nome da imagem e deleta-la.

:o Nossa tem disso? não sabia!

Não fica lento fazer o select a cada imagem selecionada?

Foi com medo da lentidão que pensei em fazer desta forma.

Obrigada André.

===== Editando

Fiz a alteração sugerida pelo André, pois não estava pegando o valor do nome da imagem.

Nada como tentativa e erro e uns echo no meio do caminho

Agora está funcionando normalmente.

Obrigada pela atenção pessoal!!!

Editado por Andreia Regina
Link para o comentário
Compartilhar em outros sites

  • 0

:o Nossa tem disso? não sabia!

Não fica lento fazer o select a cada imagem selecionada?

Foi com medo da lentidão que pensei em fazer desta forma.

Mesmo que fique um pouco mais lento é uma forma mais segura de fazer.

Há uma outra forma de se fazer isso, por exemplo, em:

<input type="checkbox" name="imagem[]" value="<?=$id_imagem?>" />
Você trocaria por:
 
<input type="checkbox" name="imagem[]" value="<?=$id_imagem."[SEP]".$imagem ?>" />
[sEP] = Separador (você pode utilizar qualquer um). Na hora de tratar os dados, fazemos assim:
$array = $_POST['imagem'];
foreach ($array as $imagem){
list($id_imagem,$nome_imagem) = explode("[SEP]",$imagem);

echo "<b>id:</b> ".$id_imagem." || <b>Nome da Imagem:</b> ".$nome_imagem."<br />";
}
$quant  = count($imagem);

A segunda opção seria mais rápida porque não precisaria consultar a base de dados para saber o nome da imagem, mas se acaso uma imagem tenha o separador "[sEP]" aí vai dar pau no script.

T+

André

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...