Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Read file names in directory and compare to table

Posted on 2013-01-24
3
Medium Priority
?
223 Views
Last Modified: 2013-02-03
Hi,
In my application a user may upload a series of audio files and I need to ensure before they are put to use all of them are actually in the directory and are named appropriately. The user may have additional files in the directory which doesn't matter. I just need to ensure the required ones are there. Also the user may upload one of 2 different formats ie: .wav or .mp3

So if I had a table with the required names in my db ie: 'audio_table'
In that table I have the following names of audio files:
hello
goodbye
thanks

Any idea of the code required to check each filename in the directory and compare it to the filenames in the table, see if there is a match and see that the file extension in the directory is either .mp3 or .wav

Kind of like:
foreach audio file in the db table, read directory file names, find if match, check if .wav or .mp3
if all there return true
if missing return missing filenames array so I can echo back missing files

Thanks for any help.
0
Comment
Question by:tjyoung
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
3 Comments
 
LVL 42

Accepted Solution

by:
Meir Rivkin earned 1000 total points
ID: 38813732
check this code:

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
$filenames= array();


if ($handle = opendir('/path/to/audio_files')) {
  while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != "..") {
array_push($filenames, $entry);            
        }
    }
    closedir($handle);
}

$arrNames = join(',',$filenames);
$extensions = "mp3, wav"

$result = mysql_query("SELECT * FROM audio_table WHERE filename IN ($arrNames) and   SUBSTRING_INDEX(filename,'.',-1) in ($extensions) ");

if (!$result) {
    echo 'Could not run query: ' . mysql_error();
    exit;
}

echo 'Connected successfully';
mysql_close($link);

while($row = mysql_fetch_array($result))
  {
  echo $row['filename'];
  echo "<br />";
  }

Open in new window

0
 
LVL 111

Assisted Solution

by:Ray Paseur
Ray Paseur earned 1000 total points
ID: 38814128
When you refer to having a "table" I would understand that you mean you have a PHP array. You can use these functions to make the comparison.
http://php.net/manual/en/function.scandir.php
http://php.net/manual/en/function.array-intersect.php
0
 
LVL 9

Expert Comment

by:crazedsanity
ID: 38818822
It might be useful to store a hash (e.g. MD5) of the file in the database to ensure it hasn't been tampered with.  Once you've performed the steps Ray_Paseur gave, I'd add a "foreach" loop to test the file for their MD5 value, and do something intelligent if there's a mismatch (e.g. delete the file).
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When table data gets too large to manage or queries take too long to execute the solution is often to buy bigger hardware or assign more CPUs and memory resources to the machine to solve the problem. However, the best, cheapest and most effective so…
By, Vadim Tkachenko. In this article we’ll look at ClickHouse on its one year anniversary.
The viewer will learn how to count occurrences of each item in an array.
In this video, Percona Solution Engineer Rick Golba discuss how (and why) you implement high availability in a database environment. To discuss how Percona Consulting can help with your design and architecture needs for your database and infrastr…
Suggested Courses

598 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question