Вопрос № 74061: Есть таблица в MySQL table:
id |id_1 |id_2 |id_3 |id_4
---------------------------------------
1 |2 |1 |txt |563654
2 |2 |2 |txt |684596
3 |2 |5 |txt |563655
4 |2 |6 |txt |684536
5 |2 |3 |txt |566654
6 |2 |4 |txt ...Вопрос № 74140: Здравствуйте!
Будьте добры объясните, что такое модули! Как они работают? И вообще нужны ли они?
...Вопрос № 74154: Доброго времени суток!
Вопрос такого плана - есть стартовая страница index.php.
Каркас страницы - таблицы.
Центральная область - iframe.
Мне надо, что бы в iframe отображался файл, подгружемый в зависимости от нажатой ссылки в меню.<b...
Мне нужно выбрать из таблицы 5 последних записей, но так, чтобы id_2 были все разные (id - auto_increment, id_4 - уникальное datetime).
Я посылаю такой запрос:
$query = "SELECT * FROM table GROUP BY id_2 ORDER by id DESC LIMIT 5";
Выбирает все правильно: строки 6,5,4,3,2, но когда добавляю новые записи:
7 |2 |7 |txt |566654
8 |2 |1 |txt |604596
то будут выбраны строки 7,6,5,4,3.
Я так полагаю, что группировка по id_2 группирует 8-ю запись с 1-й, и они не попадают с выбираемую 5-ку, т.к. id у 1-й строчки старее (меньше).
Так вот, как выбрать записи так, чтобы id_2 по-прежнему группировались, но выводилась бы запись из каждой группы с последним id, а не с первым?
То есть чтобы в последнем случае вывелись строки 8,7,6,5,4?
Отправлен: 04.02.2007, 15:27
Вопрос задал: Defalex (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: lupus campestris
Здравствуйте, Defalex!
На примере:
1) mysql> select * from last;
+------+------+------+------+--------+
| id | id_1 | id_2 | id_3 | id_4 |
+------+------+------+------+--------+
| 1 | 2 | 1 | txt | 563654 |
| 2 | 2 | 2 | txt | 684596 |
| 3 | 2 | 5 | txt | 563655 |
| 4 | 2 | 6 | txt | 684536 |
| 5 | 2 | 3 | txt | 566654 |
| 6 | 2 | 4 | txt | 604596 |
| 7 | 2 | 7 | txt | 566654 |
| 8 | 2 | 1 | txt | 604596 |
| 9 | 2 | 4 | txt | 546372 |
+------+------+------+------+--------+
9 rows in set (0.00 sec)
Это аналог Вашей таблицы.
2) Делаем запрос:
mysql> select * from last inner join (select distinct id_2 as a from last order by id desc limit 5) as something on last.id_2=something.a where id=(select max(id) from last where last.id_2=something.a) order by id desc;
+------+------+------+------+--------+------+
| id | id_1 | id_2 | id_3 | id_4 | a |
+------+------+------+------+--------+------+
| 9 | 2 | 4 | txt | 546372 | 4 |
| 7 | 2 | 7 | txt | 566654 | 7 |
| 5 | 2 | 3 | txt | 566654 | 3 |
| 4 | 2 | 6 | txt | 684536 | 6 |
| 3 | 2 | 5 | txt | 563655 | 5 |
+------+------+------+------+--------+------+
5 rows in set (0.00 sec)
Получаем то, что нужно. Правда, добавляется лишнее поле...
Удачи!
--------- «С кем тяжело молчать, с тем не о чем говорить» (Метерлинк)
Ответ отправила: lupus campestris (статус: Профессор) Россия, Москва Тел.: +79060429689 Организация: http://www.orange-business.ru WWW:http://lupus-campestris.blogspot.com/ ICQ: 193918889 ---- Ответ отправлен: 07.02.2007, 11:54 Оценка за ответ: 5 Комментарий оценки: Превосходно! Именно то, что нужно! Спасибо огромное! В PHP знаю только верхушки, и единственное,
что нашел подходящее к этой задаче, это GROUP. Поначалу устраивало, а вот потом... А сейчас все решено!
Вопрос № 74.140
Здравствуйте!
Будьте добры объясните, что такое модули! Как они работают? И вообще нужны ли они?
Отправлен: 04.02.2007, 21:59
Вопрос задал: Keha (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Ерёмин Андрей
Здравствуйте, Keha!
По сути дела, модуль - это любая составляющая программы - отдельный файл, содержащий код на языке программирования или например php-скрипт. Как правило, создать на PHP большую систему (например, движок для сайта), написав один-единственный файл просто невозможно (даже если это и удастся сделать, то редактировать такой файл будет абсолютно неудобно). В связи с этим все процессы разделяют на отдельные составляющие и сохраняют по разным файлам - это и есть модули. Если в процессе работы скрипта ему требуется дополнительная
информация, он обращается к другому модулю, в котором эта информация есть. Такие модули называются включаемыми. Это очень удобно - если что-то идёт не так, можно последовательным анализом каждого модуля найти ошибку. Более того, все данные не загружаются сразу - они загружаются только по мере необходимости. Это ускоряет работу. Таким образом получается целая система взаимодействий между отдельными модулями, а в конечном результате достигается поставленная цель
. Желаю удачи!
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Доброго времени суток!
Вопрос такого плана - есть стартовая страница index.php.
Каркас страницы - таблицы.
Центральная область - iframe.
Мне надо, что бы в iframe отображался файл, подгружемый в зависимости от нажатой ссылки в меню.
Рассматриваю такой вариант написания - при нажатии на любую из ссылок в области меню сайта, некой переменной будет передаваться какое-то значение, затем будет в этом же окне заново перегружаться эта страница, а значение, полученное при нажатии на ссылку в меню должно передаваться в iframe в виде генерируемой ссылки, и начинает подгружаться в iframe соответствующий файл по этой генерируемой ссылке. Возможно ли такое? Получается своего рода рекурсия. Конечно, я думал, что значение переменой можно сохранить в файл,
а потом просто при загрузке стартовой страницы читать его, но что тогда делать с обнулением, или, того хуже - при заходе 2-ух и более человек одновременно получается чтение будет с одного файла. Отсюда идёт вывод - использовать кукис (не умею) или определять ай-пи каждого пользователя и создавать отдельный файл (а если их тысяча зайдёт одновременно?), кукис - более рационально. Как передать в iframe соответствующую ссылку - реализация простая, просто укажу пхп-файл в
ссылке для iframe, который и будет генерировать эту ссылку, зависящую от нажатия меню (путём чтения переменной). Коротко говоря - является ли такой вариант нормальным, и если да - как лучше это реализовать? И если можно такой вариант - помогите с кодом, пожалуйста.
Заранее спасибо за Ваши подробные и толковые ответы.
Отправлен: 05.02.2007, 00:33
Вопрос задал: VeRTeX (статус: 1-ый класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Ерёмин Андрей
Здравствуйте, VeRTeX!
Совершенно обычный способ, только даже iframe здесь не нужен. В навигации делаете ссылки вида index.php?page=downloads, а в том месте страницы, куда нужно вставить содержимое страницы, пишете так: <?php
if ($page == "downloads") { include("downloads.html"); }
?>
В каталоге со скриптом соответственно должен находиться файл downloads.html. Если условие выполнится, то в текущее место будет включена эта страница. Таким же образом сделайте для всех страниц. А если файлы с содержанием страниц и значения параметра page называть одинаково, то всё будет работать одной строкой: <?php
include($page.".html");
?>
Желаю удачи!
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Отвечает: PVS
Здравствуйте, VeRTeX!
Если само меню не изменяется в зависимости от выбраной ссылки, то Вам надо просто указать в iframe параметр name=имя_фрейма, а в ссылках писать target=имя_фрейма. Если меняется, то для реализации Вашего способа подправте код из предыдущего поста - вместо
include($page.".html");
поставте
echo '';
или
echo '';
Ответ отправил: PVS (статус: Специалист)
Ответ отправлен: 05.02.2007, 10:52