Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.09.2017, 23:52
MRJ MRJ вне форума
Интересующийся
Отправить личное сообщение для MRJ Посмотреть профиль Найти все сообщения от MRJ
 
Регистрация: 03.03.2014
Сообщений: 25

Очень простая задачка )
В шаблоне страницы есть повторяющиеся элементы, количество которых php выводит произвольно, в зависимости от базы данных.

Всего <span>480</span>

<span>115</span>
<span>25</span>
<span>340</span>

Как можно подсчитать сумму всех этих значений и вывести в элементе который стоит выше, как показано
Ответить с цитированием
  #2 (permalink)  
Старый 12.09.2017, 01:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

MRJ,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>

  <script>
window.addEventListener('DOMContentLoaded', function() {
  var span = document.querySelectorAll('span');
  span[0].textContent =  [].reduce.call( span, function(sum, el, i) {
         return sum + (el.textContent * !!i||0)
  },0);
    });
  </script>
</head>

<body>
 <span>abc</span>
 <span>115</span>
 <span>25</span>
 <span>340</span>


</body>
</html>

Последний раз редактировалось рони, 12.09.2017 в 01:45.
Ответить с цитированием
  #3 (permalink)  
Старый 12.09.2017, 03:12
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

MRJ,
а что самому серверу это неизвестно или лень сделать?
Ответить с цитированием
  #4 (permalink)  
Старый 12.09.2017, 12:24
MRJ MRJ вне форума
Интересующийся
Отправить личное сообщение для MRJ Посмотреть профиль Найти все сообщения от MRJ
 
Регистрация: 03.03.2014
Сообщений: 25

laimas, php выводит из таблицы данные столбца. Но в этом столбце данные лежат не в готовом числовом виде, а ввиде ключей, там повторяющиеся значения адресов картинок. Как обработать этот массив данных и подсчитать количество картинок в каждой строке столбца я уже знаю. Только php выводит это все через while и там я уже путаюсь, не могу понять как вычислить общее число картинок в выдаче.


$res = dbquery("SELECT * FROM photos WHERE user=user ORDER BY created DESC LIMIT 50");
if (dbrows($res)) {
$photos_tpl = ""; $photostpl = gettpl("photos.tpl");
while ($data = dbarray($res)) {
$set = unserialize(dbresult(dbquery("SELECT content FROM settings WHERE name=photos"), 0));
$files = unserialize($data['files']);
$allphotos = count($files);
if ($data['files'] && preg_match("/^.*?\"([0-9a-f]{2})\";s\:4\:\"file\";s\:\d{1,2}\:\"([-0-9a-z_\.]+\.(gif|jpg|jpeg|png))\"/", $data['files'], $matches)) {
$coverphoto = "<img src=\"/".$matches[1]."/thumbs/".$matches[2]."\">";
}
else { $coverphoto = ""; }
$photos_tpl .= parsetpl($photostpl);
}
}
else {
$uyphotos = 0;
$uphotos_tpl = "<br><br><br>".$lng['emptyuphotos']; }
}
Ответить с цитированием
  #5 (permalink)  
Старый 12.09.2017, 12:33
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

MRJ,
О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

Стиль кода у прогера от бога. Изменять код не стал, ибо копаться в этом нет желания.
*!*$photos_num=0;*/!*$res = dbquery("SELECT * FROM photos WHERE user=user ORDER BY created DESC LIMIT 50");
if (dbrows($res)) {
$photos_tpl = ""; $photostpl = gettpl("photos.tpl");
while ($data = dbarray($res)) {
$set = unserialize(dbresult(dbquery("SELECT content FROM settings WHERE name=photos"), 0));
$files = unserialize($data['files']); 
$allphotos = count($files);
if ($data['files'] && preg_match("/^.*?\"([0-9a-f]{2})\";s\:4\:\"file\";s\:\d{1,2}\:\"([-0-9a-z_\.]+\.(gif|jpg|jpeg|png))\"/", $data['files'], $matches)) { 
$coverphoto = "<img src=\"/".$matches[1]."/thumbs/".$matches[2]."\">";*!*$photos_num++*/!*;
}
else { $coverphoto = ""; }
$photos_tpl .= parsetpl($photostpl);
}
}
else { 
$uyphotos = 0;
$uphotos_tpl = "<br><br><br>".$lng['emptyuphotos']; }
}

Последний раз редактировалось Nexus, 12.09.2017 в 12:37.
Ответить с цитированием
  #6 (permalink)  
Старый 12.09.2017, 12:45
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от MRJ
Но в этом столбце данные лежат не в готовом числовом виде, а ввиде ключей, там повторяющиеся значения адресов картинок.
Уже плохо, читайте о нормализации, упаковывать в строку данные, которыми необходимо оперировать (просчет, поиск, редактирование т .п.), это очень и очень плохо.

Наведете порядок в базе с данными, приведете их к нормальному структурированному виду и отпадут многие проблемы.
Ответить с цитированием
  #7 (permalink)  
Старый 12.09.2017, 14:37
MRJ MRJ вне форума
Интересующийся
Отправить личное сообщение для MRJ Посмотреть профиль Найти все сообщения от MRJ
 
Регистрация: 03.03.2014
Сообщений: 25

Nexus,

Спасибо, попробовал так. Только он подсчитывает не общее количество картинок пользователя в таблице, а просто количество записей таблицы где этот столбец содержит картинки.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простая задачка на идентичность объектов Kosanna Общие вопросы Javascript 7 03.12.2014 03:53
Простая задачка со списком select Malkis Общие вопросы Javascript 3 03.02.2013 09:24
Простая задачка Nanto Элементы интерфейса 6 08.09.2011 15:19
contentEditable — FAQ или очень простое руководство InetBUG Events/DOM/Window 1 16.02.2011 03:11
Небольшая задачка Maksim jQuery 4 30.09.2009 19:43