Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Вывод результатов опроса в процентном эквиваленте.

Сообщения:  [1-10]   [11-15] 

 
 автор: provodnik   (20.08.2007 в 16:23)   письмо автору
 
   для: Trianon   (27.03.2007 в 18:08)
 

Как это не странно, но адекватного решения я так и не нашел...
Склоняюсь к совету г-на KPETuHа...

   
 
 автор: Trianon   (27.03.2007 в 18:08)   письмо автору
 
   для: mindless   (27.03.2007 в 17:12)
 

у меня как-то подобного рода проблем не возникает :)

   
 
 автор: mindless   (27.03.2007 в 17:12)   письмо автору
 
   для: Trianon   (27.03.2007 в 10:49)
 

а вы не используйте функцию округления..
а просто показвйте 2 знака после запятой. тогда будет более менее

   
 
 автор: Trianon   (27.03.2007 в 10:49)   письмо автору
 
   для: KPETuH   (27.03.2007 в 10:46)
 

Вероятно, в этом случае относительная погрешность меньшего значения будет самой высокой из возможных.

   
 
 автор: KPETuH   (27.03.2007 в 10:46)   письмо автору
 
   для: provodnik   (27.03.2007 в 09:56)
 

Могу предложить такой вариант складывайте все кроме самого маленького вчитыйте из 100 сумму и получайте меньшее значение, в таком случай у вас всегда будет 100 по сумме и небольшая погрешность по меньшему

   
 
 автор: Trianon   (27.03.2007 в 10:12)   письмо автору
 
   для: provodnik   (27.03.2007 в 09:56)
 

Есть такая штука, как ошибка округления. Если Вы хотите видеть проценты целыми, то естественно, после суммирования ровно сотню Вы не получите.

   
 
 автор: provodnik   (27.03.2007 в 09:56)   письмо автору
 
   для: moonfox   (26.03.2007 в 23:16)
 

если у вас всё правильно работает в таких случаях:

цитирую: При всего 6-ти голосах (3 голоса за первый вариант, 1 голос за второй вариант, 1 голос за третий вариант, 1 голос за 4-й вариант)
скрипт выводит 50%, 17%, 17%, 17% соответственно, что в сумме 101% !.
Дальше - ещё интереснее: если добавить 1 варианту 4-й голос, то выводится 57%, 14%, 14%, 14%, что в сумме 99%...
если добавить 1 варианту 5-й голос, то выводится 63%, 13%, 13%, 13%, а это в сумме 102%...

то я не знаю, наверное, мне стоит переквалифицироваться в какие нибудь грузчики... :(

   
 
 автор: moonfox   (26.03.2007 в 23:16)   письмо автору
 
   для: provodnik   (26.03.2007 в 09:44)
 

однако... у меня все правельно работает:


<? 


mysql_connect
('localhost:3307','root','1224');
mysql_select_db('NN');

$query mysql_query("SELECT SUM(answer) AS sum_answer FROM poll"); //достаем из базы сумму всех голосов  
$sum mysql_fetch_array($query); 

$query mysql_query("SELECT * FROM poll"); // достаем варианты ответа и количество голосов за этот вариант 
while($message mysql_fetch_array($query)) 
{     
    echo 
$message['variant']; // выводим вариант ответа 
    
echo ", голосов: ".$message['answer'].", "//выводим количество голосов за него 
    
$q round($message['answer']*100/$sum['sum_answer']); //вычисляем округленный процент 
    
echo "-".$q."%<br />"//выводим процент 

echo 
"<br />Всего голосов: ".$sum['sum_answer']; // выводим общее количество голосов 

?> 
[code]


--
-- Структура таблицы `poll`
--

CREATE TABLE `poll` (
`id` int(1) NOT NULL auto_increment,
`variant` varchar(64) NOT NULL default '',
`answer` int(4) default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ;

--
-- Дамп данных таблицы `poll`
--

INSERT INTO `poll` (`id`, `variant`, `answer`) VALUES
(1, 'Да', 9),
(2, 'Нет', 0),
(3, 'Не думал об этом', 0),
(4, 'Неначто', 1);

[/code]
выдало результат

да, голосов: 9, -90%
нет, голосов: 0, -0%
Не думал об этом, голосов: 0, -0%
Неначто, голосов: 1, -10%

Всего голосов: 10 

   
 
 автор: provodnik   (26.03.2007 в 09:44)   письмо автору
 
   для: moonfox   (26.03.2007 в 00:08)
 

:), мда... интересно.. что-то я никак не уловлю суть...
А мой код пробовали?

моя БД:

-- 
-- Структура таблицы `poll`
-- 

CREATE TABLE `poll` (
  `id` int(1) NOT NULL auto_increment,
  `variant` varchar(64) NOT NULL default '',
  `answer` int(4) default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ;

-- 
-- Дамп данных таблицы `poll`
-- 

INSERT INTO `poll` VALUES (1, 'Да', 9);
INSERT INTO `poll` VALUES (2, 'Нет', 3);
INSERT INTO `poll` VALUES (3, 'Не думал об этом', 1);
INSERT INTO `poll` VALUES (4, 'Неначто', 1);        

   
 
 автор: moonfox   (26.03.2007 в 00:08)   письмо автору
 
   для: provodnik   (25.03.2007 в 23:59)
 

почему у меня пашет?!
мистика...

самое простое:

<?
mysql_connect
('localhost:3307','root','1224');
mysql_select_db('test');


$query mysql_query("SELECT * FROM poll where id='1'");
while(
$data mysql_fetch_array($query)) 
{
$i=1;
$total=$data['count1']+$data['count2']+$data['count3'];
echo  
"всего ответов: ".$total."<br><br>";

echo 
"вариант 1: ".$data['answer1']." ".round($data['count1']*100/$total)."%<br>";
echo 
"вариант 2: ".$data['answer2']." ".round($data['count2']*100/$total)."%<br>";
echo 
"вариант 3: ".$data['answer3']." ".round($data['count3']*100/$total)."%<br>";

echo 
"<br><br>";
echo 
"ИТОГО: ".round(($data['count1']*100/$total)+($data['count2']*100/$total)+($data['count3']*100/$total))."%";
}
?>


БД:



-- 
-- Структура таблицы `poll`
-- 

CREATE TABLE `poll` (
  `question` varchar(50) NOT NULL,
  `answer1` text NOT NULL,
  `count1` int(5) NOT NULL,
  `answer2` text NOT NULL,
  `count2` int(5) NOT NULL,
  `answer3` text NOT NULL,
  `count3` int(5) NOT NULL,
  `id` int(5) NOT NULL auto_increment,
  KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;

-- 
-- Дамп данных таблицы `poll`
-- 

INSERT INTO `poll` (`question`, `answer1`, `count1`, `answer2`, `count2`, `answer3`, `count3`, `id`) VALUES 
('да или нет?', 'нет', 1, 'да', 0, 'незнаю', 0, 1);

   

Сообщения:  [1-10]   [11-15] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования