PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (3): [1] 2 3 »

> Найдено сообщений: 44
No0k Отправлено: 14 Октября, 2016 - 19:51:33 • Тема: MVC и запрос к базе через модель • Форум: Объектно-ориентированное программирование

Ответов: 2
Просмотров: 1234
Начал изучать ОПП и попал в проблему. Я из класса Module пытаюсь сделать запрос в класс MySQL который инициализировал в классе Model. При запросе, я получаю не MySQL строки, а просто экземпляр класса. Вот код:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4.  
  5. class Model
  6. {
  7.     protected $config = array();
  8.     protected $db;
  9.  
  10.     public function __construct($set)
  11.     {
  12.         $this->config = $set;
  13.         $this->databaseConnect();
  14.     }
  15.  
  16.     protected function databaseConnect()
  17.     {
  18.         $this->db = new MySQL($this->config);
  19.     }
  20. }
  21.  
  22. class Module extends Model
  23. {
  24.    
  25.     /*
  26.      * Получаем модули
  27.      */
  28.     public function get()
  29.     {
  30.         $a = $this->db->query("SELECT COUNT(*) FROM `modules`");
  31.         return $a;
  32.     }
  33. }
  34. $q = new Module(Vars::get('settings'));
  35. $q->get();
  36.  

Когда я в классе Module вызываю $a = $this->db->query("SELECT COUNT(*) FROM `modules`"); моя IDE подсказывает "Метод query не найден"
Подскажите в чем проблема и как можно оптимизировать запросы?
No0k Отправлено: 11 Марта, 2015 - 15:04:16 • Тема: Kohana - регистрация • Форум: CMS и фреймворки

Ответов: 4
Просмотров: 1460
Суть: когда ввожу ник такой как есть в базе или мыло, то должны выводится ошибки, а они не выводятся.
PHP:
скопировать код в буфер обмена
  1. public function action_registration()
  2.     {
  3.         $data = array();
  4.         if (HTTP_Request::POST == $this->request->method())
  5.         {
  6.             try {
  7.  
  8.                 // производим проверку всех полей
  9.                 $object = Validation::factory($this->request->post());
  10.                 $object
  11.                         ->rule('username', 'not_empty')
  12.                         ->rule('username', 'min_length', array(':value', '4'))
  13.                         ->rule('password', 'not_empty')
  14.                         ->rule('password', 'min_length', array(':value', '5'))
  15.                         ->rule('email', 'email');
  16.  
  17.                 $user = ORM::factory('User') // если проверка пройдена - регистрируем
  18.                         ->set('email', $this->request->post('email'))
  19.                         ->set('username', $this->request->post('username'))
  20.                         ->set('password', $this->request->post('password'))
  21.                         ->save();
  22.  
  23.                 // даем новому пользователю роль для логина
  24.                 $user->add('roles', ORM::factory('Role', array('name' => 'login')));
  25.  
  26.                 // очищаем массив с POST
  27.                 $_POST = array();
  28.  
  29.                 $to = $this->request->post('email');
  30.                 $subject = Kohana::message('account', 'email.themes.registration');
  31.                 $from = Kohana::message('account', 'email.from');
  32.                 $message = 'Вы успешно зарегистрировались с паролем - ' . $this->request->post('password');
  33.                 Email::send($to, $from, $subject, $message, $html = false); // отправляем пользователю сообщение с его паролем
  34.  
  35.                 Auth::instance()->force_login($user); // сразу же авторизуем его, без ввода логина и пароля
  36.                 HTTP::redirect('/user');
  37.             } catch (ORM_Validation_Exception $e) {
  38.  
  39.                 // если во время валидации возникли ошибки
  40.                 $data['messageReg'] = Kohana::message('account', 'errorReg');
  41.                 $data['errors'] = $e->errors('models');
  42.                 // берем значения ошибок из файла /application/messages/model/user.php
  43.             }
  44.         }
  45.         $data['email'] = array_key_exists('email', $this->request->post()) ? htmlspecialchars($this->request->post('email')) : '';
  46.         $data['username'] = array_key_exists('username', $this->request->post()) ? htmlspecialchars($this->request->post('username')) : '';     // вставляем данные в формы, если они были введены
  47.         $this->template->content = View::factory('/auth/registration_form',$data);
  48.        
  49.     }
No0k Отправлено: 18 Февраля, 2015 - 12:09:48 • Тема: Проверка наличия поля и авторизация • Форум: Вопросы новичков

Ответов: 0
Просмотров: 172
Добрый день. Делаю авторизацию через Steam.
Цитата:
Логика:
Пользователь входит через steam, я получаю его steam_id, мне надо найти этот steam_id в уже зарегистрированных пользователях и есть есть, то авторизировать, если нет, то создать пользователя.

PHP:
скопировать код в буфер обмена
  1. public function SteamAuth() {
  2.         try {
  3.  
  4.             require ('openid.php');
  5.             $openid = new LightOpenID('shop');
  6.             if (!$user_id) {
  7.                 if (!$openid->mode) {
  8.                     if (isset($_GET['login'])) {
  9.                         $openid->identity = 'http://steamcommunity.com/openid';
  10.                         header('Location: ' . $openid->authUrl());
  11.                     }
  12.                     echo "<form action=\"?login\" method=\"post\"> <input type=\"image\" src=\"http://cdn.steamcommunity.com/public/images/signinthroughsteam/sits_small.png\"></form>";
  13.                 }
  14.                 elseif ($openid->mode == 'cancel') {
  15.                     echo Core::msg_show(__('SteamСanceledAuthentication'));
  16.                 }
  17.                 else {
  18.                     if ($openid->validate()) {
  19.                         $id = $openid->identity;
  20.                         $ptn = "/^http:\/\/steamcommunity\.com\/openid\/id\/(7[0-9]{15,25}+)$/";
  21.                         $_SESSION['steamid'] = $matches[1];
  22.                         preg_match($ptn, $id, $matches);
  23.                         $valid = new Validator($_SESSION['steamid'], array('steamid' => 'Индетификатор'));
  24.                         $rules = array($_SESSION['steamid'], 'in_list', array('table' => 'user', 'row' => 'steamid'));
  25.                         if ($valid->check($rules) == TRUE) {
  26.                             //тут пользователь есть, надо найти его id и авторизировать
  27.                            
  28.                         }
  29.                         else {
  30.                        
  31.                         }
  32.                     }
  33.                     else {
  34.                         echo Core::msg_show(__('SteamBadCheck'));
  35.                     }
  36.                 }
  37.             }
  38.         } catch (ErrorException $e) {
  39.             echo $e->getMessage();
  40.         }
  41.     }
  42.  

Я вот нашел его steam_id и хочу авторизировать через его id, но как взять id не знаю. Подскажите пожалуйста. Или же другую логику, если есть лучше.
No0k Отправлено: 11 Января, 2015 - 02:33:44 • Тема: Как осуществить интерактивную карту и поместить на нее ярлыки • Форум: Вопросы новичков

Ответов: 5
Просмотров: 269
3d_killerисходниками поделитесь?
No0k Отправлено: 09 Января, 2015 - 03:36:57 • Тема: Как осуществить интерактивную карту и поместить на нее ярлыки • Форум: Вопросы новичков

Ответов: 5
Просмотров: 269
Как осуществить интерактивную карту и поместить на нее ярлыки?
Вот живот пример: dayzdb.com/map
Дайте толчок в правильном направлении.
No0k Отправлено: 13 Ноября, 2014 - 16:44:45 • Тема: Неизвестная переменная из класса. • Форум: Вопросы новичков

Ответов: 3
Просмотров: 248
esterio пишет:
может $user_id нужно передать в characters.

