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>';