Читать имена папок и разделенных подпапок в MySQL Inserts - PullRequest
1 голос
/ 14 июля 2011

У меня есть папка с именем «Comics» и подпапки в этом каталоге с именами комиксов + проблема

Пример:

/Comics <-- Main Folder
    /Amazing Spider-Man 129 <-- Sub Folder
    /Hellblazer 100 <-- Sub Folder
    /Zatanna 01 <-- Sub Folder

Теперь я хочу сканироватькаталог Comics и выводит каждое имя папки как запрос вставки mysql.Фактическое имя папки должно быть разделено на «Comic Name» и «Comic Issue».

Пример запроса

mysql_query("INSERT INTO comics (name, issue) VALUES ('Amazing Spider-Man', '129')");

Я получил это далеко, и теперь я хочу добавить проверку запроса кпосмотрите, существует комикс или нет.

<?php
    $main_folder = 'K:/Comics/'; // should be K:\Comics\ but I changed it because of the highlighting issue
    $folders = glob($main_folder.'* [0-9]*', GLOB_ONLYDIR);

    $comics_series = array();
    foreach($folders as $folder){
        $comics_series[] = preg_split('/(.+)\s(\d+)/', str_replace($main_folder, '', $folder), -1, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
    }

    $values = array();
    foreach($comics_series as $pair){
        $values[] = "('".mysql_real_escape_string($pair[0])."', '".((int) $pair[1])."')";
    }

    $check_query = mysql_query("SELECT * FROM comics WHERE name='".$values[0]."' AND issue='".$values[1]."'");
    if ($check_query == '0'){
        $query = 'INSERT INTO comics (name, issue) VALUES '.implode(',', $values);
        $result = mysql_query($query);
            echo ($result) ? 'Inserted successfully' : 'Failed to insert the values';
    }
    ?> 

это правильный формат для query_check?

Ответы [ 2 ]

1 голос
/ 14 июля 2011
<?php
$main_folder = './Comics'; // should be K:\Comics\ but I changed it because of the highlighting issue
$folders = glob($main_folder.'* [0-9]*', GLOB_ONLYDIR);

$comics_series = array();
foreach($folders as $folder){
    $comics_series[] = preg_split('/(.+)\s(\d+)/', str_replace($main_folder, '', $folder), -1, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
}

$values = array();
foreach($comics_series as $pair){
    $values[] = "('".mysql_real_escape_string($pair[0])."', '".((int) $pair[1])."')";
}

$query = 'INSERT INTO comics (name, issue) VALUES '.implode(',', $values);
$result = mysql_query($query);
echo ($result) ? 'Inserted successfully' : 'Failed to insert the values';
?>
1 голос
/ 14 июля 2011

Если вы просто застряли на разделении комического имени и вопроса, проверьте функцию explode

Если вы боретесь с обходом файлов / папок, я предлагаю взглянуть на glob . Это намного проще.

<?php
if ($handle = opendir('K:\Comics')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {

            $comicName = null;
            $pieces = explode(' ', $file); // explode the $file

            // if the last element is a number..
            if(is_numeric(end($pieces))) {
                $comicIssue = end($pieces);  // set the issue to a variable
                array_pop($pieces);          // remove the last element of the array

                // loop through the rest of the array and put the pieces back together 
                foreach($pieces as $value) {
                    $comicName .= " $value"; // append the next array element to $comicName
                }
            } else {
                echo "not issue number";
            }
        }
    }
    closedir($handle);
}

?>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...