Php вывести один результат

Вывести только один результат запроса с использованием PHP и mySQL?

Я работаю с MySQL и PHP и натолкнулся на вопрос, который заставляет задуматься весь день. Я не уверен, что мои трудности связаны с незнанием какой-либо команды продвинутого уровня, которая может быть запрошена для этого, не могли бы вы помочь?

Вот в чем дело: я работаю со старой базой данных и не хочу менять таблицы в ней, поэтому мне пришлось работать с двумя таблицами:

  • album: в этой таблице только два поля: id_album и album_name;
  • фотографии: эта таблица содержит пути к фотографиям и связана с таблицей альбомов полем id_album;

Я хочу создать страницу, на которой будут перечислены все альбомы, и у каждого будет миниатюра, которую я беру из таблицы «фото», в этом случае мне нужно перечислить только одну фотографию для каждого альбома, и я Я не уверен, как написать код для этого, это то, что я получил до сих пор:

Он работает правильно, но он перечисляет все фотографии во всех альбомах. Есть ли способ, которым я могу напечатать только одну фотографию для каждого альбома?

Большое спасибо заранее!

Читайте также:  Чем отмыть тосол с ковролина

Решение

Вы должны присоединиться к запросам. Используйте что-то вроде

Другие решения

Но вы действительно должны использовать MySqli или что-то еще ..

Да, вы используете один запрос с GROUP_CONCAT чтобы получить фотографии альбома и SUBSTRING_INDEX выбрать одну фотографию

Вы также можете указать ORDER BY в GROUP_CONCAT по вашему столбцу автоматического увеличения в таблице фотографий, чтобы выбрать последний или первый как GROUP_CONCAT(p.foto ORDER BY p.id DESC) . Также как Тадман упомянул в комментариях вы используете устарела mysql_* семейные функции лучше начинать с PDO

Также во время разработки вы должны позаботиться об ошибках перед выполнением

Источник

php вывод текста и переменной | Особенности

Решил я написать эту статью, чтобы расставить точки как правильно и когда выводить данные. Статья не простая, поэтому если Вы ещё никогда не выводили текст ранее, то лучше начните с первого урока курса по PHP, а уже как опыта наберётесь, тогда заглядывайте сюда.

Чтобы вывести на экран текст мы используем одну из следующих конструкций языка: echo или print, либо функцию printf. Давайте разберём варианты и их особенности:

Функция printf позволяет нам вывести на экран отформатированный текст:

printf используется очень редко, самое популярное применение: преобразовать цену товара в классический вид: рубли.копейки. К примеру:

Если printf используют для вывода очень редко, то вот языковые конструкции print и echo — в каждом коде! Я говорю, что printf функция и значение надо писать в скобках по примеру выше, а вот echo и print — языковые конструкции и текст писать в скобках не надо:

Разница между echo и print есть, хоть смысл у них один и тот же. print может указывать лишь 1 значение, а вот в echo можно перечислять их через запятую:

Не смотря на это всё же можно вывести через один print 2 переменных и делается это с использованием конкатенации:

Конкатенация строк работает следующим образом, она СНАЧАЛА объединяет все в одну большую строку, а уже потом выводит один раз! С другой стороны мы не говорим по очереди «выведи то, выведи сё», мы говорим: у тебя выделено в памяти 1 байт под $x, и 1 байт под $y, объедини $x и $y в памяти и получи ещё одну временную строку в 2 байта (2 символа латинских), и потом выведи и очисти память. В итоге математики уже смогли посчитать. что при конкатенации будет занято уже 4 байта временно на данные, а при перечислении через запятую только 2.

На первый взгляд кажется, что запятая всё же круче в данном случае, но везде повсеместно используют точку. На самом деле ответ очень прост и его подтвердит любой эксперт — нет смысла заморачиваться и экономить на спичках, использование точки считается более классическим и делом привычки многих, и вы никогда в жизни не столкнётесь с тем, что сайт быстрее или медленнее работает из-за точки или запятой. Настоящая производительность сайтов кроется совсем в других вопросах (сложные операции, большой объем данных в Базе Данных)! Поэтому смело используйте то, что Вы уже ранее использовали, переучиваться нет смысла.

По поводу конкатенации стоит заметить самую важную и огромнейшую вещь — её используют для объединения переменной с переменной или строки с переменной, но объединять строку со строкой будет считаться плохим тоном:

Но есть одна маленькая особенность, когда нам необходимо будет использовать двойные кавычки для особой обработки строки (об этом чуть позже), тогда мы применим конкатенацию для строк:

Завершая тему print и echo хотелось бы уточнить ещё второе отличие. print возвращает цифру 1 всегда после завершения выполнения, echo — нет. И вот на этом часто любят строить задачки такого плана для того, чтобы пошевелить мозгами:

И типовая задачка:

И тут Вы спросите, используется ли такое где-то? Ответ — НЕТ, это считается маразмом, и была бы моя воля, я print сделал бы лишь синонимом echo. Не смотря на то, что подобное никто никогда не использует, эта возможность до сих пор остаётся как развлечение для теоретиков.

