tenho um site de leilão de um centavo, porem antes de divulgar gostaria de alterar a forma de contagem do tempo de leilão, pois atualmente, o cronometro é reiniciado ao seu tempo inicial a cada lance feito, exemplo, programo um leilão de 30 segundos, então aos 20 segundos alguém da um lance, então o cronometro volta aos 30 segundos. Então gostaria de alterar isso, pois se coloco um leilão de 1 hora por exemplo, toda vez que alguém der um lance ele voltara para 1 hora inicial e isso não é algo aceitável, minha ideia é que independente do tempo que eu coloque de leilão ele só comece a resetar o tempo para os ÚLTIMOS 30 segundos do leilão, ou seja, eu programarei 1 hora de leilão, os lances serão dados e o cronometro regressivamente continuara normalmente a diminuir, porem nos seus últimos 30 segundos de leilão ele começara a resetar para os seus últimos 30 segundos até que mais ninguém de lances e o leilão se encerro, ou seja, faltando 20 segundos, alguém da um lance, então retorna-se aos últimos 30 segundos, independente de qual era o tempo inicial do leilão, seja la 1 ou 10 horas inicialmente.
o que devo alterar no script para que isso passe a funcionar como expliquei:
<?php
require_once "../application.php";
if (!isset($_GET['ids']) || empty($_GET['ids'])) {
INNER JOIN " . TB_PRODUTO . " p ON l.idProduto = p.idProduto
WHERE
l.idLeilao IN (" . $_GET['ids'] . ")
ORDER BY l.idLeilao ASC
");
$now = date(DATE_FORMAT_SQL);
while ($leilao = $leiloes->fetch_assoc()) {
$data = array();
$data['id'] = $leilao['idLeilao'];
$data['inicio'] = 'iniciado';
$lances = query("
SELECT l.idUsuario, l.dataLance, u.usuario, (SELECT count(*) FROM " . TB_LANCE . " WHERE idLeilao = " . $leilao['idLeilao'] . " GROUP BY idLeilao) AS num_lances
FROM " . TB_LANCE . " l
LEFT JOIN " . TB_USUARIO . " u ON u.idUsuario = l.idUsuario
Question
stive128
Olá camaradas,
tenho um site de leilão de um centavo, porem antes de divulgar gostaria de alterar a forma de contagem do tempo de leilão, pois atualmente, o cronometro é reiniciado ao seu tempo inicial a cada lance feito, exemplo, programo um leilão de 30 segundos, então aos 20 segundos alguém da um lance, então o cronometro volta aos 30 segundos. Então gostaria de alterar isso, pois se coloco um leilão de 1 hora por exemplo, toda vez que alguém der um lance ele voltara para 1 hora inicial e isso não é algo aceitável, minha ideia é que independente do tempo que eu coloque de leilão ele só comece a resetar o tempo para os ÚLTIMOS 30 segundos do leilão, ou seja, eu programarei 1 hora de leilão, os lances serão dados e o cronometro regressivamente continuara normalmente a diminuir, porem nos seus últimos 30 segundos de leilão ele começara a resetar para os seus últimos 30 segundos até que mais ninguém de lances e o leilão se encerro, ou seja, faltando 20 segundos, alguém da um lance, então retorna-se aos últimos 30 segundos, independente de qual era o tempo inicial do leilão, seja la 1 ou 10 horas inicialmente.
o que devo alterar no script para que isso passe a funcionar como expliquei:
<?php
require_once "../application.php";
if (!isset($_GET['ids']) || empty($_GET['ids'])) {
exit();
}
$result = array();
$leiloes = query("
SELECT l.idLeilao, l.dataInicio, l.periodo, p.preço
FROM " . TB_LEILAO . " l
INNER JOIN " . TB_PRODUTO . " p ON l.idProduto = p.idProduto
WHERE
l.idLeilao IN (" . $_GET['ids'] . ")
ORDER BY l.idLeilao ASC
");
$now = date(DATE_FORMAT_SQL);
while ($leilao = $leiloes->fetch_assoc()) {
$data = array();
$data['id'] = $leilao['idLeilao'];
$data['inicio'] = 'iniciado';
$lances = query("
SELECT l.idUsuario, l.dataLance, u.usuario, (SELECT count(*) FROM " . TB_LANCE . " WHERE idLeilao = " . $leilao['idLeilao'] . " GROUP BY idLeilao) AS num_lances
FROM " . TB_LANCE . " l
LEFT JOIN " . TB_USUARIO . " u ON u.idUsuario = l.idUsuario
WHERE
idLeilao = " . $leilao['idLeilao'] . "
ORDER BY l.idLance DESC
LIMIT 1
");
if ($lances->num_rows > 0) {
$lance = $lances->fetch_assoc();
$num_lances = $lance['num_lances'];
$data['usuario'] = $lance['usuario'];
$_idUsuario = $lance['idUsuario'];
$dataLance = $lance['dataLance'];
}
else {
$num_lances = 0;
$data['usuario'] = ' ';
}
$preço = str_pad($num_lances, 3, "0", STR_PAD_LEFT);
$preço = substr($preço, 0, -2) . "," . substr($preço, -2);
$data['preço'] = $preço;
$economia = number_format($leilao['preço'], 2, ".", "");
$economia = 100 - number_format((str_replace(",", ".", $preço) * 100) / $economia, 5, ".", "");
if (dateCompare($now, $leilao['dataInicio'])) {
if ($num_lances > 0) {
if (dateCompare($dataLance, $leilao['dataInicio'])) {
$tempo = timeDiff($dataLance, $now);
}
else {
$tempo = timeDiff($leilao['dataInicio'], $now);
}
}
else {
$tempo = timeDiff($leilao['dataInicio'], $now);
}
$tempo = timeDiff(date(DATE_FORMAT_SQL, mktime(0, 0, $tempo)), date(DATE_FORMAT_SQL, mktime(0, 0, $leilao['periodo'])));
if ($tempo > 0) {
$tempo = date(TIME_FORMAT, mktime(0, 0, $tempo, 0, 0, 0));
}
else {
$tempo = 'ARREMATADO!';
//if ($num_lances > 0) {
//Arrematar($leilao['idLeilao'],$_idUsuario,$preço);
/* $arrematado = query("SELECT idLeilao FROM ".TB_ARREMATADO." WHERE idLeilao = ".$leilao['idLeilao']."");
if ($arrematado->num_rows == 0) {
query("INSERT IGNORE ".TB_ARREMATADO."(idLeilao,idUsuario,dataArremate,valor) VALUES('".$leilao['idLeilao']."','".$_idUsuario."','".date(DATE_FORMAT_SQL)."','".@str_replace(",",".",$preço)."')");
$bonificados = array();
$bonus = query("
SELECT l.idLance, l.idUsuario
FROM tbLance l
WHERE
l.idLeilao = ".$leilao['idLeilao']."
ORDER BY l.idLance DESC
");
while($_bonus = $bonus->fetch_assoc()) {
$bonificados[$_bonus['idUsuario']] = $_bonus['idUsuario'];
if (count($bonificados) == 3) {
break;
}
}
$i = 0;
foreach ($bonificados as $id => $val) {
if ($i > 0) {
switch ($i) {
case 1:
$bonus = 20;
break;
case 2:
$bonus = 10;
break;
}
query("UPDATE ".TB_CREDITO_ATUAL." SET numero = numero + ".$bonus." WHERE idUsuario = ".$id."");
}
$i++;
}
query("DELETE FROM ".TB_LANCE_AUTOMATICO." WHERE idLeilao = '".$leilao['idLeilao']."'");
query("DELETE FROM ".TB_ROBOT." WHERE idLeilao = '".$leilao['idLeilao']."'");
} */
//}
}
}
else {
$data['inicio'] = date(DATE_FORMAT, strtotime($leilao['dataInicio']));
$tempo = date(TIME_FORMAT, mktime(0, 0, $leilao['periodo']));
}
$data['tempo'] = $tempo;
$data['economia'] = number_format($economia, 2, ",", "");
$result['leilao'][] = $data;
}
$return = "";
for ($i = 0; $i < count($result['leilao']); $i++) {
$return .= implode("|", $result['leilao'][$i]) . ';';
}
echo substr($return, 0, -1);
?>
Link to comment
Share on other sites
0 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.