Как поместить 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. Только умоляю, не отвечайте терминами и заумными словечками понятными только программистам, они и без Вас все хорошо знают. |
для общего ознакомления
Цитата:
если вы не программист, и не в теме, то для вас есть раздел "работа" форума. для отладки JS-используйте firebug также советую глянутьна исхдны код страницы, и посмотреть сгенерировалось там именно то, что вам нужно, в принципе |
Оказывается, в принципе все работает (не хватило терпения подождать секунду), второй блок появляется с задержкой в секунду.
Но, дело в том что оба блока отсчитывают одинаковое время , хотя дата у них разная. P.S. Я всегда думал, что форумы нужны для того чтобы те кто в теме помогали тем кто еще не в теме, потомучто те кто в теме не задают вопросы а отвечают на них (Если бы я был совсем не в теме то не задавал бы подобных вопросов). Просто помочь не влазяя:) в мою личную жизнь, можно? |
Всем спасибо, разобрался.
Для тех кто не в теме: <?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)); ?> |
Цитата:
|
Часовой пояс GMT +3, время: 23:02. |