Форум программистов, компьютерный форум, киберфорум
Joomla
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/34: Рейтинг темы: голосов - 34, средняя оценка - 4.88
1 / 1 / 0
Регистрация: 28.05.2009
Сообщений: 19
1

Virtuemart.Отзывы без регистрации

24.10.2010, 13:12. Показов 6444. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем добрый день!Многие наверно знают данный скрипт магазина.Там к любому товару можно оставлять отзыв,но только зарегистрированным пользователям.Я решил сделать возможность оставлять отзыв всем пользователям.Все вроде нормально,отзывы работают,незарегистрированные пользователи имеет возможность оставить отзыв,но отзыв можно оставить только один раз,независимо зарегистрирован пользователь или нет.Вроде все условия убрал,но все равно отзывы больше не оставляются.также кроме отзыва пользователь еще голосует за товар,именно это думаю и делает ограничение.Как убрать это ограничение и сделать чтобы оценка пользователя учитывалась только один раз независимо от кол-ва отзывов?Вот собственно сам код:
Проверка данных из формы,и запись в бд:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
function process_review( &$d ) { 
        global $db, $auth, $perm, $VM_LANG, $vmLogger, $mosConfig_offset; 
 
 
            $d["comment"] = trim($d["comment"]); 
            if( strlen( $d["comment"] ) < VM_REVIEWS_MINIMUM_COMMENT_LENGTH ) { 
                $vmLogger->err( sprintf( $VM_LANG->_('PHPSHOP_REVIEW_ERR_COMMENT1',false), VM_REVIEWS_MINIMUM_COMMENT_LENGTH )); 
                return true; 
            } 
            if( strlen ( $d["comment"] ) > VM_REVIEWS_MAXIMUM_COMMENT_LENGTH ) { 
                $vmLogger->err( sprintf( $VM_LANG->_('PHPSHOP_REVIEW_ERR_COMMENT2',false), VM_REVIEWS_MAXIMUM_COMMENT_LENGTH )); 
                return true; 
            } 
            if( !isset( $d["user_rating"] ) || intval( $d["user_rating"] ) < 0 || intval( $d["user_rating"] ) > 5) { 
                $vmLogger->err($VM_LANG->_('PHPSHOP_REVIEW_ERR_RATE',false)); 
                return true; 
            } 
         
            if( !$perm->check('admin,storeadmin')) { 
                $userid = $auth['user_id']; 
            } elseif(!$perm->check('demo')) 
            { 
              $userid = 0; 
            } else 
            { 
             $userid = vmRequest::getInt('userid', $auth['user_id']); 
            } 
 
             
                $comment= nl2br(htmlspecialchars(vmGet($d, 'comment' ))); 
                $published = VM_REVIEWS_AUTOPUBLISH ? 'Y' : 'N'; 
                $time = time() + $mosConfig_offset*60*60; 
                $fields = array('product_id' => $d['product_id'], 
                                            'userid' => $userid, 
                                            'comment' => $comment, 
                                            'user_rating' => vmRequest::getInt('user_rating'), 
                                            'published' => $published, 
                                            'time'  => $time 
                                ); 
                $db->buildQuery('INSERT', '#__{vm}_product_reviews', $fields ); 
                $db->query(); 
 
                $this->process_vote( $d ); 
                $vmLogger->info($VM_LANG->_('PHPSHOP_REVIEW_THANKYOU',false)); 
 
 
        return true;
Голосование:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 function process_vote( &$d, $previous_vote = -1 ) { 
        global $db, $auth; 
 
 
 
            if (($d["user_rating"]>=0) && ($d["user_rating"]<=5)) { 
                $sql = "SELECT votes,allvotes FROM #__{vm}_product_votes WHERE product_id = '". $d["product_id"]."'"; 
                $db->query( $sql ); 
                $db->next_record(); 
 
                if( $db->num_rows() < 1 ){ 
                    $sql="INSERT INTO #__{vm}_product_votes (product_id) VALUES (".$d["product_id"].")"; 
                    $db->query( $sql ); 
                    $votes = $d["user_rating"]; 
                    $lastip = ''; 
                    $allvotes = 0; 
                } 
                else { 
                    $allvotes=intval( $db->f("allvotes") ); 
                    if ($previous_vote > -1) { // If this is an edit 
                        $votes = $db->f("votes"); 
                    } else { 
                        $votes = $d["user_rating"].','.$db->f("votes"); 
                    } 
                } 
                $currip = $_SERVER["REMOTE_ADDR"]; 
                $votes_arr=explode(",", $votes); 
                 if ($previous_vote > -1) { // If this is an edit 
                     $i = array_search($previous_vote, $votes_arr); // Find a vote with the same value 
                     unset($votes_arr[$i]); // And remove it 
                     $allvotes--; // Decrement the vote counter 
 
                     $votes_arr[] = $d["user_rating"]; // Add the new rating in 
                     $votes = implode(",", $votes_arr); // Then reconstruct the string 
                 } 
 
                $votes_count=array_sum($votes_arr); 
                $allvotes++; // Increment the number of votes 
                 $newrating=$votes_count / ( $allvotes ); 
                $newrating = round( $newrating ); 
                $sql="UPDATE #__{vm}_product_votes SET allvotes=$allvotes, rating=$newrating, votes='$votes', lastip='$currip' WHERE product_id='".$d["product_id"]."'"; 
                $db->query( $sql ); 
 
            } 
 
 
        return true; 
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2010, 13:12
Ответы с готовыми решениями:

Форма входа и регистрации в Joomla и в Virtuemart
Посоветуйте, обязательна (нужна ли вообще) форма входа и регистрации в Joomla и в Virtuemart, если...

Отзывы без регистрации
Всем добрый день!Многие наверно знают данный скрипт магазина.Там к любому товару можно оставлять...

Отзывы без базы данных - возможно ли
можно ли сделать сие, если не знаешь имя базы данных.... отзывы проще, там сохраняешь в...

Отзывы покупателей: можно ли такое реализовать без БД?
Доброе утро, можно ли такое реализовать без БД, просто пользователь вводит отзыв о продавце в...

2
171 / 169 / 1
Регистрация: 22.08.2010
Сообщений: 1,251
24.10.2010, 19:04 2
PR0Z0N, вам лучше вот здесь спросить https://www.cyberforum.ru/php/
0
1 / 1 / 0
Регистрация: 28.05.2009
Сообщений: 19
24.10.2010, 19:26  [ТС] 3
OVSite, хорошо,спасибо!))
0
24.10.2010, 19:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2010, 19:26
Помогаю со студенческими работами здесь

Отображение без регистрации
Добрый день. То-ли мне кажется, то-ли я выдумал, но я где то настраивал, чтобы не...

Отзывы о товаре и отзывы в целом
Добрый день. Необходимо сделать на сайте систему комментирования товаров. И возникла такая...

Скрипт почты без регистрации
Добрый день, интересует скрипт почты без регистрации, что то на подобие mailinator.com и...

Идентификация пользователя без регистрации
Нужно как-то идентифицировать пользователя для интернет магазина, но без регистрации. Тобиш заходит...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru