PHP.SU

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

Страниц (8): [1] 2 3 4 5 6 7 8 »

> Найдено сообщений: 111
isle Отправлено: 16 Сентября, 2017 - 19:53:48 • Тема: Веб-разработчик PHP • Форум: Работа

Ответов: 0
Просмотров: 751
Требуется веб-разработчик (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

Звонить с 8:00 до 23:00 в любой день.
isle Отправлено: 01 Апреля, 2014 - 05:38:00 • Тема: Добавить метку "новая запись" • Форум: SQL и Архитектура БД

Ответов: 0
Просмотров: 14
Привет.

Пролистал кучу примеров, вроде запрос правильный, но не работает, почему-то... Хотелось бы не в PHP метку проверять, а уже готовый массив получить с меткой "новый" пункт при выводе.

Запрос:

CODE (SQL):
скопировать код в буфер обмена
  1. 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() тоже не работают, ёлки. Подскажите, пожалуйста, как правильно запрос написать?

П.С.
Варианты типа:

CODE (SQL):
скопировать код в буфер обмена
  1. IF (TO_DAYS(NOW()) - TO_DAYS(t1.date) < 30, TRUE, FALSE) AS new


также не работают Недовольство, огорчение

П.П.С.
Всё! Ура ))) Извиняюсь, сам разобрался. Осенило, поставил дату в формат "0000-00-00 00:00:00" и заработало! Топик можно удалить.
isle Отправлено: 29 Марта, 2014 - 19:38:43 • Тема: грамотная пагинация • Форум: Вопросы новичков

Ответов: 17
Просмотров: 731
Ex пишет:
Забыл уточнить, навигация для поисковика, и кол. строк постоянно увеличивается.


Именно поэтому я и закомментировал строки:


Берём количество элементов из Базы или Кеша, чтобы при каждом запросе страницы не долбить Базу. Далее создаём переменную, говорящую сколько элементов на странице показывать - 1, 5, 10, ... Можно создать файлик конфига и туда занести все необходимые настройки, чтоб их было удобно менять из одного места, а не лазить по всем страницам с кодом:


Далее определяем текущую страницу, на которой сейчас находимся:

PHP:
скопировать код в буфер обмена
  1. $curr_page = intvav($_GET['page']);


Тек. стр. можно определить разными способами - передать ПОСТом или ГЕТом, либо распарсить URL текущей страницы из переменной $_SERVER - дело хозяйское... Например, для навигации страниц удобно ГЕТом получать, как я написал выше.

Определив текущую страницу в ссылку подставляем класс в html (переменная $out):

PHP:
скопировать код в буфер обмена
  1. $out = '<a href="'.$url.'&page='.$i.'" class="current">'.$i.'</a>';


Ну а логику прописать как страницы выводить, типа 1, 2, 3 ... - это дело не хитрое, можно все подряд вытащить, либо некую часть, для каждого вывода нужно свои условия прописать, определив первую, последнюю и текущую страницы. Здесь как фантазия ляжет Улыбка

Цитата:
isle ты что то не то понял)

Ну, почему же, правильно всё понял. Для чего навигация - для статей, стр. поиска и т.д. - не суть важно, принцип вывода везде одинаковый.

Цитата:
Это над для каждой страницы условие пистать как я сделал на примере выше или как то проще?

Конечно, если где-то нужно вывести навигацию на сайте, то её нужно прописывать на каждой странице, иначе как она появится, не из эфира же Улыбка Чтобы упростить себе самому задачу, лучше любой повторяющийся блок сайта сделать в отдельном файле, а потом просто инклюдить его туда, где он нужен.

Каркасик куда и как копать дал, далее пробуйте, что не получается - пишите, здесь много хороших людей - подскажут, может, я чем помогу.

П.С. Извиняюсь за мелкие ошибки, блютуз постоянно глючит, как печатаю - половину повторять приходится.
isle Отправлено: 29 Марта, 2014 - 18:23:14 • Тема: Выборка полей из двух таблиц при условии • Форум: Вопросы новичков

Ответов: 10
Просмотров: 556
Опять перепробовал кучу вариантов только что по условию ON - не хочет работать и всё тут... Эх. Если прописать любую ерунду, типа:

ON t4.mid != 0

то работает, но так по логике неверно, выдаёт, естественно чушь, все остальные варианты - пустой массив, включая написанный выше. Селект в селекте тоже пробовал (IF EXISTS) - не получилось.

Пока сделаю как умею (с двумя запросами), если у кого будет желание ради спортивного интереса поковырять у себя или у меня на сервере, черкните. За решение - угощу пивком.

Спасибо за внимание откликнувшимся.
isle Отправлено: 29 Марта, 2014 - 17:48:15 • Тема: Выборка полей из двух таблиц при условии • Форум: Вопросы новичков

Ответов: 10
Просмотров: 556
А, ёлки, вот.
Сейчас так:
Спойлер (Отобразить)

А пробовал так:
Спойлер (Отобразить)

и так:
Спойлер (Отобразить)

Что с джоинтами, что без - одинаково работает: либо все строки (блюда) берет с одинаковым вкусом, либо только те, что совпадают в обеих таблицах.

Уже несколько дней читаю хелпы - не могу понять почему так, думаю, это может быть связано с классом PDO, я с ним впервые столкнулся.

Таблицы:
Спойлер (Отобразить)


Спойлер (Отобразить)


Возможно, что-то не так в табличках??? - здесь опыта тоже не очень много, но, вроде, сделал их правильно. Вариаций везде перепробовал очень много - в самих табличках (полях и ключах) и в запросах.
isle Отправлено: 29 Марта, 2014 - 17:08:55 • Тема: грамотная пагинация • Форум: Вопросы новичков

Ответов: 17
Просмотров: 731
Всё решается гораздо проще и изящней. Сначала попробуйте создать структуру, потом её наращивайте по функционалу... Вот примерный каркасик:

CODE (htmlphp):
скопировать код в буфер обмена
  1. $row = 1000 //FROM BD
  2. $per_page = 10 //SET
  3. $num_pages == $row / $per_page; //1000/10 = 100 pages
  4. $curr_page = intvav($_GET['page']);
  5. $out = "OUT";
  6. $url = "URL";
  7. for($i=1;$i<$num_pages;++$i) {
  8.         if ($i < 4) $out .= "OUT";
  9.         if ($i == $num_pages) $out .= "OUT";
  10. }


Ну, центр пагинации тоже не сложно вычислить. Как видите, можно в несколько строчек всю эту портянку сократить ;)

П.С. Я не спец - любитель, может, кто ещё что напишет.
isle Отправлено: 29 Марта, 2014 - 16:41:27 • Тема: Выборка полей из двух таблиц при условии • Форум: Вопросы новичков

Ответов: 10
Просмотров: 556
LIME пишет:
$query ?

Не понял, о чём речь Улыбка

Пока выход для себя вижу только один - сначала выбрать все блюда и их иды, вторым запросом получить уже вкусы по этим идам.

Табличек планируется много, поэтому было бы здорово всё брать одним запросом в один массив, а не двумя и потом эти массивы в циклах крутить...

Если кто знает решение в 1 запрос (если оно, конечно, есть) - пишите кошелёк wm, угощу пивком, а то удваивать кол-во всех запросов или заполнять огромные таблицы нулами мне кажется очень неинженерным подходом.
isle Отправлено: 29 Марта, 2014 - 15:34:45 • Тема: Выборка полей из двух таблиц при условии • Форум: Вопросы новичков

Ответов: 10
Просмотров: 556
peters пишет:
Чтобы выводились ВСЕ записи из первой таблице при джоине используйте
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).
isle Отправлено: 29 Марта, 2014 - 10:04:39 • Тема: Выборка полей из двух таблиц при условии • Форум: Вопросы новичков