Вы чуть не поняли, у меня в characters берется глобальная переменная $user и с нее я беру id.
Суть в том что если работать так:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. //$headmod = 'okrestnosti';//фикс. места
  4.  
  5. include '../engine/includes/start.php';
  6. include incDir. 'head.php';
  7. Game::start($user_id);
  8. Game::going();
  9. $userPlace  = $sql->query("SELECT * FROM `place` WHERE `nick` = '".$user['nick']."' LIMIT 1")->fetch();
  10. $world = $sql->query("SELECT * FROM `world` WHERE `city` = '$characters[city]' and `x`='$userPlace[x]' and `y`='$userPlace[y]'")->fetch();
  11.  
  12.  
  13. ?>

Выдает: Undefined variable: characters | Файл X:\home\dayz\www\pages\world.php | Линия - 10
No0k Отправлено: 13 Ноября, 2014 - 16:17:31 • Тема: Неизвестная переменная из класса. • Форум: Вопросы новичков

Ответов: 3
Просмотров: 248
Можешь подсказать почему когда вывожу:
Game::start($user_id); потом делаю запрос к $characters - он выдает $characters неизвестной переменной
Class:
PHP:
скопировать код в буфер обмена
  1. class Game {
  2.     static function start($user_id){
  3.         if ($user_id) {
  4.             //return self::buff();
  5.             return self::characters();
  6.         }
  7.         else {
  8.             return __('Что бы играть нужно авторизоватся.');
  9.         }
  10.     }
  11.     static function characters(){
  12.         global $sql,$user;
  13.         $characters = $sql->query("SELECT * FROM `characters` WHERE `id` = '".$user['id']."' LIMIT 1")->fetch();
  14.         return $characters;
  15.     }
  16. }
No0k Отправлено: 13 Октября, 2014 - 10:10:56 • Тема: Как вытянуть имя в переменную из регулярки • Форум: Вопросы новичков

Ответов: 1
Просмотров: 116
Имею регулярное выражение:
$str = "у @example сегодня день рождения.";
$str = preg_replace("/@([\S]+)/", "<a href='/id".$id."'>@$1</a>", $str);

Ну вот, мне надо сделать так что бы когда кто-то вводит @%nick_user%, то мы ищем его ник в базе и присвиваем ссылку на id.
Как осуществить?
No0k Отправлено: 28 Сентября, 2014 - 21:17:10 • Тема: Как узнать откуда юзер пришел • Форум: Вопросы новичков

Ответов: 4
Просмотров: 348
Пробовал просто тупо выводить: echo $_SERVER["HTTP_REFERER"];
Ищу какое-то решение. Улыбка
No0k Отправлено: 28 Сентября, 2014 - 19:40:04 • Тема: Как узнать откуда юзер пришел • Форум: Вопросы новичков

Ответов: 4
Просмотров: 348
Мне надо узнать откуда юзер перешел по моей ссылке. Т.е. перешел с example.com на helpme.com и мне надо узнать что юзер пришел с example.com.
Как осуществить?
Пробовал: $_SERVER["HTTP_REFERER"] но выдает: Undefined index: HTTP_REFERER
No0k Отправлено: 18 Сентября, 2014 - 22:25:04 • Тема: Проблемма с moriss.js • Форум: JavaScript & VBScript

Ответов: 0
Просмотров: 550
Сделал вот такой график:
CODE (html):
скопировать код в буфер обмена
  1.                                         <link rel="stylesheet" href="http://cdn.oesmith.co.uk/morris-0.5.1.css">
  2.                                         <script src="//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>
  3.                                         <script src="../template/js/plugins/morris/morris.min.js" type="text/javascript"></script>
  4.                                         <script type="text/javascript">
  5.                                                 $(function() {
  6.                                                         "use strict";
  7.  
  8.                                                         // AREA CHART
  9.                                                         var area = new Morris.Area({
  10.                                                                 element: 'lol',
  11.                                                                 resize: true,
  12.                                                                 data: [{"hour":"22:00-23:00","host":1,"hits":3},{"hour":"23:00-24:00","host":0,"hits":20}],
  13.                                                                 xkey: 'hour',
  14.                                                                 ykeys: ['host', 'hits'],
  15.                                                                 labels: ['Поситетели', 'Переходи'],
  16.                                                                 lineColors: ['#a0d0e0', '#3c8dbc'],
  17.                                                                 hideHover: 'auto'
  18.                                                         });
  19.                                                 });
  20.                                         </script>
  21.                                         <div class="chart" style="height:300px;" id="lol"></div>


Получается вот что:
Спойлер (Отобразить)

Хотя я хочу что бы вместо: 0
1923-01
1922-12
1922-11
1922-10
1922-09
1922-08
1922-07
1922-06
1922-05
1922-04
1922-03
Были значения: hour из data. А что это за символы вобще хз, подскажите как правильно сделать?
No0k Отправлено: 18 Сентября, 2014 - 21:15:56 • Тема: Как после каждого элемента ставить запятая, а перед последним нет • Форум: Вопросы новичков

Ответов: 2
Просмотров: 191
Мелкий пишет:
No0k пишет:
<script type="text/javascript">

Сформируйте массив и скормите json_encode. Получите строку, которую можно передать в data:без каких-либо изменений.

И довольно уже извращений с mktime, используйте штатный datetime.
И делать select * только ради num_rows - отвратительная идея. Сделайте select count(*) и fetchColumn и получите искомое число без сношения базы.
Ну и запрос в цикле здесь не нужен. select hour(`datetime`), count(0) from `tablename` where /*сегодня, весь день*/ group by 1

Я думал над json_encode, но моих знаний мало длят того что бы сделать массив с именами:
т.е. как сделать: {y: '2012 Q1', item1: 6810, item2: 1914}?
Над остальным сейчас буду работать, спасибо большое Улыбка
No0k Отправлено: 18 Сентября, 2014 - 20:57:20 • Тема: Как после каждого элемента ставить запятая, а перед последним нет • Форум: Вопросы новичков

Ответов: 2
Просмотров: 191
У меня есть вот гкод:
Спойлер (Отобразить)


Как сделать что бы если в data больше 1 елемента ставилась запятая и на последнем не ставилась?
PHP:
скопировать код в буфер обмена
  1. if($hosts > 0 || $hits > 0) {?>
  2. {y: 'Посещение с <?PHP echo $hour.':00 по '.($f).':00';?>', item1: <?PHP echo $hosts;?>, item2: <?PHP echo $hits;?>}

И да, можете подсказать как сделать этот код лучше Улыбка
(Добавление)
Как после каждого элемента ставить запятая, а после последнего - нет*
No0k Отправлено: 08 Сентября, 2014 - 22:29:46 • Тема: Как подругажать те данные которые находятся в базе • Форум: JavaScript & VBScript

Ответов: 8
Просмотров: 2240
Viper пишет:
Тю... тупанул... Вам надо чтобы там int был...

Бред вот этот уберите
PHP:
скопировать код в буфер обмена
  1. echo $data[] = Array($OS['platform'], $OS['cnt']);


PHP:
скопировать код в буфер обмена
  1. $data[] = array($OS['platform'], (int)$OS['cnt']);

или
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?PHP echo json_encode($data, JSON_NUMERIC_CHECK); ?>
зависит от версии phpВы мне дали очень много материала и я вам очень благодарен. Все получилось и опять я матерю гугл за то что его чарты не умеют работать с двойными кавычками (""), т.е. надо что бы было: ['Windows',4], а не ["Windows",4] Закатив глазки Закатив глазки Закатив глазки
No0k Отправлено: 07 Сентября, 2014 - 15:49:26 • Тема: Как подругажать те данные которые находятся в базе • Форум: JavaScript & VBScript

Ответов: 8
Просмотров: 2240
Viper пишет:
No0k пишет:
Подскажите в чем косяк?

PHP:
скопировать код в буфер обмена
  1. $arr1 = array(array('foo', 1));
  2. $arr2 = array('bar', 2);
  3.  
  4. echo '<pre>';
  5. echo json_encode($arr1);
  6. echo '<br />';
  7. echo json_encode($arr2);
  8. echo '</pre>';

Смотрите на разницу.


Паосмотрел, попробовал - не получилось. Все равно число берется в кавычки. Недовольство, огорчение

Страниц (3): [1] 2 3 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB