Очень простая задачка )
В шаблоне страницы есть повторяющиеся элементы, количество которых 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, время: 21:57. |