Ir para conteúdo

POWERED BY:

Arquivado

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

Chico Macedo

[Resolvido] Update nos 50 primeiros registros

Recommended Posts

pessoal, estou com um problema, ja tentei resolver sozinho mas nao consegui, gostaria de uma ajuda...

 

quero fazer um update em uma tabela, no campo "dias" sendo que a contagem começa da data atual - 120 dias, e esse update que seja feito somente nos 50 primeiros registros da tabela que atendam a clausula where...

 

tentei usar limit 50 mas nao rola....

 

o campo postado é onde insiro a curdate() pra pegar a data atual -120

 

eis meu código:

 

q("UPDATE `bancodedados`.`tabela` SET `dias` = DATEDIFF( NOW( ) , postado ) -120 where divisao='PRO' and uid='%adv%' and data_exclusao='0000/00/00'");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta fazer com subquery

$subquery = "SELECT id FROM `bancodedados`.`tabela` WHERE divisao='PRO' and uid='%adv%' and data_exclusao='0000/00/00 LIMIT 50"; //ou 0,50 n sei =P

q("UPDATE `bancodedados`.`tabela` SET `dias` = DATEDIFF( NOW( ) , postado ) -120 WHERE id IN ($subquery)");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tu quer os 50 primeiros registros ordenados pelo que? id?

 

Da pra fazer uma gambiarra com php... eu acho =/

$result = mysql_query("SELECT id FROM `bancodedados`.`tabela` WHERE divisao='PRO' and uid='%adv%' and data_exclusao='0000/00/00 LIMIT 50"); //ou 0,50 n sei =P

$ids = array();
while ($row = mysql_fetch_array($result)) {
   $ids[] = $row['id'];
}

q("UPDATE `bancodedados`.`tabela` SET `dias` = DATEDIFF( NOW( ) , postado ) -120 WHERE id IN (".implode(',',$ids).")"); 

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, pelo id order by desc...

 

quero os mais antigos, pq tenho por exemplo 100 registros na tabela e so quero fazer o update nos 50 que aparecem na pagina, os demais continuam com os dias zerados, e so recebem um valor quando entram na pagina dos 50...

 

tipo, se um for deletado, sobe 1, e esse recebe o valor entre os 50..se ele for o 51, nao recebe, so se tiver entre os 50

 

pq esse é o tempo de dias que o registro fica no site, começa com -120 e o sistema deleta quando chega a 0...

 

mas se eu deixar o sql fazendo o update em todos, diariamente de 51 em diante les vao perdendo dias, sem aparecer na pagina de visualizacao..e quando aparecer, nao será mais 120 dias e sim bem menos

Compartilhar este post


Link para o post
Compartilhar em outros sites

$result = mysql_query("SELECT id_associado FROM `bancodedados`.`tabela` WHERE divisao='PRA' and uid='%teste%' and data_exclusao='0000/00/00' LIMIT 50");

$ids = array();   <<<<<< linha 24

while ($row = mysql_fetch_array($result) 
  $ids[] = $row['id_associado'];
}

q("UPDATE `bancodedados`.`tabela` SET `dias` = DATEDIFF( NOW( ) , postado ) -120 WHERE id_associado IN (".implode(',',$ids).")"); 

é esse codigo acima...

 

<? 
include "mysqlconecta.php";
include "mysqlexecuta.php";
include "funcoes.php";
$barraLink="cad_conteudo_dpa.php";
include "barra.php";
$meuNome=$_SESSION['meuNome'];

q("DELETE FROM tabela WHERE dias >= '8' and data_exclusao = '000/00/00'");


$result = mysql_query("SELECT id_associado FROM `bancodedados`.`tabela` WHERE divisao='PRA' and uid='%teste%' and data_exclusao='0000/00/00 LIMIT 50");

$ids = array();
while ($row = mysql_fetch_array($result) 
  $ids[] = $row['id_associado'];
}

q("UPDATE `bancodedados`.`tabela` SET `dias` = DATEDIFF( NOW( ) , postado ) -120 WHERE id_associado IN (".implode(',',$ids).")");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá...

Primeiro, quando postar código, utilize o BBCode [ c o d e ] e [ / c o d e ] (sem espaços).

 

Segundo, só para confirmar... estes são os código do arquivo cad_dpac.php, certo? Porque o erro está neste arquivo.

 

Agora vamos ao seu código

q("DELETE FROM tabela WHERE dias >= '8' and data_exclusao = '000/00/00'");

O que é este q? É alguma função que você desenvolveu? Poste-a.

 

include "mysqlconecta.php";
include "mysqlexecuta.php";
include "funcoes.php";
$barraLink="cad_conteudo_dpa.php";
include "barra.php";
$meuNome=$_SESSION['meuNome'];

Em algum destes arquivos você dá um session_start?

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites


<?
 

  # Definindo as variaveis
  $servidor = 'meuservidor.com.br';
  $usuario = 'fulano';
  $senha = '*****';
  $banco = 'bancodedados';

  # Conectando, escolhendo o banco de dados
   $link = mysql_connect($servidor, $usuario, $senha)
       or die('Não foi possivel conectar: ' . mysql_error());

   // print 'Conexão bem sucedida';

   mysql_select_db($banco) or die('Não pude selecionar o banco de dados');
   
?>     

 

esse é o codigo de conexao com o banco!

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?
function q($q){
mysql_query($q) or die (mysql_error());
}

function qf($qf,&$var){
$qf=mysql_query($qf) or die (mysql_error());
$var=mysql_fetch_object($qf);
}
function qv($qv,&$var){
$var=mysql_query($qv) or die (mysql_error());
}
function dataExt($var){//2006-11-25
$var=split('-',$var);
$varDia=date("l", mktime(0, 0, 0, $var[1], $var[2], $var[0]));
switch($varDia){
case "Monday":
$varDia="Segunda-Feira";
break; 
case "Tuesday":
$varDia = "Terça-Feira";
break; 
case "Wednesday":
$varDia = "Quarta-Feira";
break; 
case "Thursday":
$varDia = "Quinta-Feira";
break; 
case "Friday":
$varDia = "Sexta-Feira";
break; 
case "Saturday":
$varDia = "Sábado";
break; 
case "Sunday":
$varDia = "Domingo";
break; 
}
switch($var[1]) 
{
case "1":
$var[1] = "Janeiro";
break; 
case "2":
$var[1] = "Fevereiro";
break; 
case "3":
$var[1] = "Março";
break; 
case "4":
$var[1] = "Abril";
break; 
case "5":
$var[1] = "Maio";
break; 
case "6":
$var[1] = "Junho";
break; 
case "7":
$var[1] = "Julho";
break; 
case "8":
$var[1] = "Agosto";
break; 
case "9":
$var[1] = "Setembro";
break; 
case "10":
$var[1] = "Outubro";
break; 
case "11":
$var[1] = "Novembro";
break; 
case "12":
$var[1] = "Dezembro";
break; 
} 
echo $varDia.', '.$var[2].' de '.$var[1].' de '.$var[0];
unset($varDia);
}
function dataNormal($var){//2006-11-25
$var=split('-',$var);
echo $var[2].'/'.$var[1].'/'.$var[0];
}
?>

Minhas funções!

 

i no barra.php dou start na sessão!

 

<?
@session_start();
if(isset($_SESSION['meuId'])){
$meuId=$_SESSION['meuId'];

if($barraLink){
$pg=$barraLink;
} else {
$pg = $_SERVER['PHP_SELF'];
$final="";
$pg=split('/', $pg);
$pg=$pg[sizeof($pg)-1];
}

qf("select count(id_per) as t FROM permissoes pe
	inner join paginas pa 
	on pa.pagina='$pg' and pa.id_pag=pe.id_pag 
	where pe.id_admin=$meuId", $rs);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, eu copiei este seu código e não tive nenhum erro, até porque não consegui identificar nada de errado, em termos de sintaxe.

 

Carlos Eduardo

 

EDIT...

 

Falta um { no while e um ).

 

while ($row = mysql_fetch_array($result) // aqui faltou fechar parenteses e abrir chave.
   $ids[] = $row['id_associado'];
}

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.