Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как поместить javascript в php цикл do{} while() (https://javascript.ru/forum/misc/8706-kak-pomestit-javascript-v-php-cikl-do%7B%7D-while.html)

galap 09.04.2010 14:22

Как поместить 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. Только умоляю, не отвечайте терминами и заумными словечками понятными только программистам, они и без Вас все хорошо знают.

Gvozd 09.04.2010 14:32

для общего ознакомления
Цитата:

Сообщение от galap
P.S. Только умоляю, не отвечайте терминами и заумными словечками понятными только программистам, они и без Вас все хорошо знают.

а как отвечать?
если вы не программист, и не в теме, то для вас есть раздел "работа" форума.
для отладки JS-используйте firebug
также советую глянутьна исхдны код страницы, и посмотреть сгенерировалось там именно то, что вам нужно, в принципе

galap 09.04.2010 14:39

Оказывается, в принципе все работает (не хватило терпения подождать секунду), второй блок появляется с задержкой в секунду.

Но, дело в том что оба блока отсчитывают одинаковое время , хотя дата у них разная.

P.S. Я всегда думал, что форумы нужны для того чтобы те кто в теме помогали тем кто еще не в теме, потомучто те кто в теме не задают вопросы а отвечают на них (Если бы я был совсем не в теме то не задавал бы подобных вопросов). Просто помочь не влазяя:) в мою личную жизнь, можно?

galap 09.04.2010 14:53

Всем спасибо, разобрался.
Для тех кто не в теме:

<?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));
?>

Kolyaj 09.04.2010 14:57

Цитата:

Сообщение от galap
P.S. Я всегда думал, что форумы нужны для того чтобы те кто в теме помогали тем кто еще не в теме, потомучто те кто в теме не задают вопросы а отвечают на них (Если бы я был совсем не в теме то не задавал бы подобных вопросов). Просто помочь не влазяя в мою личную жизнь, можно?

Вы ошибались. http://phpclub.ru/faq/WhyForum


Часовой пояс GMT +3, время: 01:44.