osk 0 Denunciar post Postado Março 23, 2011 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
Victor Cometti 8 Denunciar post Postado Março 23, 2011 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
Eduardo Giullyanny 1 Denunciar post Postado Março 23, 2011 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
osk 0 Denunciar post Postado Março 23, 2011 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
Victor Cometti 8 Denunciar post Postado Março 23, 2011 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
osk 0 Denunciar post Postado Março 23, 2011 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
Victor Cometti 8 Denunciar post Postado Março 23, 2011 disponha!! Espero que tenha entendido a query e não só copiado!! Compartilhar este post Link para o post Compartilhar em outros sites