RewriteRule ^(.*)([^\/]+)/([^\/]*)file\.php$ $1$2_$3file.php [NC,QSA]
Это работает! Но если file.php был указан для примера, то необходимо уточнить что должно быть
-K- добавил 03.01.2009 в 22:04
Чето не сообразил сразу, если просто все / заменить на _ то:
RewriteRule ^(.*)([^\/]+)/([^\/]+)$ $1$2_$3 [NC,QSA]
RewriteRule ^(.*)$ index.php?query=$1
Ничего сложного и ресурсоемкого, пример выше. На PHP разбирать 100% выйдет дороже и сложнее.
Ну один пункт можете смело вычеркивать - это web-zona.
Я как то писал отзыв про его доску объявлений: Хочу предупредить возможных покупателей web-zona, но с биржей труда скорее всего тоже самое. Так что, что бы не терять время, нервыи деньги - лучше даже не смотрите в эту сторону. :)
Вот сканер неплохой XSpider, есть демо версия с неплохим функционалом:
http://www.ptsecurity.ru/xs7download.asp
Попробуй Eclipse, во первых бесплатный и ИМХО удобней на много http://www.eclipse.org/pdt/
Вот вам для начала почитать: Основы проектирования реляционных баз данных и Отложенная инициализация
Я не предлагаю для выборки на вывод джоинить с ней сразу все таблицы со справочниками, а получать их при необходимости (см. мой пост выше).
С технической точки зрения в текущей версии сделать это невозможно.
Как можно и нужно сделать!
Сделать опять же справочники данных, что бы теже самые типы кузовов подставлялись не в шаблоне, а брались из справочника. Тогда в объявлении в поле с типом кузова будет хранится не слово varchar() а целое число - ссылка на справочник. Или же если подразумевается выбор нескольких пунктов как предлагается с приводом - то делать через таблицу связки. Данный подход позволяет сохранить целостность данных и легкость внесения новых данных. Но это конечно же ничтожно посравнению с производительностью при выборке по определенным условиям.
Сравните:
CarType ---------------- Id | Title ---------------- 1 | Дизель 2 | Бензин 3 | Гибрид ---------------- Car ---------------- Id | CarTypeId | ... ---------------- 1 | 1 2 | 1 3 | 3 ........ ----------------
или же как у Вас:
Car ---------------- Id | CarType | ... ---------------- 1 | Дизель 2 | Дизель 3 | Бензин ........ ----------------
В результате для выбора автомобилей с дизельным двигателем получаем:
1: SELECT * FROM car WHERE CarTypeId=1
2: SELECT * FROM car WHERE CarType='Дизель'
При поиске же дизельного переднеприводного автомобиля автомобиля с MP3 магнитолой, левым рулем и автоматической коробкой БД просто обалдеет.
Да ровно нисколько времени не экономится на этом!
Я не предлагаю при каждом обращении к объявлению дергать целиком все его значения из справочников, а сделать это "ленивой" выборкой - по мере обращения. Таким образом запрос на выбор значения по первичному ключу (да еще и в большинстве случаев из небольшой таблички), да еще если и с кешированием не затруднит и будет совершенно не заметной!
Я бы сделал примерно так:
class Car { protected $id = null; protected $type = null; protected $typeId = null; .... public function getId() { return $this->id; } public function getType() { if (is_null($this->type)) { $this->type = DbSQL::getTypeById($this->typeId); } return $this->type; } } class CarType { protected $id = null; protected $title = null; .... public function getId() { return $this->id; } public function getTitle() { return $this->title; } } ///Таким образом получив из базы $car мы выводим: echo $car->Id . ": " . $car->getType()->getTitle();
Так что есть еще над чем работать и работать, а номер этой версии лучше изменить с 1.2 на 0.1.2 🚬
Может проще регэкспом, как мускле сразу не скажу, но можно выбрать изменить и проапдейтить.
Регулярка вот такая:
$tel = preg_replace("/^.*?(\([^ ]*?[ ].*?)[ ].*$/i", "\\1", $tel);
Проект подойдет может быть только для какого нить небольшого сайта с посещаемостью ~100человек.
Иначе просто не удобно пользоваться и искать объявления.
При работе с сущностями - абсолютное отсутствие справочников, за исключением разве что городов, да и то мнимо...
`city_id` int(11) NOT NULL, `city` varchar(255) NOT NULL, ... `proizvoditel_id` int(11) NOT NULL, `proizvoditel` varchar(255) NOT NULL, ... `model_id` int(11) NOT NULL, `model` varchar(255) NOT NULL,
Записывать в таблицу с объявлением название города - не продуктивная оптимизация, а накладные расходы. Все остальные же сущности пишутся в базу как есть текстом в отдельные поля или скопом (как "дополнительные опции" - видимо для облегчения вывода :) )и по ним же идет сравнение, к примеру, в форме редактирования.
`sostoyanie` varchar(9) NOT NULL, `tip_kuzova` varchar(16) NOT NULL, `toplivo` varchar(6) NOT NULL, `korobka` varchar(11) NOT NULL, `privod` varchar(8) NOT NULL, `dopolnitelno` text NOT NULL, `opcii` text NOT NULL,
<td class="form1">Топливо <b class="red">*</b><BR></td> <td class="form2"> <SELECT name="toplivo"> <option></option> <option value="Бензин"<?php if(!empty($_POST['toplivo'])){if($_POST['toplivo'] == 'Бензин'){echo ' selected';}} ?>>Бензин</option> <option value="Дизель"<?php if(!empty($_POST['toplivo'])){if($_POST['toplivo'] == 'Дизель'){echo ' selected';}} ?>>Дизель</option> <option value="Гибрид"<?php if(!empty($_POST['toplivo'])){if($_POST['toplivo'] == 'Гибрид'){echo ' selected';}} ?>>Гибрид</option> </SELECT>
Таким образом добавить новую опцию или еще какое значение в список довольно утомительное занятие.
Про легкость смены дизайна я бы тоже так громко не заявлял. Отсутствие шаблонов и необходимости правки PHP файлов для смены внешнего вида отнюдь не самое приятное занятие.
Ну и немешалобы добавить немного интерактивности - загрузки моделей по выбранной марке аяксом. А так на странице создания объявления постоянно генерится лишний JavaScript довольно внушительного объема.
Идея высылать запрос на присоединение к компании на корпоративные email хороша и поидее должна сработать при увольнении сотрудника, но опять же почты может и не быть корпоративной, тем более учитывая мою специфику (город в МО) и нет никакой гарантии что это не будет какой нить другой личный ящик пользователя.
Поэтому думаю оптимальным было бы не еще один скрытый адрес почты, а просто вопрос-ответ.
Спасибо за мнения.
В принципе можно объединить эти обе функции... Присоединиться к компании можно если знать ответ на вопрос, заданный при создании компании, а если не знаешь - то отправить заявку на присоединение создателю.