-
Posts
367 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Store
Everything posted by Gold Dragon
-
dostel1, у тебя пример очень древний, для PHP 5x (а он практически везде сейчас) нужно писать public static function foo(){...}
-
Ты можешь просто обращаться к определённому символу $a = 'qwerty'; echo $a[3] . $a[2] . $a[1];
-
i - символы не зависят от регистра u - строка рассматривается в кодировке UTF-8, просто у меня все проекты в этой кодировке, уже пишу машинально fiver, код то работает?
-
вот я и говорю что структура не правильная.. Нужно в базе было оставить идентификатор пользователя, а ФИО в отдельную таблицу. И При группировке не будет дублей
-
fiver, выложи дамп базы, а то создавать новую лень
-
ну да ну да Ну так уже сказали воспользоваться GROUP BY
-
ну в принципе тебе ответ уже дали.. Воспользуйся сортировкой по количеству баллов по убыванию, сгруппируй по идентификатору пользователя и баллам и в LIMIT поставь три записи
-
Вот и я говорю что ошибка проектирования структуры базы!!! У тебя участвуют не ЛЮДИ, а РАБОТЫ (ФОТОГРАФИИ). А значит баллы прибавляются работам.. А вот уже к работам привязываются пользователи.. Нужно или новое поле вводить ИМЯ_РАБОТЫ или делать согласующую таблицу пользователей. А скорее всего и то и другое. И тогда ты просто в запросе получаешь рейтинг работ отсортированных по баллам и сгруппированных по пользователям
-
ну это уже вопрос другой темы.. но вот этот код сможет помочь немного // массив первичных названий улиц $a = array( "Лесная 2-я", "Совхозный переулок 1-й", "Ленина", "Микрорайон 3-й Зеленоград", "Кутозова 2-й Химки" ); // получаем массив с новыми данными $b = getRenameStreet($a); // пример результата echo '<h3>Исходник:</h3><pre>'; print_r($a); echo '</pre>'; echo '<hr><h3>Результат:</h3><pre>'; print_r($; echo '</pre>'; /** * Делаем отдельную функцию перевёртывания названий улиц * @param array $arr - массив старых названий улиц * @return array - массив новых названий улиц */ function getRenameStreet($arr){ $result = array(); // перебираем весь архив foreach($arr as $str){ // условие разбитие $pat = "#^([а-яА-ЯёЁ ]+)\s*([\d]-[йЙяЯ])?\s*(.*)$#iu"; // разбиваем строку preg_match($pat, $str, $tmp); // собираем новую строку // проверяем есть ли числовая переменная $str = ($tmp[2] != '') ? $tmp[2] . ' ' . trim($tmp[1]) : trim($tmp[1]); // проверяем есть ли населённый пункт $str = ($tmp[3] != '') ? $str . ', ' . $tmp[3] : $str; // добовляем в новый массив $result[] = $str; } // возврат результата return $result; }
-
fiver, хотел тебе помочь, но чувствую что запутался Как так получается что у тебя один и тот же человек в одной и той же категории, в одной и той же подкатегории, в одной и той же группе имеет несколько очков (т.е. несколько записей)? Я так понимаю это ошибка проектирования базы данных Пример очень не удачный, при правильно проектировании дублирование не может быть (ну или не должно) И тут вообще не зачем работать с массивом. Нужно изначально делать нужный запрос к базе. Например, сделать функцию которой отдавать категорию+подкатегорию+возраст и получать массив готового результата
-
Ну так спрашивай.. Я в своём примере несколько подходов к обработки данных в строке предложил
-
так я же сказал.. было немножко свободного времи Кстати, жалко что на этом форуме нет функции Ajax-подкачки схожих тем.. Т.е. человек вводит название темы, а ему тут же показываются похожие. Как на Винграде. Очень удобно
-
Ну конечно ДА(!) Просто не совсем понятно как эти данные поступают. А может их на дискетах по одной строке привозят .. Да и иногда нужно и мозги по разминать Тем более, данные не структуированы, т.ч. всё равно нужна обработка..PS я про ссылки на сами поисковики, а не на ссылка на конкретные материалы И я против ссылаться на другие ресурсы (ну за исключением конечно явно документации и т.п.). Лучше тут привести пример, чтобы на других форумах делали ссылки на этот
-
Вот тут было немного времени и накидал маленькую функцию для преобразования строки.. Может чуть увлёкся, но вроде заставил себя остановиться.. А вообще, строка не может наверное быть одна, а значит нужно ещё добавить цикл для обработки массива.. И ещё вообще-то можно сразу забирать данные из файла. Ну и т.д вот собственно код, весь комментарий в коде // одна строка из базы $a = "2;Цветной бульвар м.;5п;Печатников пер.;3;2/6м;60/40/15;Б;ПГ"; // получаем массив с данными $array_data = getData($a); // результат echo '<pre>'; print_r($array_data); echo '</pre>'; /** * Делаем отдельную функцию для обработки строки * @param string $str - строка с данными * @return array - массив с данными */ function getData($str){ // присваиваем сразу всем переменным их значения list($result['kol_komnat'], $result['metro'], $result['minut_ot_metro'], $result['ul'], $result['dom'], $etaz, $sq_ob, $balkon, $lift) = explode(';', $str); // получаем переменную $kak $result['kak'] = (strpos($result['minut_ot_metro'], 'п')) ? 'Пешком' : 'Транспортом'; // удаляем буквы из значения $result['minut_ot_metro'] = intval($result['minut_ot_metro']); // получаем все данные по этажу и зданию preg_match('#^([\d]*)\/([\d]*)([а-я]*)$#iu', $etaz, $tmp); // этаж $result['etaz'] = $tmp[1]; // этажность $result['etaznast'] = $tmp[2]; // здание if($tmp[3] == 'м' or $tmp[3] == 'М') $result['zdanie'] = "Моноглит"; elseif($tmp[3] == 'к' or $tmp[3] == 'К') $result['zdanie'] = "Кирпич"; elseif($tmp[3] == 'д' or $tmp[3] == 'Д') $result['zdanie'] = "Дерево"; else $result['zdanie'] = "Иное"; // получаем данные по квартире list($result['sq_ob'], $result['sq_zh'], $result['sq_kuh']) = explode('/', $sq_ob); // получаем данные по балкону if($balkon == 'б' or $balkon == 'Б') $result['balkon'] = "Есть (балкон)"; elseif($balkon == 'л' or $balkon == 'Л') $result['balkon'] = "Есть (лоджия)"; else $result['balkon'] = "Нет"; // получсаем данные по лифту if(strlen($lift)== 2) $result['lift'] = "Пассажирский и грузовой"; elseif(strpos($lift, 'п') or strpos($lift, 'П')) $result['lift'] = "Пассажирский"; elseif(strpos($lift, 'г') or strpos($lift, 'Г')) $result['lift'] = "Грузовой"; else $result['lift'] = "Нет"; // возврат результата return $result; } PS Зря ссылки делаешь на поисковики так ты с форума и людей и поисковых пауков уводишь, т.е. только минус для рекламы..
-
Кстати, а что всё таки лучше если задача "скрыть", через PHP+MySQL или через .htaccess
-
так что бодаться, не бараны же мы тем более человек получил два решения... ps хотя все правила засовывать в .htaccess очень не гибко.. ну если только для простенького сайтика pss интересно, а много веб-серверов на апаче вообще..
-
да согласен я, что для этого примера это самое то
-
LunatiK, так я согласен с тобой полностью и даже не спорю.. Просто у этого способа есть некоторые "НО".. Например, передача ведь идёт на конкретный файл, а если файла не существует
-
так в данном случае ничего не мешает, мы то знаем практически все адреса какие возможно.. вот только структура адресной строки отдельных компонентов сайта бывает очень и очень разной.. всё не предусмотреть.. и всё таки ЧПУ это часть ядра, а не просто надстройка.. так что в код придётся лезть а если понадобится строка не _http://example.com/blog/23 а что-то такое _http://example.com/blog/moya_pervaya_straniza.html
-
ну так моим кодом это _http://example.com/index.php?page=blog&id=23 _http://example.com/index.php?page=article&id=15 _http://example.com/index.php?page=about и будет преобразовано в это _http://example.com/blog/23 _http://example.com/article/15 _http://example.com/about так что введя любой из адресов получится последний но при этом вход один в систему. и это очень безопасно, т.к. контролировать придётся всё в одном месте, а не в каждом файле
-
А причина не использовать такой способ? Вообще-то он более правильный и безопасный
-
novickOk, что значит "добавлю"? модет ты про такое? Допустим есть страница какая-то rules.php. Значит чтобы на неё попасть нам нужно ввести адрес example.com/rules Теперь несколько вариантов решения. 1. Добавить в обработчик новое условие (я предпочитаю именно этот вариант) // обрабатываем страницу about case 'rules': // передаём на обработку fRules(); break; 2. И второй вариант получить из строки страницу 'rules' и подключить соответствующий файл, что-то типа такого $pages = (isset($url[1])) ? $url[1] : ''; if(file_exists('ПУТЬ_ДО_ФАЙЛА/' . $pages . 'php'){ require_once('ПУТЬ_ДО_ФАЙЛА/' . $pages . 'php'); } Да куда проще-то ну просто я добавил несколько проверок, да переадресаций. Просто вдруг понадобится отключать ЧПУ..ну и уже с маленьким кодом реализации (как применять то всё это). Просто сейчас пишу SEF для движка, по этому это очень простая реализация А вот в движке уже проблема.. для каждого компонента свой Sef-файл и своя реализация... Вот там я уже все мозги зажарил... Да, кстати, забыл... по нормальному ссылки будут такими _http://example.com/index.php?page=blog&id=23 _http://example.com/index.php?page=article&id=15 _http://example.com/index.php?page=about т.е. всё подключение через файл index.php
-
LunatiK, думаешь не будет работать? всё вроде подробно прокомментировал