Skip to content
Advertisement

Displaying Separate Column Values with PHP

I’m currently trying to link up database names with image filenames, and I’ve been successful in doing this so far. However, when I try to put these names on-top of an image, it only takes the last set of the names and puts that on all of the images. This isn’t what I’m trying to do.

I want to be able to take a filename, find it in the database, and then replace it with the name that corresponds with that post. (I my case they’re artists, so if the filename was original-5192eef6f06cc.jpg, I would replace it with This Super Cool Band Name, and overlay ontop of the individual image.

Here is my code

<?php
$hostname="localhost";
$username="root";
$password="";
$db = "sbp old 2";


$imagesDirectory = "images/";

if(is_dir($imagesDirectory))
{
 $opendirectory = opendir($imagesDirectory);

 while (($image = readdir($opendirectory)) !== false)
 {
     if(($image == '.') || ($image == '..'))
     {
         continue;
     }

     $imgFileType = pathinfo($image,PATHINFO_EXTENSION);
$string = "600x600";
     if(strpos($image, $string) !== false) {

}
         else if(($imgFileType == 'jpg') || ($imgFileType == 'png') || ($imgFileType == 'jpeg')) {

             $dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);
             foreach($dbh->query('SELECT REPLACE("'.$image.'", "'.$image.'", name) basename, name FROM media, artists where media.id = artists.id') as $row) {
             $output = '<h6 class="text2">'.$row['basename'].'</h6>';
                 }

         echo '<div class="img-container">';
             echo "<a href='images/".$image."'><img src='images/".$image."' class='actimage' width=300' height='300'></a>";
                 echo "<a href='images/".$image."'>";
                         echo '<div class="overlay">';
                                 echo '<h6 class="text">'.$image.'</h6>'; //FileName Text
                                 echo '<h6 class="text2">'.$output.'</h6>'; //FileName Text

                                 echo '</div>';
                             echo '</a>';
                 echo '</div>';

}
 }
 closedir($opendirectory);

}
?>

The part that handles the finding and replacing of the text is:

$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);
                foreach($dbh->query('SELECT REPLACE("'.$image.'", "'.$image.'", name) basename, name FROM media, artists where media.id = artists.id') as $row) {
                $output = '<h6 class="text2">'.$row['basename'].'</h6>';
                    }

Is anyone able to assist me here?

Thanks

Advertisement

Answer

This is the query…

foreach($dbh->query('SELECT REPLACE("'.$image.'", "'.$image.'", name) basename, name FROM media, artists where media.id = artists.id') as $row) {

And you should be able to see the fields here: “basename” and “name”. If you print “basename” with this…

$output = '<h6 class="text2">'.$row['basename'].'</h6>';

Then print the “name” with this…

$output = '<h6 class="text2">'.$row['name'].'</h6>';
User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement