Ir para conteúdo

Arquivado

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

Carcleo

resultado de querys

Recommended Posts

Pessoal, preciso saber como faço para, ao final de um loop foreach, em que a cada volta do loop, se faça uma busca (omparação), caso nenhuma das buscas tenha retorno, aí farei um delete dasquele registro.

 

Bom, o loop é esse:

foreach($estoques_a_deletar as $deleta)
{ 
 print "Cor: ".$deleta[1]." - ".$cores_produtos." Tamanho ".$deleta[2]." - ".$tamanhos_produtos."<br>";
 if(!(($deleta[1]==$cores_produtos) and ($deleta[2]==$tamanhos_produtos)))
 {
 $deleta_estoque_string="delete from estoque where id_estoque=".$deleta[0];
 print $deleta_estoque_string."<br>";
 //$deleta_estoque_query= $conexao->query($deleta_estoque_string);
 }
}

Esse loop esta dentro de um outro loop foreach que entrega, a cada volta, um valor para $cores_produtos e $tamanhos_produtos, que devem ser comparados com $deleta[1] e $deleta[2] consecutivamente.

E, se em nehum laço, houver a combinação, aí faço o delete do registro.

Como fazer isso?

 

Segue o codigo todo:

         $pesquisa_cor_tamanho_string = "select id_estoque, id_cor, id_tamanho from estoque where id_produto=".$_POST["id_alt_produtos"];
	   $pesquisa_cor_tamanho_query  = $conexao->query($pesquisa_cor_tamanho_string);

	   if ($pesquisa_cor_tamanho_query->num_rows!=0)
	   {			   
            $estoques_a_deletar=array();

			 while($row = $pesquisa_cor_tamanho_query->fetch_row()) 
		 {$estoques_a_deletar[] = array_values($row); }		
	   }

	   $estoque_a_deletar = array();

          foreach ($_POST["cores_alt_produtos"] as $cores_produtos)
	   {
		 foreach ($_POST["tamanhos_alt_produtos"] as $tamanhos_produtos)
		 {

			 array_push($estoque_a_deletar,$cores_produtos);
			 array_push($estoque_a_deletar,$tamanhos_produtos);

			 $pesquisa_cores_tamanhos_string =
			 "select id_cor, id_tamanho, id_estoque from estoque where 
			 id_cor=".$cores_produtos." and
			 id_tamanho=".$tamanhos_produtos." and
			 id_produto=".$_POST["id_alt_produtos"];

			 $pesquisa_cores_tamanhos_query = $conexao->query($pesquisa_cores_tamanhos_string);

			 if ($pesquisa_cores_tamanhos_query->num_rows==0)
			 {
				$insere_cor_tamanho_string=
				"insert into estoque (id_produto, id_cor, id_tamanho)
				 values (".$_POST["id_alt_produtos"].",".$cores_produtos.",".$tamanhos_produtos.")"; 
			 }		
			 print $pesquisa_cores_tamanhos_string."<br>";
			 //$insere_cor_tamanho_query = $conexao->query($insere_cor_tamanho_string);	 
		     if(isset($estoques_a_deletar))
			 {
			   foreach($estoques_a_deletar as $deleta)
			   { 
			      print "Cor: ".$deleta[1]." - ".$cores_produtos." Tamanho ".$deleta[2]." - ".$tamanhos_produtos."<br>";
				  if(!(($deleta[1]==$cores_produtos) and ($deleta[2]==$tamanhos_produtos)))
				  {
					 $deleta_estoque_string="delete from estoque where id_estoque=".$deleta[0];
					 print $deleta_estoque_string."<br>";
					 //$deleta_estoque_query= $conexao->query($deleta_estoque_string);
				  }
			   }
			 }

		 }
	   }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja:

tenho para cada indice do array, sub indices 0,1 e 2. Então, não sei bem com fazer nesse caso.

Pensei em fazer um inidce para um novo array push tal como

 

a cada laço do indice 1, crio o indice 1 do array id_a_deletatr[0].

a cada laço do indice 2, crio o indice 1 do array id_a_deletatr[1].

 

Depois, faço um for nesse array e, o indices que tiverem true eu faço a deleção. Mas não funcionou.

 

O negocio é o seguinte:

 

Para cada produto eu tenho varias combinações cor/tamanho.

 

Na alteração desse produto, preciso filtrar 3 coisas:

 

A) Os indices que vieram do formulario e que não estão na base -> Esses, tenho que gravar => Consegui

 

A) Os indices que vieram do formulario e que estão na base -> Esses, NÃO tenho que gravar => Consegui

 

C) Os indices que que tem no base de dados mas que NÃO estão no formulario ->, Esses, preciso deletar. => NÃO consegui

Compartilhar este post


Link para o post
Compartilhar em outros sites

oi @Carcleo,

 

isso é um sistema de checkboxs ? você tem um produto, e está selecionando ou tirando a seleção de varios checkboxs, e precisa atualizar na base. É isso ?

 

 

Olhe uma forma muito simples:

1. Delete tudo.

2. Grave tudo novamente.

 

Pronto. você não precisa saber quem estava, e quem não estava. Limpe e depois grave tudo novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é.

 

Poderia fazer isso.

 

Mas não posso. Porque? Há estoques gravados lá. Se eu deletar, o estoque some. Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então você não entendeu.

 

você pode sim. Delete apenas os checkboxs do registro que você está editando.

Para depois gravá-los todos novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, vou tentar simplificar.

 

Tenho essa array:

Array1
(
   [0] => Array
       (
           [0] => 1
           [1] => 1
           [2] => 1
       )

   [1] => Array
       (
           [0] => 2
           [1] => 3
           [2] => 1
       )

   [2] => Array
       (
           [0] => 3
           [1] => 1
           [2] => 5
       )

   [3] => Array
       (
           [0] => 4
           [1] => 3
           [2] => 5
       )

)

E essa:

Array2
(    
    [0] => 1    
    [1] => 1    
    [2] => 1    
    [3] => 5
)

Preciso saber quantas combinações há de cada indice primario do primeiro array em seus subindices 1 e 2, com cada sequencia 0,1; 2,3 do segundo array.

 

Tipo assim:

comparar o

array1[1] com array2[1] e array1[2] com array2[2]

 

Se não houver combinaçao, comparar

array1[1] com array2[3] e array1[2] com array2[4]

 

E assim conscutivamente.

 

É isso que preciso fazer e não estou conseguindo.

 

 

 

Porem, isso tem quew ser dinamico. Não pode ser da forma qe fiz acima pois haverá uma hora que um array terá maior quantidade e indices.

 

Tentei fazer da forma abaixo mas não deu certo:

         if(isset($estoque_a_deletar_base))
   {
  $deleta = false;  

  foreach ($estoque_a_deletar_base as $base_a_deletar)
  {
    $indice = 0;

    for ($i=1; $i<=count($estoque_a_deletar_form)/2; $i++)
    {
     print "cor base: ".$base_a_deletar[1]." - cor form: ".$estoque_a_deletar_form[$i]." - tamanho base: ".$base_a_deletar[2]." - tamanho form: ".$estoque_a_deletar_form[$indice+1]."<br>";

     if($base_a_deletar[1]==$estoque_a_deletar_form[$indice] and $base_a_deletar[2] == $estoque_a_deletar_form[$indice+1])
     {
      $deleta=true;
     }

     $indice = $indice+2;
    }
    print "Deleta: ".$deleta."<br>";
    if ($deleta==false)
    {
     $deleta_estoque_string = "delete from estoque where id_estoque=".$base_a_deletar[0];
    }
   }
    }

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.