Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mauricio.imbe

Deletar um item dentro de uma Array no Mysql

Recommended Posts

Olá pessoal,

 

Preciso deletar um item dentro de um campo array (acho q é isso), no db mysql.

tenho um campo chamado image que recebe os dapos postados por um array (são 4 itens) e eu quero deletar apenas um deles.

 

Tenho uma página que pesquisa e pega os dados dentro da array no db ($im_array[0], $im_array[1] ...).

Estou tentando fazer assim:

 

$sql = "DELETE				FROM imoveis				WHERE image = ".$im_array[0]."";								echo "imagem 1 deletata do db!";			$resultado=mysql_query($sql) or die(mysql_error());

 

Só estou estudando array faz uma semana... então tá dureza!

 

 

Toda ajuda é bem vinda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu executar esse código:<?for($i=0; $i <= (count($im_array)-1); $i++){echo "$im_array[$i] <br>";}?>ele retorna isso:1170339654_imovel_P2050105.jpg 1170339654_imovel_P2050106.jpg 1170339654_imovel_P2050107.jpg 1170339654_imovel_P2050108.jpg Eu quero deletar a entrada $im_array[0] no db.Ah, executando o código do primeiro post da essa mensgem de erro:Unknown table '1170339654_imovel_P2050105' in where clause

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for sempre o primeiro índice do array, você pode utilizararray_shift($im_array);Se for para excluir outro qualquer, useunset($im_array[$indice]);

Bom pelo que eu entendi, essas funções operam com o código rodando no php. O que eu quero é executar o delete direto no array do campo imagem do meu db.Se for assim, eu vou ter que ler o conteúdo da array, listar, excluir o índice que eu quiser e DEPOIS fazer um update da tabela. É isso?! Não dá pra editar direto no db?Tentei isso, mas sei que não está correto:
$sql = "DELETE FROM imoveis WHERE "unset($im_array[0])"";							$resultado=mysql_query($sql) or die(mysql_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei esse código:

 

for($i=0; $i <= (count($im_array)-1); $i++)		{			echo "$im_array[$i] <br>";		echo"deletando";				unset($im_array[0]);		$sql = "UPDATE imoveis SET image='$im_array[$i]' WHERE id = '$id'";		$resultado=mysql_query($sql) or die(mysql_error());		echo "$im_array[$i] <br>";			}

Ele funciona. Deleta a entrada [0] (pelo menos eu acho...) e faz update no db... Mas ele tá deletando as 3 primeiras entradas! só resta a ultima. Será que tenho que reordenar a array ?

 

Acho que ele está fazendo um looping... e deletando todos os [0].

Compartilhar este post


Link para o post
Compartilhar em outros sites

Maurício, leia o meu primeiro post e responda a minha pergunta.Eu preciso saber como estão os valores dentro do campo image. Não tem como você armazenar array dentro de campo MySQL.O que eu quero saber é se está assim por exemplo:imagem1.jpg;imagem2.jpg;imagem3.jpgOutra coisa: Aparentemente há um erro de nromalização do seu banco de dados, pois o campo image é um campo multivalorado, o que indica claramente que está sendo ferida uma das formas normais.Reveja também a modelagem do seu BD.

Bom, executei o select image from imoveis:
<?include("config.php");$select = mysql_query("SELECT image FROM imoveis") or die("erro ao selecionar tabela");while($row = mysql_fetch_array($select)){$image = $row["image"];echo"$image<br>"; }?>
Ele retornou assim (em uma só linha):
1170158868_imovel_22-03-05_2116.jpg|1170158868_imovel_22-03-05_2117.jpg|1170158868_imovel_22-03-05_2118.jpg|1170158868_imovel_22-03-05_2119.jpg
Quanto ao formato do campo image no db, ele é
text NOT NULL,

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.