Ответов: 10
Просмотров: 556
3d_killer, спасибо за ответ. Именно так и делал - получал одну строку из сотни, если по иду сравнение не делать - получаю все блюда с одинаковым вкусом. Нашел также [url = http://opennet.ru/docs/RUS/psql_tutor733/tutorial-join.html]статью[/url] в сети, где говорится, что при LEFT JOINT должны прибавляться пустые строки, но они у меня почему-то не прибавляются, на выходе - только одна строка с совпавшими идами. Эх, ёлки, куда копать... ???

Функция вывода запроса такая:

PHP:
скопировать код в буфер обмена
  1. function dbQuery($query) {
  2. $db = open_connection();
  3. $result = array();
  4. $sql = $db->prepare($query);
  5. $sql->execute();
  6. while($r = $sql->fetch(PDO::FETCH_ASSOC)) {array_push($result,$r);}
  7. return $result;
  8. }


Видимо, что-то в строке изменить?

CODE (htmlphp):
скопировать код в буфер обмена
  1. while($r = $sql->fetch(PDO::FETCH_ASSOC)) {array_push($result,$r);}


Я здесь не очень силён, можете подсказать?
isle Отправлено: 29 Марта, 2014 - 05:10:21 • Тема: Выборка полей из двух таблиц при условии • Форум: Вопросы новичков

Ответов: 10
Просмотров: 556
Привет!

Столкнулся с проблемой, когда пришлось разбить огромную таблицу на 2: в одной находится основная информация о еде, во второй таблице - дополнительная информация.

Например, тип вкуса (кислый, сладкий и т.д.), но это очень редкая информация, т.е. на 100 пунктов еды может быть только 2-5 пунктов вкусов.

Теперь не могу никак связать 2 этих таблицы, читал про IS NOT NULL, но это, как я понял, не то. Может, кто вкурсе, если какие-нибудь варианты, как можно выбрать селектом вторую таблицу, если, например, поле в первой равно "1" или, например, не равно NULL, либо что-то в этом роде?

Пробовал джоинтами соединить, но выбираются только те строки, которые есть в обоих таблицах, селектами через запятую тоже не выходит - либо ничего, либо сразу всё выбирается при совпадении строк в обоих таблицах.
isle Отправлено: 18 Февраля, 2014 - 22:37:12 • Тема: Второй селект создаёт дубли, а не массив • Форум: SQL и Архитектура БД

Ответов: 3
Просмотров: 30
Мелкий пишет:
isle пишет:
Должно выглядеть:

Почему? Должно выглядеть именно так, как в первом случае.


Получается, что никак нельзя это обойти? Каким-то другим, может, способом... ??? Мне нужно к одной главной таблице добавить ещё 3 - способ оплаты заказов заведений, тип кухонь и тип самого заведения. При выводе в каталоге на одной странице 50 заведений я получаю порядка 2 000 - 3 000 массивов (и дальше он будет ещё расти), их не проблема отсортировать в PHP и удалить дубли, но объём получаемых данных очень большой - каждая таблица примерно по 20-30 строк содержит. 50 заведений х 3 таблицы + 1 = 151 запрос только для листинга заведений, а ведь ещё сама страница кучу запросов содержит, поэтому делать 151 запрос в БД в цикле для получения этих 3-х таблиц тоже решение корявое на мой взгляд.

Эх, придётся, видимо, сервер потом помощнее брать, думал, может, какое-то другое решение есть.

Эх... Большое спасибо за отклик.
isle Отправлено: 18 Февраля, 2014 - 21:52:42 • Тема: Второй селект создаёт дубли, а не массив • Форум: SQL и Архитектура БД

Ответов: 3
Просмотров: 30
Привет, форумчане.

Столкнулся с проблемой многократных дублей на выходе, если использую второй селект в запросе вместо того, чтобы получить массив на втором селекте. Из-за множественного поиска создаётся такое огромное количество дублей, что можно застрелиться... несколько дней пытался решить проблему разными подходами, используя вложенные селекты или варианты джоинов, но на выходе всё равно получаю чушь или дубли. Может, кто в курсе как это решается, нагуглить не вышло, на форуме похожего также не нашёл. Дело не в DISTINCT.

Как это выглядит:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. (
  3.     [0] => Array
  4.         (
  5.             [id] => 1
  6.             [name] => МиаПицца
  7.             [cuisine_id] => 42
  8.         )
  9.  
  10.     [1] => Array
  11.         (
  12.             [id] => 1
  13.             [name] => МиаПицца
  14.             [cuisine_id] => 1
  15.         )
  16.  
  17. )
  18.  


Должно выглядеть:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. (
  3.     [0] => Array
  4.         (
  5.             [id] => 1
  6.             [name] => МиаПицца
  7.             [cuisine_id] =>
  8.         (
  9.             [0] => 42
  10.             [1] => 1
  11.         )
  12. )
  13.  


Или что-то типа такого.

Запрос:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $arr = dbQuery("
  3.         SELECT DISTINCT
  4.                 t1.id,
  5.                 t1.name,
  6.                 t3.cuisine_id
  7.         FROM
  8.                 #__catering_card AS t1
  9.         INNER JOIN
  10.                 (
  11.                         SELECT
  12.                                 t2.id AS cid,
  13.                                 t2.cuisine_id,
  14.                                 t2.catering_id
  15.                         FROM
  16.                                 #__catering_cuisine AS t2
  17.                         WHERE
  18.                                 t2.catering_id = 1
  19.                 ) AS t3
  20.                 ON t3.catering_id = t1.id
  21.         WHERE
  22.                 t1.id = 1
  23. ");
  24. echo "<pre>"; print_r($arr); echo "</pre>";
  25.  


В одной таблице - список заведений, в другой - тип заведений (ресторан, бар, ...)
isle Отправлено: 23 Августа, 2013 - 16:54:37 • Тема: Ищу php/mysql программистов для поднятия стартапа • Форум: FreeLance

Ответов: 11
Просмотров: 3198
DeepVarvar пишет:
Я ни слова не сказал про дизайн, я сказал про интерфейс. Перечитайте.


Одно без другого не существует, как если бы код php писал один программист, а mysql-запросы - другой... Всё, спорить и обсуждать пустое не хочу.

П.С. Спасибо всем откликнувшимся и тем, кто писал в личку, в данный момент исполнителя нашёл, вакансия не актуальна.
isle Отправлено: 22 Августа, 2013 - 20:05:53 • Тема: Ищу php/mysql программистов для поднятия стартапа • Форум: FreeLance

Ответов: 11
Просмотров: 3198
DeepVarvar пишет:
isle пишет:
Дизайн очень простой, очень
Так разработайте интерфейс пользователя...

Дизайн уже есть, он пока не окончательный, поэтому мне нужна будет поддержка в течении примерно 6 месяцев, а не так, что написали скрипт, а дальше мучайся сам, как хочешь...

Прикрепил одну страничку, наверно, самую сложную из всех, есть ещё одна такая же по сложности, остальные - просто вывод текста. Ещё админка такая же по аналогии.

Пример сайта тоже указал, дизайн почти весь готов, но он ещё на стадии согласования с кафешками.
isle Отправлено: 22 Августа, 2013 - 19:04:31 • Тема: Ищу php/mysql программистов для поднятия стартапа • Форум: FreeLance

Ответов: 11
Просмотров: 3198
Zuldek пишет:

Тянуть шаблонизатор поверх шаблонизатора php чтобы вместо <?=?> было {} и это не смущало верстальшика/дизайнера — бред. Как и 7 месяцев разрабатывать проект который делается за 1.5 месяца с нормальным бюджетом.


Это когда всё идеально проработано, но мы только дизайн делаем месяц и никак не закончим, некоторые вещи до сих пор обсуждаются по функционалу, некоторые вещи требуют уточнения от юриста. Поэтому и написал примерный срок, можете сделать быстрей, ну, это ж замечательно, пишите свои условия. Я ориентировался на непрофессионалов или профессионалов, которые могут уделять хотя бы час в день, если Вы реально можете сделать быстрее, уделяя проекту часов по 10-15 в день, то я только рад. Ваши условия по цене?

Что касается шаблонов, то я написал, что "желательно", а не "обязательно". Делайте свои предложения, я же не спец в этом и написал так, как посчитал нужным. Предлагайте варианты, а там обсудим, может, всё можно сделать проще, чем кажется.

Дизайн очень простой, очень, нужно просто выводить текст, на счёт вёрстки тоже написал: сделаете сами - отлично, не сможете - сделайте как умеете, далее отдам спецу-верстальщику.

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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB