Ir para conteúdo

POWERED BY:

Arquivado

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

osk

[Resolvido] Como ao usar LIMIT e UPTADE

Recommended Posts

Boa tarde,

 

Tenho a seguinte questão:

 

Preciso verificar alunos cadastrados em um banco de dados e ver se ele tem email ou não.

 

Estou tentando assim:

$quant = 1;
$seg = 4;

if (!isset($inicio)) {
$inicio = 0;
}

$verifica = Registry::get( 'dbemail' )->sql("SELECT * FROM alunos WHERE status='ativo' and checado='0' LIMIT $inicio, $quant ");

$r = mysql_fetch_assoc($verifica);
$id = $r['id'];

Registry::get( 'dbemail' )->sql("UPDATE alunos SET checado='1' WHERE id='$id'");

echo "<meta http-equiv='refresh' content='{$seg},URL=?inicio=".($inicio+1)."'>";

 

Coloquei o que era mais importante. Depois de verificar o aluno o sistema me manda um email com id e nome do aluno.

 

So que quando o sistema da UPTADE no aluno de que ele foi chegado e o sistema retoma para verificar o outro ele pula um aluno.

 

sei que o problema está entreo "LIMIT $inicio, $quant" o "UPDATE" e o "META REFRESH", porque quando tiro o "UPDATE" ele funciona sem pular aluno.

 

O que posso fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

boa tarde!

EDIT:

 

Seguinte, pelo que entendi você quer marcar a coluna checado com o valor 1 quando o aluno estiver com campo status = ativo, campo checado = 0 e existir email cadastrado para o aluno. Em relação ao limite eu não intendi, pra que você quer limitar essa atuallização?? Não dá pra fazer tudo de uma só vez??

segue a query para sua análise

 

UPDATE 
  `alunos` 
SET 
  `checado`= '1' 
WHERE 
  `id` 
IN (
  SELECT 
     `id` 
  FROM 
     `alunos` 
  WHERE 
     `status`='ativo' 
  AND 
     `checado`='0'
  AND `email` IS NOT NULL)

Compartilhar este post


Link para o post
Compartilhar em outros sites

uai como assim os dois juntos?

 

bom o UPDATE

 

UPDATE tabela SET colTab1 = 'valor1', colTab2 = 'colTab2' WHERE id=1;

bom desta forma eu estaria buscando um unico registro da tabela e mudando duas colunas dele, se não definir o 'where id=valor' ele muda todos da tabela

 

o LIMIT.:

seria o tatal de registros q quero posso iniciar a ver o segundo registro até o trigésimo

SELECT * FROM tabela LIMIT 2,30;

 

o LIMIT é para ser sempre o ultimo dado determinado na linha sql,

 

veja q posso usar o limit ñ só na select

UPDATE tabela SET colTab1 = 'valor1', colTab2 = 'colTab2' LIMIT 0,10;

aqui estou mudando os 10 primeiros registros do meu bd, não defini qual a linha para alterar, mas coloquei um limit

 

é simple de usar qualquer coisa é só pesquisar no GOOGLE, existe muito material na web

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Victor,

 

Preciso usar o LIMIT para que o sistema faça uma checagem a cada 4 segundos que é o tempo de envio do email para que não de pau no servidor ou algo assim, isso foi uma especificação da Locaweb.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, adicione o limite na query que eu te passei no final do select.

agora se você ker limitar a uma quantidade específica use a sintaxe assim, é mais simples

 

LIMIT 5 --pega 5 registros

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putz cara simplesmente perfeito funcionou ele não pula mais 1 aluno.

 

Vou até usar isto em outro script que fiz aqui.

 

vlw :clap:

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.