Проблема с отображением счетчика времени отсчета на сайте! смысл в том, что в админке устанавливается дата времени начала и окончания продажи товаров, но в этом коде отображается только отсчет одного товара, а другие стоят на месте!
вот код:
Свернутый текст
$pagination = new pagination();
$pagination->createPaging($queryString,10);
$resultSet = $pagination->resultpage;
if(mysql_num_rows($resultSet)>0)
{
while($row = mysql_fetch_array($resultSet))
{
if($type=="P" || $row["timeleft"] > "00:01:00")
{
$coupon_value = $row["coupon_value"];
?>
<div class="times_display_cl">
<!--Countdown Timer starts here-->
<script type="text/javascript">
dateFuture = new Date('<?php echo date("D M d Y H:i:s", strtotime($row["coupon_enddate"])); ?>');
//pass the date format similar to date function
function gettimes(){
var url = '/gettimestamp.php';
$.post(url,function(e){
document.getElementById("generaldate").innerHTML=e;
});
}
gettimes();
function GetCount(){
gettimes();
var dateNow = new Date(document.getElementById("generaldate").innerHTML); //grab current date
var amount = dateFuture.getTime() - dateNow.getTime(); //calc milliseconds between dates
delete dateNow;
var days=0;var hours=0;var mins=0;var secs=0;var nodays="";var nohrs="";var nomins="";
var amount = Math.floor(amount/1000);//kill the "milliseconds" so just secs
var days=Math.floor(amount/86400);//days
var days = days*24;
var amount=amount%86400;
var hours=days + Math.floor(amount/3600);//hours
var amount=amount%3600;
var mins=Math.floor(amount/60);//minutes
var amount=amount%60;
var secs=Math.floor(amount);//seconds
if(days == 0 && hours == 0 && mins == 0 && secs == 0 )
{
window.location='<?php echo DOCROOT; ?>';exit;
}
if(days != 0 || hours != 0)
{
nohrs = hours +((hours!=1)?"":"");
if(nohrs < 10 && nohrs >= 0){nohrs = '0'+ nohrs;}
//alert(nohrs);
document.getElementById('tot_hrs2').innerHTML=nohrs;
}
else
{
document.getElementById('tot_hrs2').innerHTML='';
document.getElementById('hrs').innerHTML='';
}
if(days != 0 || hours != 0 || mins != 0)
{
nomins = mins +((mins!=1)?"":"");
if(nomins < 10 && nomins >= 0){nomins = '0'+ nomins;}
//alert(nomins);
document.getElementById('tot_mins2').innerHTML=nomins;
}
else
{
document.getElementById('tot_mins2').innerHTML='';
document.getElementById('mins').innerHTML='';
}
if(secs < 10 && secs >= 0){secs = '0'+ secs;}
document.getElementById('tot_secs2').innerHTML = secs;
setTimeout("GetCount()", 1000);
}
window.onload=GetCount;//call when everything has loaded
</script>
<?[SPAN=darling]php[/SPAN] //display timeleft page onload
$timeleft = dateDiff($row["coupon_enddate"],date('Y-m-d H:i:s' ));
if(isset($timeleft['days']))
{
$default_hr = $timeleft['days'] * 24; //calculate days into hours
if(isset($timeleft['hours']))
$default_hr = $default_hr + $timeleft['hours'];
}
else
$default_hr = '';
if(isset($timeleft['minutes']))
{
$default_min = $timeleft['minutes'];
}
else
$default_min = '';
if(isset($timeleft['seconds']))
{
$default_sec = $timeleft['seconds'];
}
else
$default_sec = '';
?>
<h2>
<span class="display_time_cl_sym"></span>
<span class="display_time_cl" id="tot_hrs2"><?[SPAN=darling]php[/SPAN] echo $default_hr; ?></span>
<span class="display_time_cl" id="hrs"> : </span>
<span class="display_time_cl" id="tot_mins2"><?[SPAN=darling]php[/SPAN] echo $default_min; ?></span>
<span class="display_time_cl" id="mins"> : </span>
<span class="display_time_cl" id="tot_secs2"><?[SPAN=darling]php[/SPAN] echo $default_sec; ?></span>
</h2>
<p><span id="generaldate" style="display:none;"></span></p>
</div>
<?[SPAN=darling]php[/SPAN]
} //end of if
}
echo '<table border="0" width="400" align="center" class="clr">';
echo '<tr><td align="center">';
$pagination->displayPaging();
echo '</td></tr>';
echo '</table>';
}
else
{?>
<div class="no_data"><?[SPAN=darling]php[/SPAN] echo $language['no_deals_avail']; ?></div>
<?[SPAN=darling]php[/SPAN]
}
?>
Спустя 5 часов, 5 минут, 56 секунд (26.08.2011 - 12:25) Architect написал(а):
Ребята, может предложите варианты?
Спустя 10 минут, 40 секунд (26.08.2011 - 12:36) Игорь_Vasinsky написал(а):
Меня вот этот кусок смущает
Он выводит статику(без JS);
<h2>
<span class="display_time_cl_sym"></span>
<span class="display_time_cl" id="tot_hrs2">
<?php echo $default_hr; ?></span>
<span class="display_time_cl" id="hrs"> : </span>
<span class="display_time_cl" id="tot_mins2">
<?php echo $default_min; ?></span>
<span class="display_time_cl"id="mins"> :</span>
<span class="display_time_cl" id="tot_secs2">
<?php echo $default_sec; ?></span>
</h2>
Он выводит статику(без JS);
Спустя 8 минут, 10 секунд (26.08.2011 - 12:44) sharki написал(а):
Спустя 50 минут, 8 секунд (26.08.2011 - 13:34) Architect написал(а):
Игорь_Vasinsky, дело в том, что на главной странице отображаются продажи товаров, у каждого есть счетчик отсчета времени, этот код работает только на один товар, а остальные счетчики на товары не работают, т.е. стоят на месте...
Спустя 5 минут, 34 секунды (26.08.2011 - 13:40) Architect написал(а):
sharki, может предложишь варианты... как это написать...?
Спустя 1 час, 25 минут, 56 секунд (26.08.2011 - 15:05) sharki написал(а):
Architect
Там уже все за тебя написано, тебе надо только скопипастить.
PS там JS
Там уже все за тебя написано, тебе надо только скопипастить.
PS там JS
Спустя 14 минут, 51 секунда (26.08.2011 - 15:20) ИНСИ написал(а):
Architect у вас привязка идет к одному ID для всех, поэтому только для одного купона работает код. Попробуйте так:
Свернутый текст
<?
$pagination = new pagination();
$pagination->createPaging($queryString,10);
$resultSet = $pagination->resultpage;
if(mysql_num_rows($resultSet)>0)
{
$number = 1;
while($row = mysql_fetch_array($resultSet))
{
if($type=="P" || $row["timeleft"] > "00:01:00")
{
++$number;
$coupon_value = $row["coupon_value"];
?>
<div class="times_display_cl">
<!--Countdown Timer starts here-->
<script type="text/javascript">
dateFuture = new Date('<?php echo date("D M d Y H:i:s", strtotime($row["coupon_enddate"])); ?>');
//pass the date format similar to date function
function gettimes(){
var url = '/gettimestamp.php';
$.post(url,function(e){
document.getElementById("generaldate_<?=$number?>").innerHTML=e;
});
}
gettimes();
function GetCount(){
gettimes();
var dateNow = new Date(document.getElementById("generaldate_<?=$number?>").innerHTML); //grab current date
var amount = dateFuture.getTime() - dateNow.getTime(); //calc milliseconds between dates
delete dateNow;
var days=0;var hours=0;var mins=0;var secs=0;var nodays="";var nohrs="";var nomins="";
var amount = Math.floor(amount/1000);//kill the "milliseconds" so just secs
var days=Math.floor(amount/86400);//days
var days = days*24;
var amount=amount%86400;
var hours=days + Math.floor(amount/3600);//hours
var amount=amount%3600;
var mins=Math.floor(amount/60);//minutes
var amount=amount%60;
var secs=Math.floor(amount);//seconds
if(days == 0 && hours == 0 && mins == 0 && secs == 0 )
{
window.location='<?php echo DOCROOT; ?>';exit;
}
if(days != 0 || hours != 0)
{
nohrs = hours +((hours!=1)?"":"");
if(nohrs < 10 && nohrs >= 0){nohrs = '0'+ nohrs;}
//alert(nohrs);
document.getElementById('tot_hrs2_<?=$number?>').innerHTML=nohrs;
}
else
{
document.getElementById('tot_hrs2_<?=$number?>').innerHTML='';
document.getElementById('hrs_<?=$number?>').innerHTML='';
}
if(days != 0 || hours != 0 || mins != 0)
{
nomins = mins +((mins!=1)?"":"");
if(nomins < 10 && nomins >= 0){nomins = '0'+ nomins;}
//alert(nomins);
document.getElementById('tot_mins2_<?=$number?>').innerHTML=nomins;
}
else
{
document.getElementById('tot_mins2_<?=$number?>').innerHTML='';
document.getElementById('mins_<?=$number?>').innerHTML='';
}
if(secs < 10 && secs >= 0){secs = '0'+ secs;}
document.getElementById('tot_secs2_<?=$number?>').innerHTML = secs;
setTimeout("GetCount()", 1000);
}
window.onload=GetCount;//call when everything has loaded
</script>
<?php //display timeleft page onload
$timeleft = dateDiff($row["coupon_enddate"],date('Y-m-d H:i:s' ));
if(isset($timeleft['days']))
{
$default_hr = $timeleft['days'] * 24; //calculate days into hours
if(isset($timeleft['hours']))
$default_hr = $default_hr + $timeleft['hours'];
}
else
$default_hr = '';
if(isset($timeleft['minutes']))
{
$default_min = $timeleft['minutes'];
}
else
$default_min = '';
if(isset($timeleft['seconds']))
{
$default_sec = $timeleft['seconds'];
}
else
$default_sec = '';
?>
<h2>
<span class="display_time_cl_sym"></span>
<span class="display_time_cl" id="tot_hrs2_<?=$number?>"><?php echo $default_hr; ?></span>
<span class="display_time_cl" id="hrs_<?=$number?>"> : </span>
<span class="display_time_cl" id="tot_mins2_<?=$number?>"><?php echo $default_min; ?></span>
<span class="display_time_cl" id="mins_<?=$number?>"> : </span>
<span class="display_time_cl" id="tot_secs2_<?=$number?>"><?php echo $default_sec; ?></span>
</h2>
<p><span id="generaldate_<?=$number?>" style="display:none;"></span></p>
</div>
<?php
} //end of if
}
echo '<table border="0" width="400" align="center" class="clr">';
echo '<tr><td align="center">';
$pagination->displayPaging();
echo '</td></tr>';
echo '</table>';
}
else
{?>
<div class="no_data"><?php echo $language['no_deals_avail']; ?></div>
<?php
}
?>
Спустя 3 часа, 45 минут, 57 секунд (26.08.2011 - 19:06) Architect написал(а):
INSIDIOUS, код я попробовал, но без изменений...
Спустя 1 час, 53 минуты, 51 секунда (26.08.2011 - 21:00) Architect написал(а):
может есть у кого-то еще какие-то варианты?
Спустя 13 часов, 41 минута, 42 секунды (27.08.2011 - 10:42) killer8080 написал(а):
Код кривой до безобразия. Вот хотя бы это что за бред
Один и тот же кусок JS кода выводиться многократно, в цикле пагинации, объявляются одни и те же функции в цикле :blink: Странно что это вообще работает. Да ещё и аяксом раз в секунду стучаться на сервер, чтоб узнать время - полный изврат и бессмысленная нагрузка на сервер! Тут нужно не исправлять, а все выкинуть и написать с нуля!
nohrs = hours +((hours!=1)?"":"");
Один и тот же кусок JS кода выводиться многократно, в цикле пагинации, объявляются одни и те же функции в цикле :blink: Странно что это вообще работает. Да ещё и аяксом раз в секунду стучаться на сервер, чтоб узнать время - полный изврат и бессмысленная нагрузка на сервер! Тут нужно не исправлять, а все выкинуть и написать с нуля!
Спустя 1 час, 49 минут, 36 секунд (27.08.2011 - 12:31) killer8080 написал(а):
вот накидал вариант (могут быть ошибки)
Свернутый текст
<?php
$pagination = new pagination();
$pagination->createPaging($queryString,10);
$resultSet = $pagination->resultpage;
if(mysql_num_rows($resultSet)>0)
{
$kupons = array();
$i = 0;
while($row = mysql_fetch_assoc($resultSet))
{
if($type=="P" || $row["timeleft"] > "00:01:00")
{
$coupon_value = $row["coupon_value"];
$kupons[]= strtotime($row["coupon_enddate"]) - time();
?>
<div class="times_display_cl">
<?php //display timeleft page onload
$timeleft = dateDiff($row["coupon_enddate"],date('Y-m-d H:i:s' ));
if(isset($timeleft['days']))
{
$default_hr = $timeleft['days'] * 24; //calculate days into hours
if(isset($timeleft['hours']))
$default_hr = $default_hr + $timeleft['hours'];
}
else
$default_hr = '';
if(isset($timeleft['minutes']))
{
$default_min = $timeleft['minutes'];
}
else
$default_min = '';
if(isset($timeleft['seconds']))
{
$default_sec = $timeleft['seconds'];
}
else
$default_sec = '';
?>
<h2>
<span class="display_time_cl_sym"></span>
<span class="display_time_cl" id="time_line_<?php echo $i;?>">
<?php echo $default_hr . ' : ' . $default_min . ' : ' . $default_sec; ?>
</span>
</h2>
</div>
<?php
$i++;
} //end of if
}
if(count($kupons) > 0):
?>
<script type="text/javascript">
<!--
var kupons = {
times : [<?php echo implode(', ', $kupons); ?>],
count : function(){
var continueCount = false;
for(var i = 0; i < this.times.length; i++){
this.times[i]--;
if(this.times[i] >= 0){
continueCount = true;
document.getElementById("time_line_" + i).innerHTML = this.getTimeString(this.times[i]);
}
}
if(!continueCount)
clearInterval(this.timer);
},
getTimeString : function(time){
var days = Math.floor(time / 86400),
hours = this.roundTime(Math.floor(time / 3600) % 24),
minutes = this.roundTime(Math.floor(time / 60) % 60),
seconds = this.roundTime(time % 60);
return (days > 0 ? "Дней: " + days + " <br />" : "") + hours + ":" + minutes + ":" + seconds;
},
roundTime : function(time){
return time > 9 ? time : "0" + time;
},
timer : setInterval("kupons.count()", 1000);
}
//-->
</script>
<?php
endif;
echo '<table border="0" width="400" align="center" class="clr">';
echo '<tr><td align="center">';
$pagination->displayPaging();
echo '</td></tr>';
echo '</table>';
}
else
{?>
<div class="no_data"><?php echo $language['no_deals_avail']; ?></div>
<?php
}
?>
Спустя 8 часов, 46 минут, 44 секунды (27.08.2011 - 21:18) Architect написал(а):
все равно не работает...((
Спустя 14 часов, 59 минут, 11 секунд (28.08.2011 - 12:17) killer8080 написал(а):
Architect
покажи выходной html.
покажи выходной html.
Спустя 1 день, 3 часа, 44 минуты, 52 секунды (29.08.2011 - 16:02) Architect написал(а):
ошибка исправлена!
Спустя 4 часа, 39 минут, 41 секунда (29.08.2011 - 20:42) killer8080 написал(а):
Architect
я имел ввиду не то что было, а с моим вариантом, раз говоришь что он не работает.
Изначальный код не корректный по многим пунктам, его нужно не исправлять, а переписывать. Как я уже говорил, нельзя в цикле выводить JS код с декларациями функций - это грубая ошибка. К тому же еще и в html образуется множество элементов с одинаковым id.
Измени код на тот что я дал выше, и если он не работает, покажи html.
я имел ввиду не то что было, а с моим вариантом, раз говоришь что он не работает.
Изначальный код не корректный по многим пунктам, его нужно не исправлять, а переписывать. Как я уже говорил, нельзя в цикле выводить JS код с декларациями функций - это грубая ошибка. К тому же еще и в html образуется множество элементов с одинаковым id.
Измени код на тот что я дал выше, и если он не работает, покажи html.