Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 23 май 2018, 10:30

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 44 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Подключение файлов.Рейтинг
СообщениеДобавлено: 03 май 2012, 01:43 
Не в сети
Бывалый

Зарегистрирован: 27 мар 2012, 14:08
Сообщения: 62
Решил сделать себе не большой рейтинг статей, взял готовый скрипт:
http://makecode.ru/2011/06/php-rating/
И с надеждой что все удастся поставить, пошел все ставить, но нифига.
Я использую совершенно глупое подключение к таблице:
Так:
Код:
//Соединяемся с базой данных
$connect = mysql_connect ('localhost', 'rating', 'rating');
mysql_select_db('rating', $connect);
?>

Что то вроде этого.БД называется rating поэтому я не знаю как делать запрос к этой БД, знаю то что создаю еще один файл в config наподобие database.php
Подключал я файлы совершенно не адекватным способом для kohana;
rating.php
Код:
include ('/model/base.php');

rateaction.php
Код:
include ('/model/base.php');

Где выводятся мои статьи я подключил файл rating
Код:
include '/controller/rating.php';

И вывелась такая вот ошибка:
Код:
ErrorException [ Warning ]: include(/controller/rating.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory

Я указал все правильные пути, вот честно,все проверял,но никак.
Файлы в kohana же подключаются так:?
Код:
Request::factory('/model/base')->execute(); 

Вот пример файла rating:
Код:
<?php
include "model/base.php";
Request::factory('/model/base')->execute();
function callrating ($idpost, $typethumb = '', $liked = '') {
      $result = mysql_query("SELECT up, down FROM `rating_post` WHERE id_post = ".(int)$idpost."");
      $row = mysql_fetch_array($result);
?>   <div class="rating <?=$typethumb?>">
      <a class="rate plus" id="pid_<?=$idpost?>" href="#"></a>
      <div id="rateresult-<?=$idpost?>"><?=$row['up']-$row['down']?></div>
      <?php if ($liked == '') { ?>
      <a class="rate minus" id="pid_<?=$idpost?>" href="#"></a>
      <?php } else {
         echo $liked;
      } ?>
   </div>   
<?php      
}
?>

Контроллер как видно я не прописывал.Я хочу пока,чисто подключить файлы.Но у меня постоянно это ошибка,пробовал через include_once никак((Пожалуйста тыкнети пальцем, что я не правильно делаю,что дописать и тд)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение файлов.Рейтинг
СообщениеДобавлено: 03 май 2012, 01:58 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
В кохане так файлы не инклюдятся. И с базой так не соединяется.
По соединению с базой вот что нужно знать
http://kohanaframework.su/database/db_config
Только параметры прописать и работать.

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение файлов.Рейтинг
СообщениеДобавлено: 03 май 2012, 09:34 
Не в сети
Бывалый

Зарегистрирован: 27 мар 2012, 14:08
Сообщения: 62
admin писал(а):
В кохане так файлы не инклюдятся. И с базой так не соединяется.
По соединению с базой вот что нужно знать
http://kohanaframework.su/database/db_config
Только параметры прописать и работать.

Да я это и предполагал.
В конфиге я создаю новую базу, допустим название updatabase
Тогда в моделе создаю новый файл с название base и я так понял, то что нужно использовать SELECT
И код будет выглядить так:
Код:
public function golosovalochka()
    {
        $sql = "SELECT * FROM ". $this->_tablerating;
 
        return DB::query(UpDatabase::SELECT, $sql)
                   ->execute();
    }



?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение файлов.Рейтинг
СообщениеДобавлено: 03 май 2012, 10:49 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
Сайт что, использует сразу две базы ?
Если одну, тогда можно (и нужно) использовать соединение default. Если две, тогда нужно передавать название соединения (соединения! не путать с названием таблицы) внутрь метода execute.
Код:
public function golosovalochka()
{
        $sql = "SELECT * FROM ". $this->_tablerating;
 
        return DB::query(Database::SELECT, $sql)
                   ->execute('updatabase');
}


Здесь http://kohanaframework.su/database/query_types про это кстати было написано (в самом низу)

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение файлов.Рейтинг
СообщениеДобавлено: 03 май 2012, 20:56 
Не в сети
Бывалый

Зарегистрирован: 27 мар 2012, 14:08
Сообщения: 62
admin писал(а):
Сайт что, использует сразу две базы ?
Если одну, тогда можно (и нужно) использовать соединение default. Если две, тогда нужно передавать название соединения (соединения! не путать с названием таблицы) внутрь метода execute.
Код:
public function golosovalochka()
{
        $sql = "SELECT * FROM ". $this->_tablerating;
 
        return DB::query(Database::SELECT, $sql)
                   ->execute('updatabase');
}


Здесь http://kohanaframework.su/database/query_types про это кстати было написано (в самом низу)

Да пусть пока две базы, я не очень еще разбираюсь,поэтому не спеша буду копать файлы,а как же с подключением?
Я пробовал по другому,но никак.
Контроллеры и тд,как мне их правильно оформить,нужно ли прописывать такую штуку:


Код:
<?php defined('SYSPATH') or die('No direct script access.');
 
class Controller_Rating extends Controller {


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение файлов.Рейтинг
СообщениеДобавлено: 04 май 2012, 15:39 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
Для второй базы создаете еще одну запись в конфиге
Код:
   'updatabase' => array
   (
      'type'       => 'mysql',
      'connection' => array(
         /**
          * The following options are available for MySQL:
          *
          * string   hostname     server hostname, or socket
          * string   database     database name
          * string   username     database username
          * string   password     database password
          * boolean  persistent   use persistent connections?
          * array    variables    system variables as "key => value" pairs
          *
          * Ports and sockets may be appended to the hostname.
          */
         'hostname'   => 'localhost',
         'database'   => 'kohana',
         'username'   => FALSE,
         'password'   => FALSE,
         'persistent' => FALSE,
      ),
      'table_prefix' => '',
      'charset'      => 'utf8',
      'caching'      => FALSE,
      'profiling'    => TRUE,
   ),


Только настройки уже для нее. И в ->execute('updatabase') надо будет писать, где эта база будет использоваться.

Цитата:
Контроллеры и тд,как мне их правильно оформить,нужно ли прописывать такую штуку:


Да, в него вставляете код с той страницы. Этот контроллер будет подгружаться, это как бы инклюд и будет. И запросы поменять - засунуть их в модель и вызывать из контроллера.

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение файлов.Рейтинг
СообщениеДобавлено: 07 май 2012, 01:55 
Не в сети
Бывалый

Зарегистрирован: 27 мар 2012, 14:08
Сообщения: 62
admin писал(а):
И в ->execute('updatabase') надо будет писать, где эта база будет использоваться.

Я правильно прописал?
Код:
<?php defined('SYSPATH') or die('No direct script access.');
 
class Model_Base extends Model{
   
     public function golos(){

        $sql = "SELECT * FROM ". $this->_tablerating;
 
        return DB::query(Database::SELECT, $sql)
                   ->execute('updatabase', 'rating', 'rateaction');
    }   
}

Цитата:
Да, в него вставляете код с той страницы. Этот контроллер будет подгружаться, это как бы инклюд и будет. И запросы поменять - засунуть их в модель и вызывать из контроллера.

[/quote]
И это я так осуществил
Код:
<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Rating extends Controller{
   
   
    public function action_index()
               {
много кода

Только не пойму как все запросы в файлах скрипта,перенести в модель.Вот допустим файл rating:
Код:
<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Rating extends Controller{
   
   
    public function action_index()
               {
Request::factory('base')->execute();
function callrating ($idpost, $typethumb = '', $liked = '') {
      $result = mysql_query("SELECT up, down FROM `rating_post` WHERE id_post = ".(int)$idpost."");
      $row = mysql_fetch_array($result);
?>   <div class="rating <?=$typethumb?>">
      <a class="rate plus" id="pid_<?=$idpost?>" href="#"></a>
      <div id="rateresult-<?=$idpost?>"><?=$row['up']-$row['down']?></div>
      <?php if ($liked == '') { ?>
      <a class="rate minus" id="pid_<?=$idpost?>" href="#"></a>
      <?php } else {
         echo $liked;
      } ?>
   </div>   
<?php      
            }   
       }
  }
?>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение файлов.Рейтинг
СообщениеДобавлено: 07 май 2012, 11:35 
Не в сети
Бывалый

Зарегистрирован: 27 мар 2012, 14:08
Сообщения: 62
Из файла rating, вытащил вот это:
Код:
 function callrating ($idpost, $typethumb = '', $liked = '') {
   $result = mysql_query("SELECT up, down FROM `rating_post` WHERE id_post = ".(int)$idpost."");
   $row = mysql_fetch_array($result);
        }

И вставил в модель:

Код:
<?php defined('SYSPATH') or die('No direct script access.');
 
class Model_Base extends Model{
   
     public function golos(){

        $sql = "SELECT * FROM ". $this->_tablerating;
 
        return DB::query(Database::SELECT, $sql)
                   ->execute('updatabase', 'rating', 'rateaction');
       
                  function callrating ($idpost, $typethumb = '', $liked = '') {
   $result = mysql_query("SELECT up, down FROM `rating_post` WHERE id_post = ".(int)$idpost."");
   $row = mysql_fetch_array($result);
        }
    }
}



То ?
Блин,бред какой то получается


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение файлов.Рейтинг
СообщениеДобавлено: 08 май 2012, 00:38 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
Канеш бред.
Запрос в методе
Код:
function callrating ($idpost, $typethumb = '', $liked = '')

надо переписать для Коханы.

Код:
<?php defined('SYSPATH') or die('No direct script access.');
 
class Model_Base extends Model{

    protected $_tableRating = 'rating_post';
   
     public function golos()
    {

        $sql = "SELECT * FROM ".  $_tableRating;
 
        return DB::query(Database::SELECT, $sql)
                   ->execute('updatabase')->as_array();
    }

    public function callrating ($idpost, $typethumb = '', $liked = '')
    {
        $sql = "SELECT up, down FROM `rating_post` WHERE id_post = :id_post";
        $query = DB::query(Database::SELECT, $sql);
                ->param(':id_post', (int)$idpost)
                ->execute('updatabase');
        return $query->as_array();
    }


Не понял правда зачем передаются $typethumb = '', $liked = '' и не используются.

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Подключение файлов.Рейтинг
СообщениеДобавлено: 08 май 2012, 01:57 
Не в сети
Бывалый

Зарегистрирован: 27 мар 2012, 14:08
Сообщения: 62
admin писал(а):
Канеш бред.

Спасибо вам большое, прошу прощение что треплю нервы)
модель base изменен,
тогда получается из файла rating,я убераю вот эти строки,по идеи они в моделе же используются?
Код:
function callrating ($idpost, $typethumb = '', $liked = '') {
      $result = mysql_query("SELECT up, down FROM `rating_post` WHERE id_post = ".(int)$idpost."");
      $row = mysql_fetch_array($result);

А файл rateaction, я оставлю без изменений.
так?
Код:
<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Rateaction extends Controller{
   
   
    public function action_index()
               {
   $id = (int)$_POST['idpost'];
$action = $_POST['action'];
$ip = mysql_escape_string($_SERVER['REMOTE_ADDR']);

$result = mysql_query("SELECT ip, id_post FROM rating_post_ip WHERE id_post = '".$id."' AND ip = '".$ip."'");
$count = mysql_num_rows($result);

if ($count == 0) {
   $result = mysql_query("SELECT id_post, up, down FROM rating_post WHERE id_post = '".$id."'");
   $row = mysql_fetch_array($result);
   $nowPlus = $row['up']; $nowMinus = $row['down'];
   
   if ($row['id_post']=='') {
      mysql_query("INSERT INTO `rating_post` VALUES ( '".$id."',  '0',  '0');");
      $nowPlus = 0; $nowMinus = 0;         
   }

   if ($action == 'plus') {
      $nowPlus = $nowPlus + 1;
      $upR = mysql_query("UPDATE rating_post SET up = up+1 WHERE id_post = '".$id."'");
   } else {
      $nowMinus = $nowMinus + 1;
      $upR = mysql_query("UPDATE rating_post SET down = down+1 WHERE id_post = '".$id."'");
   }
   
   mysql_query("INSERT INTO `rating_post_ip` VALUES ( '".$ip."', '".$id."' );");

   echo ($nowPlus-$nowMinus);
}else{
   echo 'Повторное голосование!';
              }
        }
}


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 44 ]  На страницу 1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group