Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RFpro.ru: Программирование на PHP


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

vladisslav
Статус: 6-й класс
Рейтинг: 1227
∙ повысить рейтинг »
amnick
Статус: Студент
Рейтинг: 751
∙ повысить рейтинг »
Волков Алексей aka Lupo
Статус: 5-й класс
Рейтинг: 373
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / PHP

Номер выпуска:1206
Дата выхода:21.05.2010, 20:30
Администратор рассылки:Устинов С.Е., Профессионал
Подписчиков / экспертов:387 / 154
Вопросов / ответов:1 / 1
IRC-канал по теме:#php

Вопрос № 178434: Доброго времени суток. Уважаемые эксперты, помогите мне. Есть база данных SinSide в ней таблица Cinema, в ней пять столбцов (базу данных создавал в phpMyAdmin). Напишите пожалуйста скрипт который извлекал бы например из одной колонки последние 10 ...



Вопрос № 178434:

Доброго времени суток. Уважаемые эксперты, помогите мне.
Есть база данных SinSide в ней таблица Cinema, в ней пять столбцов (базу данных создавал в phpMyAdmin). Напишите пожалуйста скрипт который извлекал бы например из одной колонки последние 10 записей и выводил их в ячейки таблицы по одной строке в одну ячейку...
Заранее вам благодарен!

Отправлен: 16.05.2010, 19:16
Вопрос задал: Уманский Денис, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Примак Руслан Николаевич, 4-й класс :
Здравствуйте, Уманский Денис.

Что касается первой части вашего вопроса, есть несколько вариантов решения для различных ситуаций:
1) Если в вашей таблице есть автоинкрементное поле (например id) вы можете выполнить следующий запрос:
SELECT mycolumn FROM cinema order by id desc LIMIT 10
Этот запрос сортирует данные в обратном порядке и выводит первые 10 записей с конца. Недостаток этого метода в том, что результирующая выборка отсортирована в обратном порядке. Исправить данную ситуацию можно частично, опять же, несколькими способами:
1.1) Выбирать не одну колонку, а вместе с автоинкрементным полем и выполнять повторную сортировку в нужном порядке:
select d.id, d.data_col from (SELECT c.id, c.data_col FROM cinema c order by c.id desc LIMIT 10) d order by d.id
1.2) Если вам необходима именно одна колонка в результирующем запросе, можно отсортировать по содержимому требуемой колонки, порядок строк результата в большинстве не будет соответствовать поряд ку строк в БД, но, если у вас текстовый результат, будет лучше, если он будет отсортирован в алфавитном порядке.
select * from (SELECT c.data_col FROM cinema c order by c.id desc LIMIT 10) d order by 1
2) Наиболее универсальный метод, подходит для случая когда нет автоинкрементного поля и требуется вернуть значения только одной колонки в строго заданном в БД порядке, но и он со своим недостатком - необходимо выполнить два запроса:
Первый - определить количество записей:
select count(*) from cinema
, из полученного значения вычесть количество необходимых записей (в нашем случае 10) и полученное значение подставить вместо N во втором запросе:
SELECT data_col FROM cinema LIMIT N, 10

Что-же касается второй части вашего вопроса, то как правильно заметили на мини-форуме вашего вопроса - все зависит от языка реализации отображения. Для Delphi я рекомендовал бы использовать бесплатные компоненты http://zeos.firmos.at/ для работы с любым движком БД. Либо исп ользовать компоненты ADO из поставки Delphi, но для этого Вам потребуется установить ODBC драйвер на компьютере клиента: http://www.mysql.com/downloads/connector/odbc/
Для отображения данных из колонки вам необходимо разместить на форме компонеты TZConnection, TZQuery, TDataSource, TDBGrid для компонентов Zeos, либо TADOConnection, TADOQuery, TDataSource, TDBGrid для комнонент ADO. Query необходимо привязать к Connection, DataSource к Query, а DBGrid к DataSource.



Ответ отправил: Примак Руслан Николаевич, 4-й класс
Ответ отправлен: 17.05.2010, 16:15
Номер ответа: 261450

Оценка ответа: 5
Комментарий к оценке:
Спасибо. Но я в этом деле совсем новичек... Если не трудо - можете как бы полный код написать (html -> php)...
Заранее благодарен.

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 261450 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.15 от 18.05.2010

    В избранное