- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
В 2023 году Одноклассники пресекли более 9 млн подозрительных входов в учетные записи
И выявили более 7 млн подозрительных пользователей
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Что то не хочется подключатся 2 раза к БД вот и заинтересовало , можно ли к такому коду
mysql_query("SELECT * FROM portfolio WHERE seourl='$myurl'"); (выдаст только 1 элемент)
Сделать так чтобы кроме этого элемента еще выдало , предыдущую и следующую после него.
union
но, что такое в этом селекте предыдущий, и следующий? Где критерий
и...
вам не нужно делать второго(третьего) подключения к базе. Вам нужен второй, третий запрос
В базах данных нет понятия "следующий" и "предыдущий" элемент. Они оперируют понятием множеств. Вы хотите расширить множество выбираемых элементов, следовательно нужно расширить условие.
Допустим, если в таблице portfolio есть столбец id, который содержит порядковый номер строки, тогда можно ориентироваться на него, чтобы получить нужный вам результат. Для этого нужно выбрать множество элементов по seourl который вам нужен и соединить его с множеством элементов по id, которые будут обеспечивать второе необходимое вам условие ("следующую или предыдущую"), что в переводе на язык SQL будет выглядеть как то так:
select p.*, p1.*, p2.* from portfolio p
left join portfolio p1 on (p1.id = p.id - 1)
left join portfolio p2 on (p2.id = p.id + 1)
where p.seourl='$myurl'
В таком случае, если id идут по порядку, без пропусков, вы получите искомые данные в одной строке. Если же id идут не по порядку, то вам придётся выполнить три отдельных запроса:
SELECT * FROM portfolio WHERE seourl='$myurl'
потом
SELECT * FROM portfolio WHERE id < $id order by id desc limit 0,1
и
SELECT * FROM portfolio WHERE id > $id order by id asc limit 0,1
где $id - это полученный идентификатор строки из первого вашего запроса.
P.S. Нельзя в запрос подставлять переменные php, как вы делаете. Это потенциальная уязвимость SQL injection.