Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 05.11.2016
Сообщений: 68
1
MySQL

Скрипт рейтинга - не удается получить данные из БД

08.11.2016, 20:27. Просмотров 723. Ответов 8
Метки нет (Все метки)


здравствуйте не могу разобраться с кодом скрипт рейтинга, пытался весь день решить проблему сам. Подскажите пожалуйста почему не удается взять данные из БД:

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<?php
function rating_bar($id,$units='',$static='') { 
 
include_once('_config-rating.php'); // get the db connection info
    
//set some variables
$ip = $_SERVER['REMOTE_ADDR'];
if (!$units) {$units = 10;}
if (!$static) {$static = FALSE;}
 
connectDB();
global $mysqli;
$res="SELECT `total_votes`, `total_value`, `used_ips` FROM `test`, `ratings` WHERE id='$id'";
$query=$mysqli->query($res);
      if(!$query){echo('Не удалось взять данные из БД!');}
        else{
if (mysqli_num_rows($query) == 0) {
$sql = "INSERT INTO $rating_dbname.$rating_tableName (`id`,`total_votes`, `total_value`, `used_ips`) VALUES ('$id', '0', '0', '')";
$result = $mysqli->query($sql);
}
 
$numbers=mysqli_fetch_assoc($query);
 
 
if ($numbers['total_votes'] < 1) {
    $count = 0;
} else {
    $count=$numbers['total_votes']; //how many votes total
}
$current_rating=$numbers['total_value']; //total number of rating added together and stored
$tense=($count==1) ? "vote" : "votes"; //plural form votes/vote
 
// determine whether the user has voted, so we know how to draw the ul/li
connectDB();
global $mysqli;
$voted=mysqli_num_rows($mysqli->query("SELECT `used_ips` FROM $rating_dbname.$rating_tableName WHERE used_ips LIKE '%".$ip."%' AND id='".$id."' ")); 
}
// now draw the rating bar
$rating_width = @number_format($current_rating/$count,2)*$rating_unitwidth;
$rating1 = @number_format($current_rating/$count,1);
$rating2 = @number_format($current_rating/$count,2);
 
 
if ($static == 'static') {
 
        $static_rater = array();
        $static_rater[] .= "\n".'<div class="ratingblock">';
        $static_rater[] .= '<div id="unit_long'.$id.'">';
        $static_rater[] .= '<ul id="unit_ul'.$id.'" class="unit-rating" style="width:'.$rating_unitwidth*$units.'px;">';
        $static_rater[] .= '<li class="current-rating" style="width:'.$rating_width.'px;">Currently '.$rating2.'/'.$units.'</li>';
        $static_rater[] .= '</ul>';
        $static_rater[] .= '<p class="static">'.$id.'. Rating: <strong> '.$rating1.'</strong>/'.$units.' ('.$count.' '.$tense.' cast) <em>This is \'static\'.</em></p>';
        $static_rater[] .= '</div>';
        $static_rater[] .= '</div>'."\n\n";
 
        return join("\n", $static_rater);
 
 
} else {
 
      $rater ='';
      $rater.='<div class="ratingblock">';
 
      $rater.='<div id="unit_long'.$id.'">';
      $rater.='  <ul id="unit_ul'.$id.'" class="unit-rating" style="width:'.$rating_unitwidth*$units.'px;">';
      $rater.='     <li class="current-rating" style="width:'.$rating_width.'px;">Currently '.$rating2.'/'.$units.'</li>';
 
      for ($ncount = 1; $ncount <= $units; $ncount++) { // loop from 1 to the number of units
           if(!$voted) { // if the user hasn't yet voted, draw the voting stars
              $rater.='<li><a href="db.php?j='.$ncount.'&amp;q='.$id.'&amp;t='.$ip.'&amp;c='.$units.'" title="'.$ncount.' out of '.$units.'" class="r'.$ncount.'-unit rater" rel="nofollow">'.$ncount.'</a></li>';
           }
      }
      $ncount=0; // resets the count
 
      $rater.='  </ul>';
      $rater.='  <p';
      if($voted){ $rater.=' class="voted"'; }
      $rater.='>'.$id.' Rating: <strong> '.$rating1.'</strong>/'.$units.' ('.$count.' '.$tense.' cast)';
      $rater.='  </p>';
      $rater.='</div>';
      $rater.='</div>';
      return $rater;
 }
}
?>
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//вот конфиг файл
  <?php
$rating_dbname = "test";
$rating_tableName = "ratings";
    
    $rating_unitwidth     = 30; // the width (in pixels) of each rating unit (star, etc.)
    // if you changed your graphic to be 50 pixels wide, you should change the value above
 
 
   function connectDB(){
        global $mysqli;
        $mysqli = new mysqli ("localhost","root","","test");
        $mysqli->query("SET name 'utf-8'");
    }
    function closeDB(){
      global $mysqli;
        $mysqli->close();
    }   
 
