Ir para conteúdo
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
)

 

Editado por Gabriel Heming
remover caps

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Caio_Lourençon
      Olá estou desenvolvendo um projeto utilizando a extensão MySQLi, e nisso aproveitando para utilizar algumas funções orientada a objeto! Gostaria de tirar umas dúvidas em relação a listagem de dados, são duas perguntas:   1) Utilizar a função foreach() ao invés de um while() com a função fetch_array() dentro, tem uma listagem mais rápida ou mais lenta? Pois com ambas consigo trazer os dados, No momento estou utilizando a foreach por ser mais rápida de se digitar.
      2) Utilizo muitas listagens de tabelas diferentes na mesma página sempre chamando um novo SELECT, seria melhor criar uma função com um SELECT dentro para eu sempre reutiliza-lá ou não iria mudar muita coisa em questão de desempenho?
       
      Agradeço qualquer informação.
    • Por marcosberaldo
      Pessoal, boa noite.
      Tenho uma tabela no BD que preciso criar um rankin.
      Fiz uma select que soma duas colunas, de pontuação e outra de desempate, depois ordena as somas por jogador e cria o ranking.
      Até ai está funcionando blz.
      Meu problema é o seguinte: Imagine que existam 100 jogadores, eu estou em 70º. Eu quero mostrar o rankin com a minha colocação, mas é inviável criar uma lista com mais de 70 jogadores. O que eu quero é mostrar 10 colocações antes de mim e 10 depois de mim, ou seja, mostrar do 60º ao 80º colocado, mas não consigo fazer isso.
      No meu código criei até um while que identifica minha colocação (70º), mas não consegui criar um while que exiba somente esses 20 jogadores. Se alguém souber como resolver... fico muito grato. Segue o código:
      $sql = "SELECT *, SUM(Pontos) as TotalPontos, sum(Acerto_Exato) as Acertos FROM placares INNER JOIN jogadores ON placares.JogadorID = jogadores.id WHERE rodada = '$rodada' GROUP BY JogadorID ORDER BY TotalPontos DESC, Acerto_Exato DESC"; // Inicia o While de pontuação $result = mysqli_query($conn, $sql); $result2 = mysqli_query($conn, $sql); $i = 1; // Define 1 para o primeiro lugar no ranking         // Esse while identifica minha posição no ranking         while($r = mysqli_fetch_assoc($result2)) {         $ID_Jog        =    $r['JogadorID'];         $Pos        =    $totalArray[$r['JogadorID']] = $i++;         if($LoginID == $ID_Jog) {          $Minha_Colocacao = $Pos;              }          }                   while($row = mysqli_fetch_assoc($result)) { $ID_Jogador        =    $row['JogadorID']; $Posicao        =    $totalArray[$row['JogadorID']] = $i++."º "; $RankJogador    =    $row['nome']; $Pontos            =    $row['TotalPontos']; $AcertoExato    =    $row['Acertos']; // Verifica se o usuário é o jogador logado e marca um style diferente para ele. if($LoginID == $ID_Jogador) {     // Se for o mesmo jogador define um fundo colorido para a linha dele na tabela     $destaque = "style=\"background-color:#e6a527\"";     //$Pos = explode('º',$Posicao);         } else {     // Caso não seja zera a variável novamente.     unset($destaque); } echo " <div class=\"divTableRow\" $destaque> <div class=\"divTableCell\" align=\"center\">$Posicao</div> <div class=\"divTableCell\" >$RankJogador</div> <div class=\"divTableCell\" align=\"center\">$Pontos</div> <div class=\"divTableCell\" align=\"center\">$AcertoExato</div> </div>"; }  
       
    • Por MAKAVELIQUE
      Pessoal, imaginem a seguinte situação: o usuário A clica no botão enviar no mesmo instante que o usuário B, caso a ação do sql seja um comando update no mesmo campo, id=7 por exemplo e isso acontecer exatamente no mesmo instante, ocorre perca de dados? 
      <?php $update = "UPDATE br_gang SET i='$i', data= NOW() WHERE id='$id'"; $query = mysqli_query($update, $conn) or die (mysqli_error($conn)); if($update==true){ echo "<script>alert ('DADOS SALVOS COM SUCESSO, BOA SORTE!');</script>"; } ?> Se isso acontecer e ocorrer perca de dados, qual o procedimento possível para resolver o problema?
    • Por leardini
      Boa noite.
       
      Tenho uma consulta feita em PHP que mostra em uma table o resultado, e preciso que essa consulta o Valor do Campo "ID"  passe para uma Variável para que eu possa usar em outra consulta.
       
      Não consegui muita informação para o tipo de conexão que estou usando SQL Server e não My SQL, e é uns de meus primeiros códigos.
       
      Desde já agradeço a atenção!
       
      $rank = odbc_exec($connection, $verifica); if($pg == 1 or $pg == 0){ $i = 1; }elseif($pg > 1){ $i = $ini+1; } while($dados = odbc_fetch_array($rank)) { $id=$i+1; // AQUI OCORRE O PROBLEMA $idmomb = .$dados['id']; echo ($i % 2) ? "<tr>" : "<tr>"; echo '<td><center>'.$dados['ID'].'</center></td>'; echo '<td><center>'.$dados['MonsterName'].'</center></td>'; echo '<td><center>'.$dados['PublicDrop'].'</center></td>'; echo '<td><center>'.$dados['Quantity'].'</center></td>'; echo '</tr>'; $i++; } echo '</table>';  
×

Informação importante

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