Ir para conteúdo

POWERED BY:

Arquivado

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

Marcelo Okada

Update com while e foreach

Recommended Posts

Boa tarde, estou com duvidas aqui em meu projeto, tenho um array de valores, que vem através de um resultado, qunado faço o while, para mostrar todos os registros, dentro dele faço um update,  mas o problema que ele nao aplica na ultimo linha da tabela, tbm fiz por foreach continua a mesma coisa, o que pode ser isso???

while(!$sql->eof()){

$ccodiusua1 	= $sql->result("CCODIUSUA1");

$sql11 = new Query ($bd);
$txt11 = "UPDATE HSSVACINA_GRIPE SET XML = 'S'
          WHERE CCODIUSUA1 = '".$ccodiusua1."'";
$sql11->executeSQL($txt11);

$sql->next();
}

só não aplica na ultima linha.

em foreach:

$ccodiusua1[] 	= $sql->result("CCODIUSUA1");

foreach($ccodiusua1 as $a){
	
$sql11 = new Query ($bd);
$txt11 = "UPDATE HSSVACINA_GRIPE SET XML = 'S'
         WHERE CCODIUSUA1 = '".$a."'";
$sql11->executeSQL($txt11);

}

$ccodiusua1[] vem certinho a quantidade.
Array
(
    [0] => 000838-01
    [1] => 000838-02
    [2] => 000838-03
    [3] => 001929-01
    [4] => 000838-00
)

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php

$ccodiusua1[] = $sql->result("CCODIUSUA1");

for ($i = 0; $i < count($ccodiusua1); $i++) :
    $sql11 = new Query($bd);
    $txt11 = "UPDATE HSSVACINA_GRIPE SET XML = 'S'
         WHERE CCODIUSUA1 = '" . $ccodiusua1[$i] . "'";
    $sql11->executeSQL($txt11);
endfor;


//$ccodiusua1[] 
    
// vem certinho a quantidade.
//Array
//(
//[0] => 000838-01
//[1] => 000838-02
//[2] => 000838-03
//[3] => 001929-01
//[4] => 000838-00
//)

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

o

$ccodiusua1[] = $sql->result("CCODIUSUA1");

for ($i = 0; $i < count($ccodiusua1); $i++) :
    $sql11 = new Query($bd);
    $txt11 = "UPDATE HSSVACINA_GRIPE SET XML = 'S'
         WHERE CCODIUSUA1 = '" . $ccodiusua1[$i] . "'";
    $sql11->executeSQL($txt11);
  
  echo $txt11;
  echo '<Br/>';
endfor;

 

 

da um echo no sql, e verifica se ta trazendo todos os registros

talvez o erro nao esteja ai, e sim na consulta

Compartilhar este post


Link para o post
Compartilhar em outros sites

na consulta traz sim, ele vem em array, conforme tinha colocado ai.

 

Array
(
[0] => 000838-01
[1] => 000838-02
[2] => 000838-03
[3] => 001929-01
[4] => 000838-00
)

e ele nao aplica justamente ai, no ultimo! 

01.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

É um tanto estranho não estar funcionando. Acredito que o problema seja algo relacionado ao retorno dos dados na função abaixo do que outro problema.

$ccodiusua1[] 	= $sql->result("CCODIUSUA1");

Faça um var_dump da variável acima e cole-nos aqui o resultado, sem nenhuam modificação:

var_dump($ccodiusua1);

Assim poderemos verificar a qualidade dos dados.

 

