Retrieving Images from a image name referenced in a database

I have image names stored in a database and the actual images stored in a folder. I am trying to rework my code so that it will print the actual image which is stored in a folder called uploads.

$q = "SELECT id, productimage FROM proDescript WHERE id=('13')";

$r = mysqli_query($connect, $q);

if (mysqli_num_rows($r) > 0) {

while ($row = mysqli_fetch_array($r, MYSQLI_NUM)) {
	
		<img src="uploads/ <?php echo "<p><h2>Hello $row[1]!</p>"?>"/> ;

Open in new window

wchirnsideAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
Ray PaseurConnect With a Mentor Commented:
MySQL has the SHOW CREATE TABLE query.  It will give you the information used to create the table.

This is a bit of a guess, but I think you might be able to do something like this.
$q = "SELECT id, productimage FROM proDescript WHERE id=('13')";
$r = mysqli_query($connect, $q);
if (mysqli_num_rows($r) > 0) 
{
    while ($row = mysqli_fetch_object($r))
    {
        echo '<img src="uploads/' . $row->productimage . '" />' . PHP_EOL;
    }
}

Open in new window

If you want to get a foundation in how PHP works, this article will lead you to some good learning resources.
http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/A_11769-And-by-the-way-I-am-new-to-PHP.html
0
 
Ray PaseurCommented:
Please post the CREATE TABLE statement for the proDescript table and a sample of the data that is contained in columns id and productimage.  Please post a visual of the contents of the "uploads" directory.  Once we see how these things relate, we can help you get the <img> tags right.
0
 
gr8gonzoConnect With a Mentor ConsultantCommented:
It looks like you're putting HTML inside your PHP blocks:


while ($row = mysqli_fetch_array($r, MYSQLI_NUM)) {
		<img src="uploads/ <?php echo "<p><h2>Hello $row[1]!</p>"?>"/> ;

Open in new window


I would expect to see something like this:

...
while ($row = mysqli_fetch_assoc($r)) {
?>
		<img src="uploads/<?php echo $row["productimage"]; ?>">
<?php
}
?>

Open in new window


Also note that I changed the record retrieval to mysqli_fetch_assoc($r)
0
Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

 
wchirnsideAuthor Commented:
Thanks for your quick reply

Yes, I am putting HTML with my php which I realize is most likely incorrect.
 
Please note that the following code will bring up the name of the file that is located in the database.
$q = "SELECT id, productimage FROM proDescript WHERE id=('13')";

$r = mysqli_query($connect, $q);

if (mysqli_num_rows($r) > 0) {

while ($row = mysqli_fetch_array($r, MYSQLI_NUM)) {
	
	 echo "<p><h2>Hello $row[1]!</p>";

Open in new window


Sorry but what exactly is meant by create table statement.
uploads.png
Table.png
0
 
Ray PaseurCommented:
This article shows how to detect errors in the query, including how to visualize both the failing query and the exact error message.  You might want to do that with all of your queries.
http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/PHP_Databases/A_11177-PHP-MySQL-Deprecated-as-of-PHP-5-5-0.html

$q = "SELECT id, productimage FROM proDescript WHERE id=('13')";
$r = mysqli_query($connect, $q);
if (!$r) { /* QUERY FAILED */ }

Open in new window

When the query fails, you want to print out the fully-resolved query string from the variable $q along with the contents of mysqli_errno() and mysqli_error().  PHP has the trigger_error() function to help with this.
0
 
wchirnsideAuthor Commented:
CREATE TABLE `proDescript` (
 `id` smallint(6) NOT NULL AUTO_INCREMENT,
 `users_id` mediumint(20) NOT NULL,
 `title` varchar(40) CHARACTER SET utf8 NOT NULL,
 `currency` tinyint(4) NOT NULL,
 `amount` varchar(30) CHARACTER SET utf8 NOT NULL,
 `location` varchar(40) CHARACTER SET utf8 NOT NULL,
 `description` varchar(300) CHARACTER SET utf8 NOT NULL,
 `productimage` varchar(100) CHARACTER SET utf8 NOT NULL,
 `active` tinytext CHARACTER SET utf8 NOT NULL,
 `date_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=24 DEFAULT CHARSET=latin1
0
 
Ray PaseurCommented:
Thanks.  I think you will find the "fetch_object()" functions to be more useful over time.  There is less fiddly punctuation involved.  Let us know how things turn out when you try the suggestions.  If you get error messages, please post those here along with the code and we'll try to help get you to a good solution.
0
 
wchirnsideAuthor Commented:
Both suggestions worked just fine and I did a bit of experimentation as well. I will add the codes to my folder of working scripts.

I took a look at your article and feel that I am learning PHP from reading several of the books that were suggested. The first book I ever bought on this subject was Kevin Yank's "Build Your Own Database Drive Web Site Using PHP & MYSQL" and have since bought the updated version.

There is still lots to learn and I suppose it is never ending.
0
 
Ray PaseurCommented:
Yank is pretty good.  You're right -- it's never ending.
... add the codes to my folder of working scripts.
In my experience, the most valuable asset I have created is the library of teaching examples.  I hope your set of examples is as useful to you as mine has been to me!

Thanks for the points and thanks for using EE, ~Ray
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.