Какие кавычки правильно использовать для вывода текста в PHP

Я не буду грузить Вам голову маразмом, итак одну вещь рассказал выше. Поэтому давайте сразу перейдем к тому, как правильно делать вывод!

Правило №1 — без кавычек мы пишем числа и переменные:

Правило №2: Одинарные кавычки используем когда хотим вывести в неизменном виде то, что содержится внутри кавычек, а это мы хотим сделать всегда:

Заметьте, что теги отправляются в браузер в неизменном виде, а браузер, в свою очередь, обрабатывает их и выводит как теги, то есть уже отформатированный код. Снова же мы повторяем, что PHP — генерирует HTML, а не текст.

Исключения из правил, когда мы хотим вывести спецсимволы такие как знак больше или меньше, или целый блок HTML, то мы применяем функцию htmlspecialchars:

Правило №3: двойные кавычки применяем, когда хотим вывести обработанную строку, то есть практически никогда. Не смотря на о, что следующий код сможет вывести переменную:

Данный код считается ужасным, банально потому что мы не можем читать наш код и не понимаем его поведение:

Глядя на код выше выведется Friends или FrienBeer ? Это называется не очевидным поведением, а значит в будущем ещё не раз поведение этого кода может быть изменено. Никогда не пишите код так, чтобы нельзя было его сразу быстрым взглядом понять. Правильно было бы:

Но не смотря на это мы двойные кавычки используем в двух случаях, когда нам надо вывести перевод строки (не HTML) либо спецсимвол:

В исходном коде страницы Вы можете увидеть как работает перевод строки \r\n и понять разницу.

Встраиваем вывод из PHP в HTML

PHP — лишь инструмент, способ вставить в HTML какую-то сгенерированную часть данных, поэтому мы используем PHP внутри HTML всегда. Простой вариант:

Указанный выше синтаксис многогранен, внутри конструкции PHP мы можем не только использовать echo, но и любые другие операции включая создание переменных и т.д. и т.п. Но если необходимо ТОЛЬКО вывести переменную или текст одним действием (только одним echo), можно применить сокращенный синтаксис:

Самое интересное, это использовать совмещенный синтаксис для PHP и HTML:

Как вы видите, внутри итерации цикла можно выводить чистый HTML, достаточно закрыть конструкцию PHP и продолжить выводить HTML. Этот способ намного предпочтительнее обычного echo тем, что наш редактор кода IDE PHPStorm подсветит синтаксис кода и упростит разработку сайта.

Статья будет дорабатываться и совершенствоваться. Но даже сейчас я в ней обозначил все основные приёмы вывода текста и переменных в PHP

Источник

Динамический вывод в PHP-скрипте

Все мы знаем, что PHP — это серверный язык. И у него есть особенность вывода информации, например, с помощью echo. Эта особенность заключается в том, что функции вывода (в том числе и операторы) отправляют информацию не сразу на вывод, а сначала в выходной поток. Этот выходной поток можно представить как трубу (или буфер), в которой накапливается выходная информация. Все echo, print и прочие выходные функции и операторы отправляют данные в эту самую трубу. И только после окончания работы скрипта всё содержимое этой трубы перемещается в браузер. Однако, иногда необходимо динамически выводить данные в PHP-скрипте, то есть видеть определённый результат прямо в процессе работы.

Давайте для начала разберём такой пример:

Если запустить данные скрипт, то примерно в течение 5-ти секунд ничего происходить не будет, а затем мгновенно появятся все 5 цифр. Это как раз наглядное доказательство существования выходного потока. Сначала в выходной поток помещаются все данные через echo, а после выполнения скрипта, содержимое выходного потока мгновенно выбрасывается в браузер.

Теперь давайте всё-таки разберём, как динамически выводить данные в PHP-скрипте. Делается это с помощью специальной функции flush(), которая позволяет высвободить выходной поток ещё до завершения скрипта. Перепишем предыдущий пример:

В результате каждую секунду Вы будете видеть появление одной цифры.

