Вопрос-Ответ по php
6067
Кураторы темы:
Андрюха
0
5776. iNeeXT, а если категории в цикле выводятся? То все равно можно через css организовать?
0
Есть тейбл:
Как правильно сделать запрос чтобы получить верный статус для юзера в зависимости от кол-а его кармы? Например у него кармы 6 единиц, значит должно выводить "Чайник".
CREATE TABLE IF NOT EXISTS `status` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `min_karma` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ; -- -- Dumping data for table `status` -- INSERT INTO `status` (`id`, `name`, `min_karma`) VALUES (1, 'Новичок', 0), (2, 'Чайник', 5);
Как правильно сделать запрос чтобы получить верный статус для юзера в зависимости от кол-а его кармы? Например у него кармы 6 единиц, значит должно выводить "Чайник".
Изменил: Михаил (15.07.2013 / 18:20)
0
Если сама карма уже получена
select * from status order by ($carma-min_karma)<0, ($carma-min_karma) limit 1Если известен, например, только id пользователя:
select *,(select name from status order by (karma-min_karma)<0, (karma-min_karma) limit 1) from users where id=$idЕсли нужно для списка пользователей, то как-нибудь так
select * from (select *, name from users, status order by users.id, (carma-min_karma)<0, carma-min_karma ) X group by id
Дмитрий
01.08.2013 / 15:19
Пришелец
Пришелец
0
Ребят в чем ошибка? Не вырезает.
<?php $str = preg_replace('#<span style="color:( .*?)">(.*?)</span>#su','\2', $str); ?>
0
С точки хрения безопасности: не опасно брать данные из $_GET для формирования номера страницы
$stran=@$_GET['page']; $stran=intval($stran); $stran= $stran /5; $stran= ceil($stran); if ($stran!=0) { $add2title = ' (стр.'.$stran.')'; } else { $add2title = ''; }или надо ещё как-то фильтровать?
0
5781. Капец Прокофьевич, если фильтруешь числа то abs(intval($stran)) или (int) $stran,хотя в твоем случае скорей всего безопасно т.к. после делаешь деление, используешь ceil.
P.S. не стоит давить ошибки через @, лучше так:
P.S. не стоит давить ошибки через @, лучше так:
$stran = !empty($_GET['page']) ? (int) $_GET['page'] : 0;
Изменил: Изнаур (01.08.2013 / 21:28)
Макс
02.08.2013 / 01:00
Пришелец
Пришелец
0
Какой самый простой, и частоиспользуемых способ сделать смену языков на сайте?
Станислав Крунич
09.08.2013 / 09:31
Пришелец
Пришелец
0
У себя так всегда определял.. Вариант универсальный
На сайте есть например 3 языка (RUS | EN | UA )
При первом заходе на сайт, определение берется из HTTP_ACCEPT_ENCODING, или же если в url была ссылка по шаблону /(ua|ru|en) он подключает язык из моего конфига далее все это записывает в Cookies и уже при следующем обновлении страницы берет из Cookies . Сменить в Cookies другую локализацию, можно перейдя по ссылкам на сайте /(ua|ru|en) и он снова перезапишет локаль
Добавлено через 01:10 сек.
/**
* initLocale(MvcEvent $e) метод установки локализации сайта
* по URL , запись в кукис или сессию (по defaul из HTTP_ACCEPT_LANGUAGE )
* @param \Zend\Mvc\MvcEvent $e
* @access public
* @return null
*/
public function initLocale(MvcEvent $e)
{
$app = $e->getApplication(); // приложение
//$response = $e->getRequest()->getHeaders()->get('Accept-Language')->getPrioritized();
$acceptLocale = \Locale::acceptFromHttp($e->getRequest()->getServer('HTTP_ACCEPT_LANGUAGE'));
$acceptLang = substr(strtolower($acceptLocale), 0, 2);
$translator = $app->getServiceManager()->get('MvcTranslator'); // получаем объект translator'a
$cookies = $app->getRequest()->getCookie(); // достаю куки
$shortLang = $e->getRouteMatch()->getParam('lang'); // ищу в url &lang=??
$config = $app->getServiceManager()->get('Config'); // достаю настройки
$translator->setCache($this->__setCacheStorage(1)); // кэширую локаль
На сайте есть например 3 языка (RUS | EN | UA )
При первом заходе на сайт, определение берется из HTTP_ACCEPT_ENCODING, или же если в url была ссылка по шаблону /(ua|ru|en) он подключает язык из моего конфига далее все это записывает в Cookies и уже при следующем обновлении страницы берет из Cookies . Сменить в Cookies другую локализацию, можно перейдя по ссылкам на сайте /(ua|ru|en) и он снова перезапишет локаль
Добавлено через 01:10 сек.
/**
* initLocale(MvcEvent $e) метод установки локализации сайта
* по URL , запись в кукис или сессию (по defaul из HTTP_ACCEPT_LANGUAGE )
* @param \Zend\Mvc\MvcEvent $e
* @access public
* @return null
*/
public function initLocale(MvcEvent $e)
{
$app = $e->getApplication(); // приложение
//$response = $e->getRequest()->getHeaders()->get('Accept-Language')->getPrioritized();
$acceptLocale = \Locale::acceptFromHttp($e->getRequest()->getServer('HTTP_ACCEPT_LANGUAGE'));
$acceptLang = substr(strtolower($acceptLocale), 0, 2);
$translator = $app->getServiceManager()->get('MvcTranslator'); // получаем объект translator'a
$cookies = $app->getRequest()->getCookie(); // достаю куки
$shortLang = $e->getRouteMatch()->getParam('lang'); // ищу в url &lang=??
$config = $app->getServiceManager()->get('Config'); // достаю настройки
$translator->setCache($this->__setCacheStorage(1)); // кэширую локаль
Станислав Крунич
09.08.2013 / 09:34
Пришелец
Пришелец
0
if(isset($shortLang) && preg_match("/[a-z]{2}?/i", $shortLang)) // если нашли в URL
{
if(isset($config['languages'][$shortLang]))
{
// Устанавливаю локаль и куки на 1 мес
$translator->setLocale($config['languages'][$shortLang]['locale']);
setcookie('lang', $shortLang, time()+2878400, '/', $e->getRequest()->getServer('HTTP_HOST'));
$e->getViewModel()->setVariables(array('lang' => $shortLang)); // устанавливаю в layout
}
}
else // если не нашли в URL, читаем сначала из кук
{
if(isset($cookies['lang']) && preg_match("/[a-z]{2}?/", strtolower($cookies['lang'])))
{
if(isset($config['languages'][$cookies['lang']]['locale'])) {
$translator->setLocale($config['languages'][$cookies['lang']]['locale']);
$e->getViewModel()->setVariables(array('lang' => $cookies['lang'])); // устанавливаю в layout
}
else {
$translator->setLocale($config['languages'][$acceptLang]['locale']);
$e->getViewModel()->setVariables(array('lang' => $acceptLang)); // устанавливаю в layout
}
}
else
{
$translator->setLocale($config['languages'][$acceptLang]['locale']); // ставлю из браузера
$e->getViewModel()->setVariables(array('lang' => $acceptLang)); // устанавливаю в layout
}
}
}
Добавлено через 01:07 сек.
Вызываю так
[php]
/**
* onBootstrap(MvcEvent $e) Этот метод слушатель (listeners) события bootstrap
* в рамках событийной модели ZF2
* инкапсулятор различных палагинов (сервисов) при автозагрузке
* @access public
* @param \Zend\Mvc\MvcEvent $e
* @return object
*/
public function onBootstrap(MvcEvent $e)
{
$app = $e->getApplication(); // Наше приложение
$sm = $app->getServiceManager(); // Сервис менеджер
$e = $app->getEventManager(); // Менеджер событий
$e->attach(MvcEvent: VENT_ROUTE, array($this, 'initLocale'), 1); // локаль
}
[/php]
{
if(isset($config['languages'][$shortLang]))
{
// Устанавливаю локаль и куки на 1 мес
$translator->setLocale($config['languages'][$shortLang]['locale']);
setcookie('lang', $shortLang, time()+2878400, '/', $e->getRequest()->getServer('HTTP_HOST'));
$e->getViewModel()->setVariables(array('lang' => $shortLang)); // устанавливаю в layout
}
}
else // если не нашли в URL, читаем сначала из кук
{
if(isset($cookies['lang']) && preg_match("/[a-z]{2}?/", strtolower($cookies['lang'])))
{
if(isset($config['languages'][$cookies['lang']]['locale'])) {
$translator->setLocale($config['languages'][$cookies['lang']]['locale']);
$e->getViewModel()->setVariables(array('lang' => $cookies['lang'])); // устанавливаю в layout
}
else {
$translator->setLocale($config['languages'][$acceptLang]['locale']);
$e->getViewModel()->setVariables(array('lang' => $acceptLang)); // устанавливаю в layout
}
}
else
{
$translator->setLocale($config['languages'][$acceptLang]['locale']); // ставлю из браузера
$e->getViewModel()->setVariables(array('lang' => $acceptLang)); // устанавливаю в layout
}
}
}
Добавлено через 01:07 сек.
Вызываю так
[php]
/**
* onBootstrap(MvcEvent $e) Этот метод слушатель (listeners) события bootstrap
* в рамках событийной модели ZF2
* инкапсулятор различных палагинов (сервисов) при автозагрузке
* @access public
* @param \Zend\Mvc\MvcEvent $e
* @return object
*/
public function onBootstrap(MvcEvent $e)
{
$app = $e->getApplication(); // Наше приложение
$sm = $app->getServiceManager(); // Сервис менеджер
$e = $app->getEventManager(); // Менеджер событий
$e->attach(MvcEvent: VENT_ROUTE, array($this, 'initLocale'), 1); // локаль
}
[/php]
Станислав Крунич
09.08.2013 / 09:38
Пришелец
Пришелец
0
PS. Это Zend 2 . но легко переделать под себя и будет у вас теперь универсальный LocalSetup.
О , Боже, кто администратор этого убожества ? Почему я раскладываю свое сообщение на 3!!!! Куска !!! И каждый раз пишет что надо ждать 60 сек! Вы че блин ? Как в танке сидите )) Я же зарегистрировался тут , почему не имею права писать сообщения.. Ужс, 19 век
О , Боже, кто администратор этого убожества ? Почему я раскладываю свое сообщение на 3!!!! Куска !!! И каждый раз пишет что надо ждать 60 сек! Вы че блин ? Как в танке сидите )) Я же зарегистрировался тут , почему не имею права писать сообщения.. Ужс, 19 век
Для выполнения действия необходимо авторизоваться!