[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Очистка каталога от не нужных фото
Страницы: 1, 2, 3, 4
Kusss
ошибочка
while ($result = mysql_fetch_assoc($result)) {
for ($i=1;$i < 7;$i++ ) {
$myrow[] = $result['foto_mini'.$i];
$myrow[] = $result['foto_big'.$i];
}
}
segazav
$result = mysql_query ("SELECT foto_mini1,foto_mini2,foto_mini3,foto_mini4,foto_mini5,foto_mini6,foto_big1,foto_big2,foto_big3,foto_  big4,foto_big5,foto_big6 FROM doska",$db);
$myrow = mysql_fetch_assoc ($result);

while ($myrow = mysql_fetch_assoc($result)) {
for ($i=1;$i < 7;$i++ ) {
$myrow[] = $result['foto_mini'.$i];
$myrow[] = $result['foto_big'.$i];
}
}

unset($result);
echo '<br>Всего записей <b>'.count($myrow).'</b>';


Выдало: "Всего записей 1"
Почему так?
Игорь_Vasinsky
а так?

$result = mysql_query ("SELECT foto_mini1,foto_mini2,foto_mini3,foto_mini4,foto_mini5,foto_mini6,foto_big1,foto_big2,foto_big3,foto_     big4,foto_big5,foto_big6 FROM doska",$db);

while ($myrow = mysql_fetch_assoc($result)) {
for ($i=1;$i < 7;$i++ ) {
$mr[] =$myrow['foto_mini'.$i];
$mr[] = $myrow['foto_big'.$i];
}
}


echo '<br>Всего записей <b>'.count($mr).'</b>';


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Kusss
while ($myrow =
изменить на
while ($result =
segazav
Подсказали один алгоритм:

1) открываем директорию с файлами изображений и обходим каждый файл по отдельности
2) при обходе для каждого файла ищем запись в базе данных, запрос будет вида:
"SELECT COUNT(*) FROM doska WHERE foto_mini1 = '" . mysql_real_escape_string($image_name_from_directory) . "' OR foto_mini2='" . mysql_real_escape_string($image_name_from_directory) . "' ......
3) если количество возвращаемых записей = 0 - удаляем изображение, если нет - ничего не делаем

Но, не знаю как его записать в коде.
Помогите, пожалуйста составить код PHP/
Игорь_Vasinsky
5 гигов картинок. тебе не посчитали кол-во запросов?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
segazav
Да, но можно ведь запускать несколько раз. Картинок ведь будет меньше и меньше.
Kusss
segazav
Да почти уже сделали, собери все в одно и запусти.
segazav
while ($myrow = mysql_fetch_assoc($result)) {
for ($i=1;$i < 7;$i++ ) {
$mr[] =$myrow['foto_mini'.$i];
$mr[] = $myrow['foto_big'.$i];
}
}


echo '<br>Всего записей <b>'.count($mr).'</b>';


Результат: Всего записей 271260

Всего файлов в каталоге: 494521 шт. Т.е. половина файлов лишняя!
Kusss
// Расхождение массивов
$raznica = array_diff($file_dir, $mr); // сравниваем массивы
if (is_array($raznica)) // если является массивом
{
echo '<br> Лишних файлов '.count($raznica);
// Первые 30 для проверки
for ($i=0;$i <= 30;$i++){
echo '<br>'.$raznica[$i];
}
}
else
echo 'Нет сработало';
Игорь_Vasinsky
Цитата
for ($i=0;$i <= 30;$i++){


foreach() быстрее будет.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
segazav
while ($myrow = mysql_fetch_assoc($result)) {
for ($i=1;$i < 7;$i++ ) {
$mr[] =$myrow['foto_mini'.$i];
$mr[] = $myrow['foto_big'.$i];
}
}


echo print_r($mr);


Выдала:Array ( [0] => foto/0.99318500 1393330270.jpg [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] =>
foto/0.33447100 1393330413.jpg [13] => foto/0.39297800 1393330413.jpg [14] => [15] => [16] => [17] => [18] => [19] => [20] => [21] => [22] => [23] => [24] =>
foto/0.23076200 1395817985.jpg [25] => foto/0.27053900 1395817985.jpg [26] =>
foto/0.70270600 1395817985.jpg [27] => [28] => [29] => [30] => [31] => [32] => [33] => [34] => [35] => [36] => [37] => [38] => ......

И что делать с таким массивом?
Это наверно из-за того, что не все ячейки содержат путь (добавление фото не обязательна для пользователей).
Он точно не сравним с массивом файлов $file_dir:

А результат print_r($file_dir):

Array ( [0] => foto/0.11298200 1332744739.jpg [1] => foto/0.98137800 1373571971.jpg [2] => foto/0.22620400 1361369943.jpg [3] => foto/0.33276300 1378456558.jpg [4] => foto/0.67648100 1394874976.jpg [5] => foto/0.82936300 1322641887.jpg [6] => foto/0.98386900 1394688107.jpg [7] => foto/0.71861900 1332954448.jpg [8] =>
Игорь_Vasinsky
1. получил массов списка файлов из БД
2. получил массив списка файлов из директории
3. разницу массивов сохранил в 3й массив
4 - пробежался по 3му массиву и удалил все файлы из директории.

что тут не поняного?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Kusss
а зачем все выводить - выборочно проверить файлы , что бы на верняка.
А при удалении конечно foreach .
segazav
Array ( [0] => foto/0.99318500 1393330270.jpg [1] => [2] => [3] => [4] => [5] => [6] => [7] => [8] => [9] => [10] => [11] => [12] =>
foto/0.33447100 1393330413.jpg [13] => foto/0.39297800 1393330413.jpg [14] => [15] => [16] => [17] => [18] => [19] => [20] => [21] => [22] => [23] => [24] =>
foto/0.23076200 1395817985.jpg [25] => foto/0.27053900 1395817985.jpg [26] =>
foto/0.70270600 1395817985.jpg [27] => [28] => [29] => [30] => [31] => [32] => [33] => [34] => [35] => [36] => [37] => [38] => ......

Это наверно из-за того, что не все ячейки содержат путь (добавление фото не обязательна для пользователей).

Как избежать пустых значений массива?
Или в сравнении array_diff () это не имеет значение?

P.S. нужно все довести до конца, истина где то рядом...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.