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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Индексация массива. Оч интересно!
 
 автор: FlamySnake   (04.08.2009 в 17:10)   письмо автору
 
 

Имеется 2 массива:
Например их значения:
$vote_ans:
[0] => "Компьютерные игры"
[1] => "Новости"
[2] => "Статистика"
[3] => "Софт"
-------
$vote_vans:
[0] => "243"
[1] => "279"
[2] => "233"
[3] => "53"
массив $vote_vans отвечает за каличество просмотров.
мне надо сделать сортировку массива $vote_vans.
в порядке убывания, то есть функция rsort, нам в помощь.
тогда получается, неправильный вывод массивы $vote_ans (не соотвествие кол-во просмотров, т. к. мы изменили последовательность значений в массиве $vote_vans)
вот я сделал код, чтобы этого избежать, но увы,что-то не работает=)

мб вы предложите, что-то лучше,а мб найдёте ошибочку в коде.
помогите плииз.
===========================================================
$vote_ans=explode('&del;',$sql_r['ans']); 
$vote_vans=explode('&del;',$sql_r['vote']);
$vote_v=array_sum($vote_vans);
$vote_anss=$vote_ans;
$vote_vanss=$vote_vans;
rsort($vote_vans);
foreach($vote_vanss as $key => $value)
    $vote_ans[$key]=$vote_anss[array_search($value,$vote_vans)];

  Ответить  
 
 автор: Valick   (04.08.2009 в 17:18)   письмо автору
 
   для: FlamySnake   (04.08.2009 в 17:10)
 

пердлогаю оставить вола в покое и сделать из двух массивов один ассоциативный или что гороздо лучше надёжнее и грамотнее использовать БД для обработки информации подобного рода.

  Ответить  
 
 автор: FlamySnake   (04.08.2009 в 17:51)   письмо автору
 
   для: Valick   (04.08.2009 в 17:18)
 

вы абсолютно правы!

я использую вкачестве БД MySQL.

и ещё.
думаете п очему переменные названы vote
??=)))))
потому что я делаю блок голосования.

но возникли сложности и поэтому я делаю не с помощью запроса к MySQL:
"ORDER BY id DESC", мб если вы знаете как сделать, напишите здесь как сделать, чтобы MySQL отсортировал за меня?

  Ответить  
 
 автор: Trianon   (04.08.2009 в 18:02)   письмо автору
 
   для: FlamySnake   (04.08.2009 в 17:51)
 

>вы абсолютно правы!
>
>я использую вкачестве БД MySQL.

Так приводите дамп базы и как хотите получить результат.

>"ORDER BY id DESC", мб если вы знаете как сделать, напишите здесь как сделать, чтобы MySQL отсортировал за меня?
Именно так это и делается.
Только видимо ORDER BY vote DESC

>думаете п очему переменные названы vote??=)))))
>потому что я делаю блок голосования.

A sense of obligation force brain exploding

  Ответить  
 
 автор: sim5   (04.08.2009 в 18:03)   письмо автору
 
   для: FlamySnake   (04.08.2009 в 17:51)
 

А какие сложности возникают при сортировке запросом?

  Ответить  
 
 автор: FlamySnake   (04.08.2009 в 18:58)   письмо автору
 
   для: sim5   (04.08.2009 в 18:03)
 

СПС!
хоть 1 толком решает проблему=)

перевод в проценты: кол-во проголосовавших на 1 ответ / кол-во всего проголосовавших * 100
потом, соотвественно округляем round(<число>,2);

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


$sql="SELECT * FROM vote_ans WHERE vote_id='3' ORDER BY id DESC" // vote_id=3 - это номер голосования, то есть их на сайте может быть несколько, а именно несколько вопросов.
$sql_q=mysql_query($sql);
$sql_r=mysql_fetch_array($sql_q);
// дальше надо посчитать, сколько всего
if ($sql_r){
    $vote_sum=0;
    do
        $vote_sum+=$sql_r['vote'];
    while($sql_r=mysql_fetch_array($sql_q));
    // дальше уже выводим сколько проголосвалоа, вообще голосование
    // но я сделаю так, как сделал у себя, я незнаю как курсор вернуть
    // на 1
    do{
        $vote_r=$sql_r['vote']/$vote_sum*100;
        if (is_float($vote_r))
            $vote_r=round($vote_r,2);
        $face_v.='
                                                                <div class="VoteBl">
                                                                    <div class="VoteTxt">
                                                                        '.m_bb2html($sql_r['ans']).'</div>
                                                                    <div class="VoteRez">
                                                                        '.$vote_r.'%<br>('.$sql_r['vote'].')</div>
                                                                </div>';
    }
    while($sql_r=mysql_fetch_array($sql_q));
}


дальше уже идёт обработка интерфейса, так что нет смысла показывать.

я знаю, почему мне выводит всего 1 ответ в голосование, но незнаю как исправить-(.

посоветуйте плиз чё-нибудь

  Ответить  
Rambler's Top100
вверх

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