PHP.SU

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

Страниц (25): В начало « ... 4 5 6 7 [8] 9 10 11 12 ... » В конец

> Найдено сообщений: 374
VestCoastman Отправлено: 06 Сентября, 2013 - 13:41:04 • Тема: Поиск по двум таблицам • Форум: Вопросы новичков

Ответов: 7
Просмотров: 283
EuGen это чуть-чуть не то.
В этом случае, поиск будет производиться только по таблице topics, если искать пост с заведомо существующим ключевым словом в desc, то выдаст пустой результат.
VestCoastman Отправлено: 06 Сентября, 2013 - 12:47:11 • Тема: Поиск по двум таблицам • Форум: Вопросы новичков

Ответов: 7
Просмотров: 283
imya пишет:
Может я что-то недопонял, но где вы связываете таблицы topics && posts ??
В конкретном примере нигде. Они привязаны в выводе уже на самих страницах с темами и постами так
CODE (SQL):
скопировать код в буфер обмена
  1. ON t.id = p.tid
  2. # где t и p - topics и posts соответственно(как в примере выше)
VestCoastman Отправлено: 06 Сентября, 2013 - 03:37:51 • Тема: Поиск по двум таблицам • Форум: Вопросы новичков

Ответов: 7
Просмотров: 283
Застрял на поиске.
Есть две таблицы - topics и posts
Таблица posts "привязана" по полю tid к таблице topics(используется для JOIN-ов)

Поиск идет по полям desc(это поле есть в таблицах topics и posts) и по полю title(оно есть только в таблице topics)

Соответственно делаю запрос:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `t`.id AS tid, t.`desc`, `t`.title, `p`.id AS pid
  2. FROM topics AS `t`
  3. INNER JOIN posts AS `p`
  4. WHERE `t`.`desc` LIKE '%$key%'
  5. OR `t`.title LIKE '%$key%'
  6. OR `p`.`desc` LIKE '%$key%'


В результате такого запроса, я получаю все темы, куда попадает $key и все посты из этих тем, независимо от их содержимого. Но результатом должны быть только темы.
Подскажите, куда копать?
VestCoastman Отправлено: 28 Августа, 2013 - 22:40:16 • Тема: Стоит ли использовать isset() и empty() для проверки переменных? • Форум: Вопросы новичков

Ответов: 15
Просмотров: 650
Зачем проверять переменную, которую вы прежде инсталиризировали на существование?
if($a) - проверяется подобно !empty, т.е. возвращает либо true либо false, только empty еще проверять пустоту строки и что-то еще, не помню.
А вообще выше написано, что нужно проверять
Цитата:
qtk, использовать в том случае, когда переменные берутся извне.
VestCoastman Отправлено: 28 Августа, 2013 - 17:37:58 • Тема: Сортировка по 2м датам • Форум: Вопросы новичков

Ответов: 10
Просмотров: 374
[quote=EuGen][/quote]
Однако Ого, точно, мой косяк.
Подразумевалось, что порядок будет смешанным между двух столбцов. Но в принципе, уже неважно.

Подумал я, а почему бы при создании поля в таблице "tops", полю "updateDate" не назначать тоже значение, что и в createDate, а не ноль, как у меня сейчас.
В таком случае, никаких юнионов не потребуется и сортировка будет просто по столбцу "updateDate".

Иногда решение проще чем предполагается, а я, блин, пол дня на это потратил, мне стыдно за себя Хм

Спасибо, EuGen. Тему можно закрывать.
VestCoastman Отправлено: 28 Августа, 2013 - 17:19:18 • Тема: Сортировка по 2м датам • Форум: Вопросы новичков

Ответов: 10
Просмотров: 374
Получилась вот такая джигурда)), но где то косяк, данные выводятся дважды, понять не могу, где?
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `t`.id, `t`.title, `t`.uid, `t`.username, `t`.createTime, `t`.updateTime, `t`.createTime AS times
  2.     FROM `tops` AS `t` UNION ALL
  3. SELECT `t`.id, `t`.title, `t`.uid, `t`.username, `t`.createTime, `t`.updateTime, `t`.updateTime AS times
  4.     FROM `tops` AS `t`
  5.     INNER JOIN `cats` AS `c`
  6.         ON `t`.cid = `c`.id
  7.     INNER JOIN `secs` AS `s`
  8.         ON `c`.sid = `s`.id
  9.     WHERE   `t`.cid = '2' AND username='admin'
  10.     ORDER BY title DESC, `times` DESC LIMIT 0,10
VestCoastman Отправлено: 28 Августа, 2013 - 16:59:24 • Тема: Сортировка по 2м датам • Форум: Вопросы новичков

Ответов: 10
Просмотров: 374
А если в таблице еще пара join'ов присутствуют?
Не буду томить, покажу целый запрос
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT `t`.id, `t`.title, `t`.uid, `t`.username, `t`.createTime, `t`.updateTime
  2.         FROM `tops` AS `t`
  3.         INNER JOIN `cats` AS `c`
  4.                 ON `t`.cid = `c`.id
  5.         INNER JOIN `secs` AS `s`
  6.                 ON `c`.sid = `s`.id
  7.         WHERE   `t`.cid = '2' AND username='admin'
  8.         ORDER BY title DESC, `ТУТ createTime И updateTime` DESC LIMIT 0,10
