09.04.2010, 14:22
|
Новичок на форуме
|
|
Регистрация: 09.04.2010
Сообщений: 5
|
|
Как поместить javascript в php цикл do{} while()
Вот такой вот код:
$actionr = mysql_query("SELECT name, description, newprice, oldprice, time FROM action");
$action = mysql_fetch_array ($actionr);
$count = "countdown";
$counter = "counter";
do {
echo "<table width='100%' height='182' border='0' cellpadding='10' cellspacing='0'>
<tr>
<td valign='top' class='kartinka'><img src='img/sapogs.jpg' width='135' height='135' align='left' class='kartinka'>
<p><strong>$action[name]</strong>, $action[description]</p><p>За <span class='redtext'><strong>$action[newprice]</strong></span> рублей вместо $action[oldprice] рублей.</p>
<div>
<DIV align='center' id='$count'></DIV>";
print "<script type=\"text/javascript\">
D = new Date();
time_diff = (Date.UTC($action[time]) - D.getTime()) / 1000;
function $count() {
work_number = time_diff--;
days = Math.floor(work_number / 86400);
work_number -= days * 86400;
hours = Math.floor(work_number / 3600);
work_number -= hours * 3600;
minutes = Math.floor(work_number / 60);
work_number -= minutes * 60;
seconds = Math.floor(work_number % 60);
days = (days < 10) ? \"0\"+days : days;
hours = (hours < 10) ? \"0\"+hours : hours;
minutes = (minutes < 10) ? \"0\"+minutes : minutes;
seconds = (seconds < 10) ? \"0\"+seconds : seconds;
values = [
declOfNum(days, [\"день\", \"дня\", \"дней\"]),
declOfNum(hours, [\"час\", \"часа\", \"часов\"]),
declOfNum(minutes, [\"минута\", \"минуты\", \"минут\"]),
declOfNum(seconds, [\"секунда\", \"секунды\", \"секунд\"])
];
document.getElementById('$counter').innerHTML = values.join(\" \") + \".\";
}
function declOfNum(number, titles) {
cases = [2, 0, 1, 1, 1, 2];
return \"<b>\" + number + \"</b> \" + titles[ (number%100>4 && number%100<20)? 2 : cases[Math.min(number%10, 5)] ];
}
</script>";
echo "<body onload='$count()'>
<div id='wrapper'>
осталось
<div id='$counter'></div>
</div>";
print "<script type=\"text/javascript\">
setInterval(\"$count()\", 1000);
</script>";
echo "</div>
</td>
</tr>
</table>
<p></p>";
$count = "countdowntwo";
$counter = "countertwo";
}
while ($action = mysql_fetch_array ($actionr));
Первый блок работает второй нет, ? - подскажите как сделать чтоб заработал второй, (в базе всего две записи), а также третий и т.д.
P.S. Только умоляю, не отвечайте терминами и заумными словечками понятными только программистам, они и без Вас все хорошо знают.
|
|
09.04.2010, 14:32
|
|
Матрос
|
|
Регистрация: 04.04.2008
Сообщений: 6,246
|
|
для общего ознакомления
Сообщение от galap
|
P.S. Только умоляю, не отвечайте терминами и заумными словечками понятными только программистам, они и без Вас все хорошо знают.
|
а как отвечать?
если вы не программист, и не в теме, то для вас есть раздел "работа" форума.
для отладки JS-используйте firebug
также советую глянутьна исхдны код страницы, и посмотреть сгенерировалось там именно то, что вам нужно, в принципе
|
|
09.04.2010, 14:39
|
Новичок на форуме
|
|
Регистрация: 09.04.2010
Сообщений: 5
|
|
Оказывается, в принципе все работает (не хватило терпения подождать секунду), второй блок появляется с задержкой в секунду.
Но, дело в том что оба блока отсчитывают одинаковое время , хотя дата у них разная.
P.S. Я всегда думал, что форумы нужны для того чтобы те кто в теме помогали тем кто еще не в теме, потомучто те кто в теме не задают вопросы а отвечают на них (Если бы я был совсем не в теме то не задавал бы подобных вопросов). Просто помочь не влазяя в мою личную жизнь, можно?
|
|
09.04.2010, 14:53
|
Новичок на форуме
|
|
Регистрация: 09.04.2010
Сообщений: 5
|
|
Всем спасибо, разобрался.
Для тех кто не в теме:
<?php
$actionr = mysql_query("SELECT name, description, newprice, oldprice, time FROM action");
$action = mysql_fetch_array ($actionr);
$count = "countdown";
$counter = "counter";
$date = "D";
$time = "time";
do {
echo "<table width='100%' height='182' border='0' cellpadding='10' cellspacing='0'>
<tr>
<td valign='top' class='kartinka'><img src='img/sapogs.jpg' width='135' height='135' align='left' class='kartinka'>
<p><strong>$action[name]</strong>, $action[description]</p><p>За <span class='redtext'><strong>$action[newprice]</strong></span> рублей вместо $action[oldprice] рублей.</p>
<div>
<DIV align='center' id='$count'></DIV>";
print "<script type=\"text/javascript\">
$date = new Date();
$time = (Date.UTC($action[time]) - $date.getTime()) / 1000;
function $count() {
work_number = $time--;
days = Math.floor(work_number / 86400);
work_number -= days * 86400;
hours = Math.floor(work_number / 3600);
work_number -= hours * 3600;
minutes = Math.floor(work_number / 60);
work_number -= minutes * 60;
seconds = Math.floor(work_number % 60);
days = (days < 10) ? \"0\"+days : days;
hours = (hours < 10) ? \"0\"+hours : hours;
minutes = (minutes < 10) ? \"0\"+minutes : minutes;
seconds = (seconds < 10) ? \"0\"+seconds : seconds;
values = [
declOfNum(days, [\"день\", \"дня\", \"дней\"]),
declOfNum(hours, [\"час\", \"часа\", \"часов\"]),
declOfNum(minutes, [\"минута\", \"минуты\", \"минут\"]),
declOfNum(seconds, [\"секунда\", \"секунды\", \"секунд\"])
];
document.getElementById('$counter').innerHTML = values.join(\" \") + \".\";
}
function declOfNum(number, titles) {
cases = [2, 0, 1, 1, 1, 2];
return \"<b>\" + number + \"</b> \" + titles[ (number%100>4 && number%100<20)? 2 : cases[Math.min(number%10, 5)] ];
}
</script>";
echo "<body onload='$count()'>
<div id='wrapper'>
осталось
<div id='$counter'></div>
</div>";
print "<script type=\"text/javascript\">
setInterval(\"$count()\", 1000);
</script>";
echo "</div>
</td>
</tr>
</table>
<p></p>";
$count = "countdowntwo";
$counter = "countertwo";
$date = "T";
$time = "timer";
}
while ($action = mysql_fetch_array ($actionr));
?>
|
|
09.04.2010, 14:57
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от galap
|
P.S. Я всегда думал, что форумы нужны для того чтобы те кто в теме помогали тем кто еще не в теме, потомучто те кто в теме не задают вопросы а отвечают на них (Если бы я был совсем не в теме то не задавал бы подобных вопросов). Просто помочь не влазяя в мою личную жизнь, можно?
|
Вы ошибались. http://phpclub.ru/faq/WhyForum
|
|
|
|