ошибочка
while ($result = mysql_fetch_assoc($result)) {
for ($i=1;$i < 7;$i++ ) {
$myrow[] = $result['foto_mini'.$i];
$myrow[] = $result['foto_big'.$i];
}
}
segazav
2.04.2014 - 12:35
$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
2.04.2014 - 13:03
а так?
$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
while ($myrow =
изменить на
while ($result =
segazav
2.04.2014 - 13:36
Подсказали один алгоритм:
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
2.04.2014 - 13:39
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
2.04.2014 - 13:57
Да, но можно ведь запускать несколько раз. Картинок ведь будет меньше и меньше.
segazav
Да почти уже сделали, собери все в одно и запусти.
segazav
2.04.2014 - 14:10
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 шт. Т.е. половина файлов лишняя!
$raznica = array_diff($file_dir, $mr);
if (is_array($raznica))
{
echo '<br> Лишних файлов '.count($raznica);
for ($i=0;$i <= 30;$i++){
echo '<br>'.$raznica[$i];
}
} else
echo 'Нет сработало';
Игорь_Vasinsky
2.04.2014 - 14:22
Цитата |
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
2.04.2014 - 14:22
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
2.04.2014 - 14:24
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
а зачем все выводить - выборочно проверить файлы , что бы на верняка.
А при удалении конечно foreach .
segazav
2.04.2014 - 14:29
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. нужно все довести до конца, истина где то рядом...
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.