Também, se possível, nos mande os códigos das funções $sql->result e $sql->executeSQL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por clovis.sardinha
      Boa noite.
      Tenho um bd com 2 tabelas. A primeira (serv_os) tem as colunas id, fk_os e fk_servico  a segunda (prod_os) tem as colunas id, fk_os e agora eu criei a coluna fk_serv. A coluna fk_serv vai ser preenchida com o valor id da primeira coluna. Fiz o seguinte update entre as tabelas: 
      UPDATE prod_os
      JOIN serv_os ON serv_os.fk_os= prod_os.fk_os
      SET prod_os.fk_serv = serv_os.id
      WHERE prod_os.fk_os=serv_os.fk_os;
       
      Até aqui tudo bem, porém, fiquei com o seguinte problema.  Muitas vezes  existem vários serviços na primeira tabela, por exemplo id=100 produto A, id=101 produto B, porém o fk_os é o mesmo . Ai na coluna fk_serv aparece sempre o id do produto A. Nesse caso duas vezes. O produto B, C,...etc não aparece. 
      Não consegui nenhum comando, já que o join é pela coluna fk_os, que fizesse o update mudar o ponteiro para o serviço B,C,etc.
      Se alguém puder me ajudar eu agradeço.
    • Por Willian Simione
      Boa Noite, alguem poderia me ajudar em uma situação, estou tetnando gravar os dados da tela abaixo, porem nao estou conseguindo montar o jeito certo pra ele gravar todos os dados de uma vez

    • Por vicente386
      Ola. Tenho uma tabela no 3 campos que sao "LIVRO, POS, PAGINA" ao qual a logica e a seguinte: cada livro tem 100 paginas cada pagina tem 30 posiçoes tenho 8,364 registros pra inserir chegando a 100 paginas com 30 posiçoes cada passa para o livro 2 e como fazer o update na tabela inserindo nos campos LIVRO = 1, POS de 0 a 30 e PAGINA 1 para cada 30 registros logos apos pagina 2 ?
      estou tentando fazer assim:
      <?php > ini_set('max_execution_time', 2000); $pdo = new > DO(DB_SERVER.":host=".DB_HOST.";dbname=".DB_BASE,DB_USER,DB_PASSWORD); > $sql = $pdo->prepare("SELECT count(*) FROM tabela2018"); > $sql->execute(); > $livro = 1; > foreach($sql as $obj){ > $variavel = $obj[0]; > ceil((float)$variavel/100); > $qtdlaco = ceil((float)$variavel/100); > for ($id = 1; $id <= 35; $id++) { > for($L=1; $L < $qtdlaco; $L++) { > for ($P = 0; $P <= 30; $P++) { > $sql = $pdo->prepare("UPDATE tabela2018 SET LIVRO = :LIVRO, POS = :POS, PAGINA = :PAGINA WHERE idtabela2018 = $id"); > $sql->bindValue(':LIVRO', $livro); > $sql->bindValue(':POS', $P); > $sql->bindValue(':PAGINA', $L); > $sql->execute(); > } > } > } >} ?> mas na tebela so aparece: LIVRO POS PAGINA 1 30 83 1 30 83 1 30 83 e nao como deveria : LIVRO POS PAGINA 1 0 1 1 1 1 1 2 1
    • Por Giovanird
      Tenho uma tabela com a coluna média (valor decimal) .
       
      cod | media | cod_sala 1 1,98 5 2 2,34 2 3 1,32 5 4 2,51 3 5 1,65 1 6 2,78 5 7 4,95 4 8 0,75 4 9 1,23 1 10 1,63 2 11 1,55 3 Preciso no select MYSQL ou dentro do foreach multiplicar os valores do campo média, de acordo com o fitro por cod_sala
      Exemplo pelo cod_sala: 5
      Sendo o resultdo final: 1,98 * 1,32 * 2,78 = 7,26

      Desde já agradeço!
    • Por Giovanird
      Listo um array pelo foreach e preciso pegar os valores fora do foreach.
      Abaixo tenho o exemplo do foreach com os valores
       
      <?php foreach($turma $rsturma): if(($rsturma['id'] == 1){ echo $rsturma['nome']."<br>"; echo $rsturma['idade']."<br><br>"; } endforeach; //Dentro do foreach me retorna: Luis 13 Maria 12 Carlos 12 Matheus 14 Andréa 12 //Preciso pegar a posição e o valor desta lista $posicao1 = 1; $nome1 = Luis; $posicao2 = 2; $nome2 = Maria; $posicao3 = 3; $nome3 = Carlos; $posicao4 = 4; $nome4 = Matheus; $posicao5 = 5; $nome5 = Andréa;  
×

Informação importante

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