Где можно использовать функцию flush()? В основном, это очень долгие скрипты. Допустим, Вы сделали какой-нибудь парсер сайта. Если сайт большой, то парсер будет работать очень долго, и чтобы видеть, что он элементарно не зациклился и вообще ешё работает, можно выводить адрес последней считанной страницы. Это всего лишь как пример, и таких примеров у функции flush() великое множество.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

  • BB-код ссылки для форумов (например, можете поставить её в подписи):
  • Источник

    mysql_result

    mysql_result — Возвращает данные результата запроса

    Данный модуль устарел, начиная с версии PHP 5.5.0, и удалён в PHP 7.0.0. Используйте вместо него MySQLi или PDO_MySQL. Смотрите также инструкцию MySQL: выбор API. Альтернативы для данной функции:

    Описание

    Возвращает содержимое одного поля из набора результата MySQL.

    Работая с большими результатами запросов, следует использовать одну из функций, обрабатывающих сразу целый ряд результата (указаны ниже). Так как эти функции возвращают значение нескольких ячеек сразу, они НАМНОГО быстрее mysql_result() . Кроме того, учтите, что указание численного смещения работает намного быстрее, чем указание колонки, или колонки с таблицей через точку.

    Список параметров

    Обрабатываемый результат запроса. Этот результат может быть получен с помощью функции mysql_query() .

    Номер получаемого ряда из результата. Нумерация рядов начинается с 0 .

    Имя или смещение получаемого поля.

    Может быть как смещением поля, именем поля, так и именем поля вместе с таблицей (таблица.поле). Если для поля был указан псевдоним (‘select foo as bar from. ‘), используйте его вместо имени самого поля. Если не указан, возвращается первое поле.

    Возвращаемые значения

    Содержимое одного поля из набора результата MySQL в случае успешного выполнения, или false в случае возникновения ошибки.

    Примеры

    Пример #1 Пример использования mysql_result()

    = mysql_connect ( ‘localhost’ , ‘mysql_user’ , ‘mysql_password’ );
    if (! $link ) <
    die( ‘Ошибка соединения: ‘ . mysql_error ());
    >
    if (! mysql_select_db ( ‘database_name’ )) <
    die( ‘Ошибка выбора базы данных: ‘ . mysql_error ());
    >
    $result = mysql_query ( ‘SELECT name FROM work.employee’ );
    if (! $result ) <
    die( ‘Ошибка выполнения запроса:’ . mysql_error ());
    >
    echo mysql_result ( $result , 2 ); // выведет имя третьего сотрудника

    Примечания

    Вызовы функции mysql_result() не должны смешиваться с другими функциями, работающими с результатом запроса.

    Смотрите также

    • mysql_fetch_row() — Обрабатывает ряд результата запроса и возвращает массив с числовыми индексами
    • mysql_fetch_array() — Обрабатывает ряд результата запроса, возвращая ассоциативный массив, численный массив или оба
    • mysql_fetch_assoc() — Возвращает ряд результата запроса в качестве ассоциативного массива
    • mysql_fetch_object() — Обрабатывает ряд результата запроса и возвращает объект

    Источник

    Как получить результат обработки формы на той же странице, что и форма?

    Когда нажимаю submit на index.php, исполняется select_res.php скрипт, но результат запроса вижу на новой, пустой странице.

    Как можно ответ select запроса получать не на новой странице, а на главной, где кликнул на submit?

    в index.php пишу:

    а в select_res.php пишу:

    3 ответа 3

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

    Три базовых правила при работе с протоколом НТТР

    1. Запрос информации для показа всегда делается методом GET.
    2. Запрос, который отправляет информацию на сервер, меняя его состояние, всегда делается методом POST.
    3. После запроса, отправленного методом POST, сервер всегда перенаправляет клиента на какую-либо страницу методом GET.

    Как можно увидеть, исходный вопрос противоречит вышеприведенным правилам, и не должен быть задан в такой форме. Попробуем его исправить.

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

    Вариант 1. Лотерея.

    Судя по названию БД, мы можем предположить, что этот код представляет собой показ результатов в некоей лотерее. Пользователь вводит имя и фамилию, а ему выводятся результаты.
    Сверившись с вышеприведенными правилами мы можем определить, что у нас вариант №1 — запрос данных с сервера без изменения его состояния. То есть, форма должна отправляться методом GET, причем сразу на главную. (Как следствие вы можем отметить, что ответ, предлагающий редирект, является абсолютно бессмысленным в контексте данной задачи.)

    Но теперь возникает другой вопрос — как нам поженить главную страницу, на которую приходит запрос, и обработчик запроса, который лежит в отдельном файле. Вариант тупо переписать код обработчика годится в качестве костыля, но в реальной жизни так никто не делает — главная очень быстро превратится в помойку, в которой сам черт ногу сломит. А вот разносить разный функционал по разным файлам — идея очень здравая! Так что нам бы надо и код в отдельном файле сохранить, и результат на главной отобразить. И тут нам на помощь приходит оператор include ! Делаем так:

    и дальше уже пусть отдельный скрипт делает то что ему надо.

    Вариант 2. Авторизация.

    Но с другой стороны, этот код не запрашивает из БД результат лотереи, а запрашивает айди пользователя. Такое обычно требуется при авторизации. Сверившись с Правилами мы видим, что это запрос, меняющий состояние сервера (на нем заводится сессия). То есть, в этом случае мы можем посылать запрос куда угодно, но только методом POST, и после его обработки необходимо сделать редирект.

    В этом случае мы можем оставить исходный код автора как есть, но должны добавить к нему недостающий код:

    1. Запись persons_id в сессию.
    2. Перенаправление на главную с помощью НТТР заголовка Location: и функции header() .
    3. На главной мы из сессии читаем persons_id и определяем юзера. Далше мы можем вывести его id.

    Источник

    Оцените статью