11.09.2017, 23:52
|
Интересующийся
|
|
Регистрация: 03.03.2014
Сообщений: 25
|
|
Очень простая задачка )
В шаблоне страницы есть повторяющиеся элементы, количество которых php выводит произвольно, в зависимости от базы данных.
Всего <span>480</span>
<span>115</span>
<span>25</span>
<span>340</span>
Как можно подсчитать сумму всех этих значений и вывести в элементе который стоит выше, как показано
|
|
12.09.2017, 01:41
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,112
|
|
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.
|
|
12.09.2017, 03:12
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
MRJ,
а что самому серверу это неизвестно или лень сделать?
|
|
12.09.2017, 12:24
|
Интересующийся
|
|
Регистрация: 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']; }
}
|
|
12.09.2017, 12:33
|
Профессор
|
|
Регистрация: 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.
|
|
12.09.2017, 12:45
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от MRJ
|
Но в этом столбце данные лежат не в готовом числовом виде, а ввиде ключей, там повторяющиеся значения адресов картинок.
|
Уже плохо, читайте о нормализации, упаковывать в строку данные, которыми необходимо оперировать (просчет, поиск, редактирование т .п.), это очень и очень плохо.
Наведете порядок в базе с данными, приведете их к нормальному структурированному виду и отпадут многие проблемы.
|
|
12.09.2017, 14:37
|
Интересующийся
|
|
Регистрация: 03.03.2014
Сообщений: 25
|
|
Nexus,
Спасибо, попробовал так. Только он подсчитывает не общее количество картинок пользователя в таблице, а просто количество записей таблицы где этот столбец содержит картинки.
|
|
|
|