Всем привет, Вывод картинок для статей осуществляется с помощью такой конструкции: PHP: <img src="/static/images/<?php echo $art ['image']; ?>" class="articles_image"> <?php echo $art ['image']; ?> - Сюда подставляется значение поля "image" из базы данных. За вывод статьи отвечает один файл. Вопрос: Если мне потребуется отображение нескольких разных картинок в статье, как быть? Можете посоветовать решение ?
PHP: <?php $QueryProductImages = mysql_query("SELECT * FROM products_images WHERE products_images.id_product='$id_product'"); $ArrayProductImages = mysql_fetch_array($QueryProductImages); do { echo "<img src='".$ArrayProductImages['image_way']."' width='auto' height='256' />"; } while ($ArrayProductImages = mysql_fetch_array($QueryProductImages)) ?> держите
Спасибо, Но я новичок, кто может подсказать инструкцию пошаговых действий ? 1.Нужно создать таблицу products_images в бд, сколько там столбцов делать и каких ? ))) 2. ??? Извините )
Да, статьи из БД --- Добавлено --- если что вот код файла, который отвечает за вывод статьи: http://codepen.io/anon/pen/rjgNNP
У каждой статьи есть свой ИД - Теперь делаем таблицу В БД с картинками для статей Поля: ИД картинки ИД статьи путь к картинке и ещё какие Вам необходимы, Заполняете таблицу картинками для статей и выводим вышевыложенным методом)
1)Создал таблицу с именем: products_images Создал 3 поля 1.id 2.id_product 3.image_way В первое поле внёс значение: 1 Во второе внёс: id статьи, в которую хочу вставить картинку В третье внёс: путь к картинке 2)Скопировал ваш код в свой файл вывода статей. Но ничего не получилось, вывелась только ошибка. Код файла вывода статей: Где вывод картинки - я добавил комментарий PHP: <?php require "/includes/config.php"; $article = mysqli_query($connection, "SELECT * FROM `articles` WHERE `id` = " . (int) $_GET['id']); $art = mysqli_fetch_assoc($article); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title><? echo $art ['title']; //достаём из массива заголовок?></title> <meta name="description" content="<? echo $art ['description']; //достаём из массива заголовок?> "> <meta name="keywords" сontent="<? echo $art ['keywords']; //достаём из массива заголовок?> "> <!-- Google Fonts --> <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet"> <!-- Custom --> <link rel="stylesheet" type="text/css" href="/media/css/style.css"> <link rel="stylesheet" type="text/css" href="/media/css/ino/vipadayushiy_spisok_2.css"> </head> <body> <div id="wrapper"> <!-- HEADER - главное меню --> <?php include "/includes/header.php"; ?> <?php include "includes/navigator.php"; ?> <div class="block"> <?php if( mysqli_num_rows($article) <= 0 ) { ?> <div id="content"> <div class="container"> <div class="row"> <section class="content__left col-md-8"> <div class="block"> <h3>Статья не найдена</h3> <div class="block__content"> <div class="full-text"> Запрашиваемая статья не найдена! </div> </div> </div> </section> <section class="content__right col-md-4"> <?php include "/includes/sidebar.php"; ?> </section> </div> </div> </div> <?php } else { mysqli_query($connection, "UPDATE `articles` SET `views` = `views` + 1 WHERE `id` = " . (int) $art['id']); ?> <div id="content"> <div class="container"> <div class="row"> <section class="content__left col-md-8"> <div class="block"> <h1 style="font-size:20px;"><?echo $art ['title']; ?></h1> <div class="block__content"> <!-- ВЫВОД КАРТИНКИ --><!-- ВЫВОД КАРТИНКИ --><!-- ВЫВОД КАРТИНКИ --> <?php $QueryProductImages = mysql_query($connection, "SELECT * FROM products_images WHERE products_images.id_product='$id_product'"); $ArrayProductImages = mysql_fetch_array($QueryProductImages); do { echo "<img src='".$ArrayProductImages['image_way']."' width='auto' height='256' />"; } while ($ArrayProductImages = mysql_fetch_array($QueryProductImages)) ?> <br><br> <!-- ВЫВОД ПОЛНОГО ТЕКСТА СТАТЬИ --> <div class="full-text"> <?echo $art ['text']; ?> </div> </div> </div> <?php include "/includes/sidebar.php"; ?> </section> </div> </div> </div> <?php } ?> </div> </body> </html> --- Добавлено --- Warning: mysql_query() expects parameter 1 to be string, object given in C:\OpenServer\domains\loc.loc\article.php on line 88 Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in C:\OpenServer\domains\loc.loc\article.php on line 89 --- Добавлено --- Помогите пожалуйста разобраться...
Анатолий, прочитайте внимательно мой пост выше и сделайте как там,а так ошибка у Вас выходит из-за того, что Вы переменной id_product не присвоили значение в коде, но не стоит исправлять, сделайте как описано выше и тогда продолжим
ZlobnyKolob, создал таблицу, поля, заполнил, попытался вывести с помощью вашего кода. Что ещё я забыл выполнить из вашей рекомендации ? --- Добавлено --- 87 строка - начинается код вывода картинки.
mysqli_query --- Добавлено --- странно, сначала вы используйте mysqli а с вывода начинаете mysql, зачем?)) --- Добавлено --- аа.. понятно.... вам написали такой код... но вы добавили $connection и забыли исправить на mysqli
san4ez Спасибо, ошибки уже не выводит, на счёт $connection вы 100% правы) Но картинку пока не выводит... ZlobnyKolob писал что нужно присвоить значение переменной id_product, на какое именно я не понимаю, san4ez, может вы подскажите?) --- Добавлено --- Обновлённый код, дописал везде к mysql буквачку i Код для вывода картинки начинается на 87 строке PHP: <?php require "/includes/config.php"; // вынес запрос и преобразовкалку сюда, чтобы не делать двойных запросов(ибо уменьшается производиельность) $article = mysqli_query($connection, "SELECT * FROM `articles` WHERE `id` = " . (int) $_GET['id']); $art = mysqli_fetch_assoc($article); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title><? echo $art ['title']; //достаём из массива заголовок?></title> <meta name="description" content="<? echo $art ['description']; //достаём из массива заголовок?> "> <meta name="keywords" сontent="<? echo $art ['keywords']; //достаём из массива заголовок?> "> <!-- Google Fonts --> <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet"> <!-- Custom --> <link rel="stylesheet" type="text/css" href="/media/css/style.css"> <link rel="stylesheet" type="text/css" href="/media/css/ino/vipadayushiy_spisok_2.css"> </head> <body> <div id="wrapper"> <!-- HEADER - главное меню --> <?php include "/includes/header.php"; ?> <?php include "includes/navigator.php"; ?> <div class="block"> <?php if( mysqli_num_rows($article) <= 0 ) { ?> <div id="content"> <div class="container"> <div class="row"> <section class="content__left col-md-8"> <div class="block"> <h3>Статья не найдена</h3> <div class="block__content"> <div class="full-text"> Запрашиваемая статья не найдена! </div> </div> </div> </section> <section class="content__right col-md-4"> <?php include "/includes/sidebar.php"; ?> </section> </div> </div> </div> <?php } else { mysqli_query($connection, "UPDATE `articles` SET `views` = `views` + 1 WHERE `id` = " . (int) $art['id']); ?> <div id="content"> <div class="container"> <div class="row"> <section class="content__left col-md-8"> <div class="block"> <h1 style="font-size:20px;"><?echo $art ['title']; ?></h1> <div class="block__content"> <!-- ВЫВОД КАРТИНКИ --><!-- ВЫВОД КАРТИНКИ --><!-- ВЫВОД КАРТИНКИ --> <?php $QueryProductImages = mysqli_query($connection, "SELECT * FROM products_images WHERE products_images.id_product='$id_product'"); $ArrayProductImages = mysqli_fetch_array($QueryProductImages); do { echo "<img src='".$ArrayProductImages['image_way']."' width='auto' height='256' />"; } while ($ArrayProductImages = mysqli_fetch_array($QueryProductImages)) ?> <br><br> <!-- ВЫВОД ПОЛНОГО ТЕКСТА СТАТЬИ --> <div class="full-text"> <?echo $art ['text']; ?> </div> </div> </div> <?php include "/includes/sidebar.php"; ?> </section> </div> </div> </div> <?php } ?> <!-- ПОДВАЛЧИК --> </div> </body> </html>
Я добился вывода картинки, но проблема в том, что картинка выводится одна и та же в любую статью которую я открываю. Я не понимаю, как сделать чтобы к каждой статье выводилась своя уникальная картинка. Весь мой файл, который отвечает за вывод статьи Код вывода картинки начинается с 87 строки. PHP: <?php require "/includes/config.php"; $article = mysqli_query($connection, "SELECT * FROM `articles` WHERE `id` = " . (int) $_GET['id']); $art = mysqli_fetch_assoc($article); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title><? echo $art ['title']; //достаём из массива заголовок?></title> <meta name="description" content="<? echo $art ['description']; //достаём из массива заголовок?> "> <meta name="keywords" сontent="<? echo $art ['keywords']; //достаём из массива заголовок?> "> <!-- Google Fonts --> <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet"> <!-- Custom --> <link rel="stylesheet" type="text/css" href="/media/css/style.css"> <link rel="stylesheet" type="text/css" href="/media/css/ino/vipadayushiy_spisok_2.css"> </head> <body> <div id="wrapper"> <!-- HEADER - главное меню --> <?php include "/includes/header.php"; ?> <?php include "includes/navigator.php"; ?> <div class="block"> <?php if( mysqli_num_rows($article) <= 0 ) { ?> <div id="content"> <div class="container"> <div class="row"> <section class="content__left col-md-8"> <div class="block"> <h3>Статья не найдена</h3> <div class="block__content"> <div class="full-text"> Запрашиваемая статья не найдена! </div> </div> </div> </section> <section class="content__right col-md-4"> <?php include "/includes/sidebar.php"; ?> </section> </div> </div> </div> <?php } else { mysqli_query($connection, "UPDATE `articles` SET `views` = `views` + 1 WHERE `id` = " . (int) $art['id']); ?> <div id="content"> <div class="container"> <div class="row"> <section class="content__left col-md-8"> <div class="block"> <h1 style="font-size:20px;"><?echo $art ['title']; ?></h1> <div class="block__content"> <!-- ВЫВОД КАРТИНКИ --><!-- ВЫВОД КАРТИНКИ --><!-- ВЫВОД КАРТИНКИ --> <?php ($QueryProductImages = mysqli_query($connection, "SELECT * FROM products_images WHERE products_images.id_product='17'")); $ArrayProductImages = mysqli_fetch_array($QueryProductImages); do { echo "<img src='".$ArrayProductImages['image_way']."' width='auto' height='256' />"; } while ($ArrayProductImages = mysqli_fetch_array($QueryProductImages)) ?> <br><br> <!-- ВЫВОД ПОЛНОГО ТЕКСТА СТАТЬИ --> <div class="full-text"> <?echo $art ['text']; ?> </div> </div> </div> <?php include "/includes/sidebar.php"; ?> </section> </div> </div> </div> <?php } ?> <!-- ПОДВАЛЧИК --> </div> </body> </html> --- Добавлено --- в бд, в таблице products_images у меня только 3 поля 1.id 2.id_product 3.image_way Подскажите, что мне делать дальше ?
Нет но я знаю как сделать вывод своей уникальной картинки в разные статьи, так было в коде у меня изначально. Но задача была с самого начала " Как сделать вывод нескольких уникальных картинок к каждой статье" Одну я могу выводить, разную к каждой статье. Но как выводить 2-3-10 шт разных в каждую статью ? Потом мне предложили код, который мне помог другой человек модифицировать, и в итоге только добился того, что выводилась картинка только одна с помощью этого кода, но ко всем статьям. Дальше мне не хотели помогать, типо за деньги только, и я понимаю вас. Но может всё таки что-то придумаем, так как денег у меня нет. Вообщем вернусь в самое начало, хороший код с выводом одной уникальной картинки в каждую статью вот: 85 строка - начинается код вывода картинки- и на 85 строке он заканчивается. PHP: <?php require "/includes/config.php"; $article = mysqli_query($connection, "SELECT * FROM `articles` WHERE `id` = " . (int) $_GET['id']); $art = mysqli_fetch_assoc($article); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title><? echo $art ['title']; //достаём из массива заголовок?></title> <meta name="description" content="<? echo $art ['description']; //достаём из массива заголовок?> "> <meta name="keywords" сontent="<? echo $art ['keywords']; //достаём из массива заголовок?> "> <!-- Google Fonts --> <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet"> <!-- Custom --> <link rel="stylesheet" type="text/css" href="/media/css/style.css"> <link rel="stylesheet" type="text/css" href="/media/css/ino/vipadayushiy_spisok_2.css"> </head> <body> <div id="wrapper"> <!-- HEADER - главное меню --> <?php include "/includes/header.php"; ?> <?php include "includes/navigator.php"; ?> <div class="block"> <?php if( mysqli_num_rows($article) <= 0 ) { ?> <div id="content"> <div class="container"> <div class="row"> <section class="content__left col-md-8"> <div class="block"> <h3>Статья не найдена</h3> <div class="block__content"> <div class="full-text"> Запрашиваемая статья не найдена! </div> </div> </div> </section> <section class="content__right col-md-4"> <?php include "/includes/sidebar.php"; ?> </section> </div> </div> </div> <?php } else { mysqli_query($connection, "UPDATE `articles` SET `views` = `views` + 1 WHERE `id` = " . (int) $art['id']); ?> <div id="content"> <div class="container"> <div class="row"> <section class="content__left col-md-8"> <div class="block"> <h1 style="font-size:20px;"><?echo $art ['title']; ?></h1> <div class="block__content"> <!-- ВЫВОД КАРТИНКИ --> <!-- ВЫВОД КАРТИНКИ --> <!-- ВЫВОД КАРТИНКИ --> <img src="/static/images/<?php echo $art ['image']; ?>" class="articles_image"> <br><br> <!-- ВЫВОД ПОЛНОГО ТЕКСТА СТАТЬИ --> <div class="full-text"> <?echo $art ['text']; ?> </div> </div> </div> <?php include "/includes/sidebar.php"; ?> </section> </div> </div> </div> <?php } ?> <!-- ПОДВАЛЧИК --> </div> </body> </html>
он делает связь с полем id_product,которое у меня прописано в бд. WHERE products_images.id_product='17'" - меняя тут циферку, я могу выводить разные картинки, естественно если предварительно создать эту запись в бд.
в бд, в таблице products_images у меня только 3 поля 1.id 2.id_product 3.image_way Я могу в поле id_product вписать хоть цифру 999, и картинка будет выведена ко всем статьям, при условии если я сделаю запись в поле id_product из БД - тоже 999 id_product - никак не совпадает с id в таблице articles, или может совпадать, но разницы никакой
а теперь перечитайте 6 пост в этой теме --- Добавлено --- там вполне четко написано ИД картинки ИД статьи путь к картинке --- Добавлено --- а вот далее id статьи должны совпадать с id в articles --- Добавлено --- и, так как вы передаете id методом GET, то в 88 строке, запросе к бд, у вас должно быть id_product='".$_GET['id']."'
Поменял id в таблице products_images в поле id_product, чтобы оно совпадало с полем id статьи в таблице articles , поставил 17. Также вписал в строку id_product='".$_GET['id']."' Но как я понял что-то с кавычками не так тут : ='".$_GET['id']."', и ломается скрипт, даёт ошибку: PHP: Parse error: syntax error, unexpected T_STRING in C:\OpenServer\domains\loc.loc\article.php on line 93 Вообщем вот код отвечающий за картинку на данный момент: PHP: <?php require "/includes/config.php"; $article = mysqli_query($connection, "SELECT * FROM `articles` WHERE `id` = " . (int) $_GET['id']); $art = mysqli_fetch_assoc($article); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title><? echo $art ['title']; //достаём из массива заголовок?></title> <meta name="description" content="<? echo $art ['description']; //достаём из массива заголовок?> "> <meta name="keywords" сontent="<? echo $art ['keywords']; //достаём из массива заголовок?> "> <!-- Google Fonts --> <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet"> <!-- Custom --> <link rel="stylesheet" type="text/css" href="/media/css/style.css"> <link rel="stylesheet" type="text/css" href="/media/css/ino/vipadayushiy_spisok_2.css"> </head> <body> <div id="wrapper"> <!-- HEADER - главное меню --> <?php include "/includes/header.php"; ?> <?php include "includes/navigator.php"; ?> <div class="block"> <?php if( mysqli_num_rows($article) <= 0 ) { ?> <div id="content"> <div class="container"> <div class="row"> <section class="content__left col-md-8"> <div class="block"> <h3>Статья не найдена</h3> <div class="block__content"> <div class="full-text"> Запрашиваемая статья не найдена! </div> </div> </div> </section> <section class="content__right col-md-4"> <?php include "/includes/sidebar.php"; ?> </section> </div> </div> </div> <?php } else { mysqli_query($connection, "UPDATE `articles` SET `views` = `views` + 1 WHERE `id` = " . (int) $art['id']); ?> <div id="content"> <div class="container"> <div class="row"> <section class="content__left col-md-8"> <div class="block"> <h1 style="font-size:20px;"><?echo $art ['title']; ?></h1> <div class="block__content"> <!-- ВЫВОД КАРТИНКИ --><!-- ВЫВОД КАРТИНКИ --><!-- ВЫВОД КАРТИНКИ --> <?php ($QueryProductImages = mysqli_query($connection, "SELECT * FROM products_images WHERE products_images.id_product='".$_GET['id']."')); $ArrayProductImages = mysqli_fetch_array($QueryProductImages); do { echo "<img src='".$ArrayProductImages['image_way']."' width='auto' height='256' />"; } while ($ArrayProductImages = mysqli_fetch_array($QueryProductImages)) ?> <br><br> <!-- ВЫВОД ПОЛНОГО ТЕКСТА СТАТЬИ --> <div class="full-text"> <?echo $art ['text']; ?> </div> </div> </div> <?php include "/includes/sidebar.php"; ?> </section> </div> </div> </div> <?php } ?> <!-- ПОДВАЛЧИК --> </div> </body> </html>
ну а где закрытие запроса двойной кавычкой??? $QueryProductImages = mysqli_query($connection, "SELECT * FROM products_images WHERE id_product='".$_GET['id']."'"); и зачем все это у вас в скобках?
Закрыл кавычкой, всё заработало, теперь к каждой статье добавляется разная картинка, уже хорошо. Осталось сделать, чтобы картинка была не одна на одну статью, а несколько 2-3- или10 шт. к каждой статье естественно свои уникальные. Подскажите как это реализовать ?
это уже другой вопрос, показывайте как вы пытались это сделать и вам помогут обьяснениями(а я сейчас спать) (больше готовый код я не хочу писать, этот раздел для обучения php).
san4ez, Ок, благодарю вас, очень помогли. По следующей проблеме: Сам пришёл к решению создать несколько записей в бд, с одинаковым id к статье. - Вывелось несколько картинок, отлично! Но на сколько адекватно такое решение ? Может есть более удобный вариант выведения разных картинок, чтобы не было каши в БД ? Хотелось бы услышать мнение знающих.
Хорошо ) а на счет каши - имел ввиду что когда будет много записей в таблице картинок, то найти нужную станет проблемно, Но щас я вспомнил что в бд можно делать поиск по id, так что вопрос снимается ) Спасибо ещё раз, желаю всем энтузиазма помогать новичкам = )