?>
Добавлено через 7 минут
Mysql переделал в Mysqli прописал некоторве строчки но видемо что-то сделал не так
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.11.2016, 20:27
Ответы с готовыми решениями:

Не удается получить данные из формы
Код html с формой: &lt;!DOCTYPE html&gt; &lt;html &gt; &lt;head&gt; &lt;meta http-equiv=&quot;Content-Type&quot;...

Не удается получить данные из <div>
Господа,есть вопрос. необходимо получить содержимое блока &lt;div&gt;, а точнее текст,без тегов(в...

Qt Mac OS, не удаётся получить данные в SQLite
Здравствуйте, уважаемые формучане, у меня такая проблема: Подключился к БД, написал запрос для...

CKEDITOR: не удается получить данные из формы
Всем привет! кто нибудь работал с редактором ckeditor? У меня такая проблемка, не получаеться...

__________________
Помогаю в написании курсовых работ и дипломов здесь.
Записывайтесь на профессиональные курсы Fullstack-разработчиков на PHP‌
8
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1840 / 1338 / 597
Регистрация: 12.01.2011
Сообщений: 5,371
08.11.2016, 20:43 2
Цитата Сообщение от shahin_87 Посмотреть сообщение
PHP
1
2
global $mysqli;
$mysqli = new mysqli ("localhost","root","","test");
зачем глобал в этом месте , вы же тока в этой функции создаёте локальную переменную. Можно вернуть $mysqli ,и присвоить это уже потом премененой .
Какие ошибки вообще выдаёт ?

Добавлено через 2 минуты
Цитата Сообщение от shahin_87 Посмотреть сообщение
PHP
1
INSERT INTO $rating_dbname.$rating_tableName
а где тут VALUES?
Цитата Сообщение от shahin_87 Посмотреть сообщение
PHP
1
2
$rating_dbname = "test";
$rating_tableName = "ratings";
вот тут его нет.

Надо тогда так ↓
MySQL
1
INSERT INTO $rating_dbname.$rating_tableName VALUES(и тут уже строки);
0
0 / 0 / 1
Регистрация: 05.11.2016
Сообщений: 68
08.11.2016, 21:08  [ТС] 3
я убрал этустроку
PHP
1
2
  if(!$query){echo('Не удалось взять данные из БД!');}
        else{
и глобал, стало так:
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
  <?php
function rating_bar($id,$units='',$static='') { 
 
include_once('_config-rating.php'); // get the db connection info
    
//set some variables
$ip = $_SERVER['REMOTE_ADDR'];
if (!$units) {$units = 10;}
if (!$static) {$static = FALSE;}
 
connectDB();
global $mysqli;
$res="SELECT `total_votes`, `total_value`, `used_ips` FROM `test`, `ratings` WHERE id='$id'";
$query=$mysqli->query($res);
if (mysqli_num_rows($query) == 0) {
$sql = "INSERT INTO $rating_dbname.$rating_tableName (`id`,`total_votes`, `total_value`, `used_ips`) VALUES ('$id', '0', '0', '')";
$result = $mysqli->query($sql);
}
 
$numbers=mysqli_fetch_assoc($query);
 
 
if ($numbers['total_votes'] < 1) {
    $count = 0;
} else {
    $count=$numbers['total_votes']; //how many votes total
}
$current_rating=$numbers['total_value']; //total number of rating added together and stored
$tense=($count==1) ? "vote" : "votes"; //plural form votes/vote
 
// determine whether the user has voted, so we know how to draw the ul/li
connectDB();
global $mysqli;
$voted=mysqli_num_rows($mysqli->query("SELECT `used_ips` FROM $rating_dbname.$rating_tableName WHERE used_ips LIKE '%".$ip."%' AND id='".$id."' ")); 
// now draw the rating bar
$rating_width = @number_format($current_rating/$count,2)*$rating_unitwidth;
$rating1 = @number_format($current_rating/$count,1);
$rating2 = @number_format($current_rating/$count,2);
 
 
if ($static == 'static') {
 
        $static_rater = array();
        $static_rater[] .= "\n".'<div class="ratingblock">';
        $static_rater[] .= '<div id="unit_long'.$id.'">';
        $static_rater[] .= '<ul id="unit_ul'.$id.'" class="unit-rating" style="width:'.$rating_unitwidth*$units.'px;">';
        $static_rater[] .= '<li class="current-rating" style="width:'.$rating_width.'px;">Currently '.$rating2.'/'.$units.'</li>';
        $static_rater[] .= '</ul>';
        $static_rater[] .= '<p class="static">'.$id.'. Rating: <strong> '.$rating1.'</strong>/'.$units.' ('.$count.' '.$tense.' cast) <em>This is \'static\'.</em></p>';
        $static_rater[] .= '</div>';
        $static_rater[] .= '</div>'."\n\n";
 
        return join("\n", $static_rater);
 
 
} else {
 
      $rater ='';
      $rater.='<div class="ratingblock">';
 
      $rater.='<div id="unit_long'.$id.'">';
      $rater.='  <ul id="unit_ul'.$id.'" class="unit-rating" style="width:'.$rating_unitwidth*$units.'px;">';
      $rater.='     <li class="current-rating" style="width:'.$rating_width.'px;">Currently '.$rating2.'/'.$units.'</li>';
 
      for ($ncount = 1; $ncount <= $units; $ncount++) { // loop from 1 to the number of units
           if(!$voted) { // if the user hasn't yet voted, draw the voting stars
              $rater.='<li><a href="db.php?j='.$ncount.'&amp;q='.$id.'&amp;t='.$ip.'&amp;c='.$units.'" title="'.$ncount.' out of '.$units.'" class="r'.$ncount.'-unit rater" rel="nofollow">'.$ncount.'</a></li>';
           }
      }
      $ncount=0; // resets the count
 
      $rater.='  </ul>';
      $rater.='  <p';
      if($voted){ $rater.=' class="voted"'; }
      $rater.='>'.$id.' Rating: <strong> '.$rating1.'</strong>/'.$units.' ('.$count.' '.$tense.' cast)';
      $rater.='  </p>';
      $rater.='</div>';
      $rater.='</div>';
      return $rater;
 }
}
?>
и появились ошибки:
HTML5
1
2
3
4
5
6
7
8
9
10
 
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /storage/emulated/0/test/test/_drawrating.php on line 15
 
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in /storage/emulated/0/test/test/_drawrating.php on line 20
 
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /storage/emulated/0/test/test/_drawrating.php on line 15
 
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in /storage/emulated/0/test/test/_drawrating.php on line 20
 
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /storage/emulated/0/test/test/_drawrating.php on line 34
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1840 / 1338 / 597
Регистрация: 12.01.2011
Сообщений: 5,371
08.11.2016, 21:23 4
Цитата Сообщение от shahin_87 Посмотреть сообщение
INSERT INTO $rating_dbname.$rating_tableName
где изменение что я написал ?
0
0 / 0 / 1
Регистрация: 05.11.2016
Сообщений: 68
08.11.2016, 22:43  [ТС] 5
если я сделаю так:
PHP
1
$sql = "INSERT INTO $rating_dbname.$rating_tableName VALUE (`id`,`total_votes`, `total_value`, `used_ips`) //Тогда что вставить сюда ('$id', '0', '0', '')";
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1840 / 1338 / 597
Регистрация: 12.01.2011
Сообщений: 5,371
09.11.2016, 00:10 6
Цитата Сообщение от shahin_87 Посмотреть сообщение
VALUE
VALUES
0
0 / 0 / 1
Регистрация: 05.11.2016
Сообщений: 68
09.11.2016, 00:40  [ТС] 7
ну VALUES а после последующий скобок то что делать?
(`id`,`total_votes`, `total_value`, `used_ips`) там же идёт дальше ('$id', '0', '0', ''). что прописать между (`id`,`total_votes`, `total_value`, `used_ips`) ->?<-('$id', '0', '0', '' )";
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1840 / 1338 / 597
Регистрация: 12.01.2011
Сообщений: 5,371
09.11.2016, 01:11 8
Цитата Сообщение от shahin_87 Посмотреть сообщение
ну VALUES а после последующий скобок то что делать?
Читайте мануал mysql, добавление данных в бд.
0
0 / 0 / 1
Регистрация: 05.11.2016
Сообщений: 68
09.11.2016, 07:33  [ТС] 9
знаю я как записывать:
SQL
1
  $sql = $mysqli->query("INSERT INTO pages (title,url,text,description,keywords) VALUES ('".$title."', '".$url."', '".$text."','".$description."','".$keywords."')") OR die ('Ошибка #3872683872');
например

Добавлено через 1 минуту
пожалуйста будте любезны покажите мне мою ошибку.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2016, 07:33

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь или здесь.

Не удается получить данные с сервиса погоды
Добрый день. Есть небольшое приложение ASP.NET MVC, где есть : модель ,в которой реализованы классы...

Интернет-эквайринг. Не удается получить данные от банка
Господа, новичку нужна ваша помощь. Ситуация такая: после того, как на стороне банка клиент...

скрипт рейтинга на Mysqli
Здравствуйте перерыл весь интернет, перепробовал все скрипты но не нашёл не одного рабочего. Но...

Ошибка: Не удается получить данные схемы для таблицы или представления Клиенты.
При попытке подключить базу данных , конкретный столбец , пишет вот такую ошибку : &lt;Клиенты&gt; Не...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.