Очень простая задачка )
В шаблоне страницы есть повторяющиеся элементы, количество которых php выводит произвольно, в зависимости от базы данных.
Всего <span>480</span> <span>115</span> <span>25</span> <span>340</span> Как можно подсчитать сумму всех этих значений и вывести в элементе который стоит выше, как показано :) |
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>
|
MRJ,
а что самому серверу это неизвестно или лень сделать? |
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']; } } |
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,
Спасибо, попробовал так. Только он подсчитывает не общее количество картинок пользователя в таблице, а просто количество записей таблицы где этот столбец содержит картинки. |
| Часовой пояс GMT +3, время: 10:55. |