@tryvols
Front-End разработчик

Как вывести ошибки или где баг?

<?php
require_once('core/db.php');
require_once('core/Data_object.php');
require_once('db_rating.php');

Class ratings
{    
    protected $widget_id;  
    protected $data;
    private   $DB_Rating = new DB_Rating();
  
	function __construct($wid) {
		$this->data = $this->DB_Rating->get($wid);
    	$this->widget_id = $wid;
	}

	public function get_ratings() { 
		$Data_object = new Data_object();

		$Data_object->widget_id = $this->widget_id;
		$Data_object->number_votes = 0;
		$Data_object->total_points = 0;
		$Data_object->dec_avg	   = 0;
		$Data_object->whole_avg	   = 0;
    	
    	foreach($this->data as $vote)
    	{
    		$Data_object->number_votes += 1;
    		$Data_object->total_points += $vote->vote;
    	}
    	$Data_object->dec_avg = $Data_object->total_points / $Data_object->number_votes;
    	$Data_object->whole_avg = round($Data_object->dec_avg);

    	echo json_encode($Data_object->get_filds_in_assoc_array());
	}

	public function vote() {
	    $Data_object = new Data_object();

	    preg_match('/star_([1-5]{1})/', $_POST['clicked_on'], $match);  
	    $vote = (integer) $match[1];
		$ID = $this->widget_id;  
		
		session_start();
		$Data_object->set_fields(
			'vote', 	  $vote,
			'company_id', $ID,
			'user_id',	  (integer) $_SESSION['user_id']
		);
		$this->DB_Rating->set_data($Data_object);
		$this->DB_Rating->set();

		$this->get_ratings();
	}
}

<?php

Class DB_Rating extends DB
{
	protected $select_query = 'SELECT * FROM rating INNER JOIN users USING(user_id) WHERE company_id = ?';

	protected $insert_query = 'INSERT INTO rating';
	protected $set_vote  		= 'vote = ?';
	protected $set_company_id 	= 'company_id = ?';
	protected $set_user_id 		= 'user_id = ?';

	protected $check_query = 'SELECT * FROM rating WHERE company_id = ? AND user_id = ?';


	public function __construct($obj = '')
	{
		$this->pdo = new PDO($this->dsn, 'root', '', $this->opt);
        $this->Data_object = $obj;
	}

	public function get($company_id)
	{
		if (isset($company_id))
        {
            $Data_object = new Data_object();
		
			$stmt = $this->pdo->prepare($this->select_query);
			$stmt->execute(array($company_id));
			$j = 0;
			foreach($stmt as $request_vote)
			{
				$Vote = new Data_object();
				$Vote->set_fields
				(
					'user', $request_vote['login'],
					'vote', $request_vote['vote']
				);
				$name = 'vote_'.$j;
				$Data_object->$name = $Vote;
				$j++;
			}
			return $Data_object;
        }
	}

	public function set()
	{
		if (isset($this->Data_object) || is_object($this->Data_object))
        {
            $names_of_fields = $this->Data_object->get_names();
            for ($i = 0; $i < count($names_of_fields); $i++)
            {
                $this->filter('INSERT INTO rating', 'insert', $names_of_fields[$i], 'set', ' SET ', ', ');
            }
            $arr = $this->Data_object->get_filds_in_array();
            if (
            	isset($arr) && 
            	$this->insert_query != 'INSERT INTO rating' && 
            	$this->isclone( $check_query, $this->Data_object->company_id )
            ) {
                $stmt = $this->pdo->prepare($this->insert_query);
                $stmt->execute($arr);
            }
        }
        else {
            throw new Exception("It must be object.");
        }
	}

	private function isclone($query, $fild_name)
	{
		session_start();
		$name = $this->Data_object->get_fields
		(
			'company_id', $fild_name,
			'user_id', $_SESSION['user_id']
		);

        if (isset($name))
        {
            $check = $this->pdo->prepare($query);
            $check->execute(array($name));
            if (!$row = $check->fetch(PDO::FETCH_LAZY))
            {
                return true;
            }
            else {
                echo '$err_text_1';
                return false;
            }
        }
        else {
            echo '$err_text_2';
            return false;
        }
	}
	}

	public function set_data($Data_object)
    {
    	$this->Data_object = $Data_object;
    }
}

Data_object - класс для сбора, форматирования, передачи и удобного представления данных.
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Atllantis
Да, давайте ещё кода, побольше, нам же ж так интересно его рассматривать! И вопросы с ответами сами себе должны ещё придумывать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы