Требуется веб-разработчик (php-программист) в команду для разработки интересного стартапа, крупного многоязычного портала о еде, - Моя-еда.онлайн (my-foods.online - частично работает).
Компания: ИП "ЗАЙВА" Оклад: 200-400 тыс. (600 - 1200 $) тг / месяц (после собеседования). Возраст: от 25 лет Стаж работы: не менее 5 лет Требования: хорошие знания Linux, SVN (или аналог), , PHP, веб-фреймворка Bootstrap, Kohana, HTML, CSS, JS. Обязательно умение вести сложный высоконагруженный проект с нуля, разбираться в чужом коде и писать свой грамотно, с комментариями. Полное погружение в проект; желание учиться и совершенствоваться... Условия работы: полный рабочий день; возможна работа удалённо, очень желательно из г.Алматы, в офис.
Основное требование - программирование сайта на php, умение делать адаптивную верстку на бутстреп приветствуется.
Контакты для связи:
Тел.: +7(705)3237711
Skype: zaiva.i.ssp
Почта/агент: zgr@bk.ru
Пролистал кучу примеров, вроде запрос правильный, но не работает, почему-то... Хотелось бы не в PHP метку проверять, а уже готовый массив получить с меткой "новый" пункт при выводе.
SELECT t1.date,IF(DATE(t1.date - INTERVAL 30 DAY), TRUE, FALSE)AS new FROM#__meal AS t1
Другие запросы без дат у меня нормально работают в таком виде, а проверить по дате не получается Суть такая: если запись сделана менее 1 месяца назад, то она "новая", если таких записей нет, то все они помечаются как "старые", т.е. new = FALSE.
Варианты условия "DATE(t1.date - INTERVAL 30 DAY)" с CURRDATE() или NOW() тоже не работают, ёлки. Подскажите, пожалуйста, как правильно запрос написать?
Берём количество элементов из Базы или Кеша, чтобы при каждом запросе страницы не долбить Базу. Далее создаём переменную, говорящую сколько элементов на странице показывать - 1, 5, 10, ... Можно создать файлик конфига и туда занести все необходимые настройки, чтоб их было удобно менять из одного места, а не лазить по всем страницам с кодом:
Тек. стр. можно определить разными способами - передать ПОСТом или ГЕТом, либо распарсить URL текущей страницы из переменной $_SERVER - дело хозяйское... Например, для навигации страниц удобно ГЕТом получать, как я написал выше.
Определив текущую страницу в ссылку подставляем класс в html (переменная $out):
Ну а логику прописать как страницы выводить, типа 1, 2, 3 ... - это дело не хитрое, можно все подряд вытащить, либо некую часть, для каждого вывода нужно свои условия прописать, определив первую, последнюю и текущую страницы. Здесь как фантазия ляжет
Цитата:
isle ты что то не то понял)
Ну, почему же, правильно всё понял. Для чего навигация - для статей, стр. поиска и т.д. - не суть важно, принцип вывода везде одинаковый.
Цитата:
Это над для каждой страницы условие пистать как я сделал на примере выше или как то проще?
Конечно, если где-то нужно вывести навигацию на сайте, то её нужно прописывать на каждой странице, иначе как она появится, не из эфира же Чтобы упростить себе самому задачу, лучше любой повторяющийся блок сайта сделать в отдельном файле, а потом просто инклюдить его туда, где он нужен.
Каркасик куда и как копать дал, далее пробуйте, что не получается - пишите, здесь много хороших людей - подскажут, может, я чем помогу.
П.С. Извиняюсь за мелкие ошибки, блютуз постоянно глючит, как печатаю - половину повторять приходится.
Опять перепробовал кучу вариантов только что по условию ON - не хочет работать и всё тут... Эх. Если прописать любую ерунду, типа:
ON t4.mid != 0
то работает, но так по логике неверно, выдаёт, естественно чушь, все остальные варианты - пустой массив, включая написанный выше. Селект в селекте тоже пробовал (IF EXISTS) - не получилось.
Пока сделаю как умею (с двумя запросами), если у кого будет желание ради спортивного интереса поковырять у себя или у меня на сервере, черкните. За решение - угощу пивком.
Возможно, что-то не так в табличках??? - здесь опыта тоже не очень много, но, вроде, сделал их правильно. Вариаций везде перепробовал очень много - в самих табличках (полях и ключах) и в запросах.
Пока выход для себя вижу только один - сначала выбрать все блюда и их иды, вторым запросом получить уже вкусы по этим идам.
Табличек планируется много, поэтому было бы здорово всё брать одним запросом в один массив, а не двумя и потом эти массивы в циклах крутить...
Если кто знает решение в 1 запрос (если оно, конечно, есть) - пишите кошелёк wm, угощу пивком, а то удваивать кол-во всех запросов или заполнять огромные таблицы нулами мне кажется очень неинженерным подходом.
Чтобы выводились ВСЕ записи из первой таблице при джоине используйте
LEFT OUTER JOIN
В справках пишут, что LEFT OUTER JOIN и LEFT JOIN - одно и тоже, но на всякий случай я попробовал оба варианта. Не помогло.
peters пишет:
Если совпадений из 2-й таблицы не будет, значения заполнятся null'ами
Да, верно, в хелпах так и написано, выше привел ссылку на один из таких хелпов, но в моём случае оно так не работает почему-то.
Мне бы очень не хотелось делать одну огромную таблицу, которая почти всегда будет пустой, чтобы выйти из ситуации. Может, кто-нибудь сможет решить эту проблему за небольшую денюжку непосредственно на моём сервере (предоставлю доступ)?
Ещё раз уточню проблему.
1. Есть 2 таблицы: 1 - товар; 2 - доп. инфо. Первая таблица может иметь 100 строк, вторая - 0...10. Нужно вторую таблицу припаять к первой, можно путём джоинтов заполнить поля пустотой, можно путём различных проверок, типа IF(), IS NOT NULL и др. добавить поля 2-й таблицы к первой.
2. Если я ставлю какие-то условия, например, по совпадению идов, то получаю столько строк, сколько есть совпадений в первой и второй таблице, а должен получить все строки (из первой таблицы) с пустыми полями (второй таблицы), либо добавленными к первой таблице, если метка поля первой таблицы не равна 0 (NULL).
3d_killer, спасибо за ответ. Именно так и делал - получал одну строку из сотни, если по иду сравнение не делать - получаю все блюда с одинаковым вкусом. Нашел также [url = http://opennet.ru/docs/RUS/psql_tutor733/tutorial-join.html]статью[/url] в сети, где говорится, что при LEFT JOINT должны прибавляться пустые строки, но они у меня почему-то не прибавляются, на выходе - только одна строка с совпавшими идами. Эх, ёлки, куда копать... ???
Столкнулся с проблемой, когда пришлось разбить огромную таблицу на 2: в одной находится основная информация о еде, во второй таблице - дополнительная информация.
Например, тип вкуса (кислый, сладкий и т.д.), но это очень редкая информация, т.е. на 100 пунктов еды может быть только 2-5 пунктов вкусов.
Теперь не могу никак связать 2 этих таблицы, читал про IS NOT NULL, но это, как я понял, не то. Может, кто вкурсе, если какие-нибудь варианты, как можно выбрать селектом вторую таблицу, если, например, поле в первой равно "1" или, например, не равно NULL, либо что-то в этом роде?
Пробовал джоинтами соединить, но выбираются только те строки, которые есть в обоих таблицах, селектами через запятую тоже не выходит - либо ничего, либо сразу всё выбирается при совпадении строк в обоих таблицах.
Почему? Должно выглядеть именно так, как в первом случае.
Получается, что никак нельзя это обойти? Каким-то другим, может, способом... ??? Мне нужно к одной главной таблице добавить ещё 3 - способ оплаты заказов заведений, тип кухонь и тип самого заведения. При выводе в каталоге на одной странице 50 заведений я получаю порядка 2 000 - 3 000 массивов (и дальше он будет ещё расти), их не проблема отсортировать в PHP и удалить дубли, но объём получаемых данных очень большой - каждая таблица примерно по 20-30 строк содержит. 50 заведений х 3 таблицы + 1 = 151 запрос только для листинга заведений, а ведь ещё сама страница кучу запросов содержит, поэтому делать 151 запрос в БД в цикле для получения этих 3-х таблиц тоже решение корявое на мой взгляд.
Эх, придётся, видимо, сервер потом помощнее брать, думал, может, какое-то другое решение есть.
Столкнулся с проблемой многократных дублей на выходе, если использую второй селект в запросе вместо того, чтобы получить массив на втором селекте. Из-за множественного поиска создаётся такое огромное количество дублей, что можно застрелиться... несколько дней пытался решить проблему разными подходами, используя вложенные селекты или варианты джоинов, но на выходе всё равно получаю чушь или дубли. Может, кто в курсе как это решается, нагуглить не вышло, на форуме похожего также не нашёл. Дело не в DISTINCT.
Дизайн уже есть, он пока не окончательный, поэтому мне нужна будет поддержка в течении примерно 6 месяцев, а не так, что написали скрипт, а дальше мучайся сам, как хочешь...
Прикрепил одну страничку, наверно, самую сложную из всех, есть ещё одна такая же по сложности, остальные - просто вывод текста. Ещё админка такая же по аналогии.
Пример сайта тоже указал, дизайн почти весь готов, но он ещё на стадии согласования с кафешками.
Тянуть шаблонизатор поверх шаблонизатора php чтобы вместо <?=?> было {} и это не смущало верстальшика/дизайнера — бред. Как и 7 месяцев разрабатывать проект который делается за 1.5 месяца с нормальным бюджетом.
Это когда всё идеально проработано, но мы только дизайн делаем месяц и никак не закончим, некоторые вещи до сих пор обсуждаются по функционалу, некоторые вещи требуют уточнения от юриста. Поэтому и написал примерный срок, можете сделать быстрей, ну, это ж замечательно, пишите свои условия. Я ориентировался на непрофессионалов или профессионалов, которые могут уделять хотя бы час в день, если Вы реально можете сделать быстрее, уделяя проекту часов по 10-15 в день, то я только рад. Ваши условия по цене?
Что касается шаблонов, то я написал, что "желательно", а не "обязательно". Делайте свои предложения, я же не спец в этом и написал так, как посчитал нужным. Предлагайте варианты, а там обсудим, может, всё можно сделать проще, чем кажется.
Дизайн очень простой, очень, нужно просто выводить текст, на счёт вёрстки тоже написал: сделаете сами - отлично, не сможете - сделайте как умеете, далее отдам спецу-верстальщику.