VestCoastman Отправлено: 28 Августа, 2013 - 16:22:05 • Тема: Сортировка по 2м датам • Форум: Вопросы новичков

Ответов: 10
Просмотров: 374
EuGen пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT id, createDate AS orderDate FROM comments
  2. UNION ALL
  3. SELECT id, updateDate AS orderDate FROM comments
  4. ORDER BY orderDate DESC

?

А если в таблице помимо id,createDate и updateDate есть еще масса полей, которые нужно вывести, т.е. - *, они ведь не выведутся, верно?
VestCoastman Отправлено: 28 Августа, 2013 - 15:52:02 • Тема: Сортировка по 2м датам • Форум: Вопросы новичков

Ответов: 10
Просмотров: 374
Порядок получается смешанным
Я тут подумал, получается надо объединить значения столбцов createDate и updateDate, а затем order by название_объединения desc, но как реализовать незнаю.
Таблица должна получится такой:
CODE (htmlphp):
скопировать код в буфер обмена
  1. # dates - название_объединения
  2. +----+--------------------------------+
  3. | id | dates(createDate и updateDate) |
  4. +----+--------------------------------+
  5. |  5 |       2013-08-10 04:30:00      | - updateDate
  6. +----+--------------------------------+
  7. |  2 |       2013-08-10 03:15:00      | - updateDate
  8. +----+--------------------------------+
  9. |  3 |       2013-08-10 03:10:00      | - updateDate
  10. +----+--------------------------------+
  11. |  3 |       2013-08-10 03:00:00      | - createDate
  12. +----+--------------------------------+
  13. |  1 |       2013-08-10 02:30:00      | - updateDate
  14. +----+--------------------------------+
  15. |  5 |       2013-08-10 02:20:00      | - createDate
  16. +----+--------------------------------+
  17. |  2 |       2013-08-10 02:10:00      | - createDate
  18. +----+--------------------------------+
  19. |  4 |       2013-08-10 02:00:00      | - updateDate
  20. +----+--------------------------------+
  21. |  4 |       2013-08-10 01:30:00      | - createDate
  22. +----+--------------------------------+
  23. |  1 |       2013-08-10 01:00:00      | - createDate
  24. +----+--------------------------------+
VestCoastman Отправлено: 28 Августа, 2013 - 04:29:24 • Тема: Сортировка по 2м датам • Форум: Вопросы новичков

Ответов: 10
Просмотров: 374
Например в таблице comments есть 2 колонки с временем - createtime и updatetime
время в timestamp естесно
Запрос:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM comments ORDER BY createtime DESC, updatetime DESC

Такой запрос вначале отсортирует и выведет comments по createtime, а уже затем по updatetime.
Как сделать так, чтобы createtime и updatetime чередовались в зависимости от времени?
VestCoastman Отправлено: 27 Августа, 2013 - 23:28:01 • Тема: Как такое организовать? • Форум: Программирование на PHP

Ответов: 12
Просмотров: 593
CODE (html):
скопировать код в буфер обмена
  1. <!-- Вывод в 4 колонки -->
  2. <div style="float:left; width:25%;">$text</div>
  3. <!-- Вывод в 2 колонки -->
  4. <div style="float:left; width:50%;">$text</div>

Ну я думаю вы поняли суть простого варианта.
Если в цикле, то делите на 3, проверяете остаток... Все просто.
VestCoastman Отправлено: 27 Августа, 2013 - 22:14:38 • Тема: Память запросов в константах и переменных • Форум: Вопросы новичков

Ответов: 3
Просмотров: 169
Яснопонятно. Спасибо. Тему можно закрывать.
VestCoastman Отправлено: 27 Августа, 2013 - 19:55:49 • Тема: Память запросов в константах и переменных • Форум: Вопросы новичков

Ответов: 3
Просмотров: 169
Задался вопросом, как поступает php, если переменной или константе присвоена функция с запросом с последующим выводом этой переменной/константы?
Покажу на примере:
PHP:
скопировать код в буфер обмена
  1.  
  2. // Обычная процедура с возвратом логина пользователя
  3. function username($id){
  4.    $id = intval($id);
  5.    $sql = mysql_query("SELECT name FROM users WHERE id='$id'");
  6.    if(!$sql || mysql_num_rows($sql)<=0){return false;}
  7.    $result = mysql_fetch_array($sql);
  8.    return $result['name'];
  9. }
  10.  
  11. $username = username(3); // или define('USERNAME', username(3));
  12.  


Теперь если я сделаю, допустим, 5 обращений к данной переменной $username или к константе USERNAME, будет ли повторно производиться запрос к таблице users, или же $username делает запрос единожды при присвоении?
И как в таком случае, поступит php, если обратиться не к этой переменной/константе, а напрямую к функции username()?
VestCoastman Отправлено: 27 Августа, 2013 - 17:28:21 • Тема: Цикл • Форум: Вопросы новичков

Ответов: 5
Просмотров: 241
black_ru пишет:
Сложно ли это сделать на php?

Нет, не сложно.
VestCoastman Отправлено: 26 Августа, 2013 - 14:45:15 • Тема: Как организовать базу для персонального чата между пользователями • Форум: Вопросы новичков

Ответов: 26
Просмотров: 1054
Добавить колонку с id собеседника

Страниц (25): В начало « ... 4 5 6 7 [8] 9 10 11 12 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB