Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проверка наличия скина

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Uchenik
Отправлено: 03 Октября, 2011 - 09:13:34
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




Подскажите как сделать чтобы сканировалась папка со скинами и сравнивалась со скинами, которые указаны в БД, если какого-то нет, то добавить скин в БД.
Я пока сделал как-то так
PHP:
скопировать код в буфер обмена
  1.         function checkdir(){
  2.  $dir = $_SERVER['DOCUMENT_ROOT']."/templates/"; // папка которую будем сканировать
  3.  $data = opendir ($dir); // считываем содержимое папки $dir
  4.  while ($one = readdir ($data)) // собираем массив из результата сканирования
  5.  {
  6.  if($one != '.' && $one != '..') // если это содержимое дирректории
  7.  {
  8.  $files[] = $one;
  9.  }
  10.  }
  11. closedir ($data);
  12. print_r($files); //выводим массив с папками, вложенными в папку $dir.
  13.         }
 
 Top
illy
Отправлено: 03 Октября, 2011 - 10:26:26
Post Id



Участник


Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011  
Откуда: от верблюда)


Помог: 28 раз(а)




надо в массив всё загнать и делать проверку if(!in_array()) добавить


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
LIME
Отправлено: 03 Октября, 2011 - 10:38:46
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




хорошо бы конечно одним запросом сделать но пока не соображу как
разве что хранимую процедуру замастырить
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  function checkdir(){
  3.  $dir = $_SERVER['DOCUMENT_ROOT']."/templates/"; // папка которую будем сканировать
  4.  $data = opendir ($dir); // считываем содержимое папки $dir
  5.  $res=mysqli_connect($server,$user,$qwerty,$DB_name)) OR die ('Не удалось подключение к БД');
  6.  while ($one = readdir ($data)) // собираем массив из результата сканирования
  7.  {
  8.  if($one != '.' && $one != '..') // если это содержимое дирректории
  9.  {
  10.         $query="SELECT skin FROM table WHERE skin=$one";
  11.         $result=mysqli_query($res,$query) OR die ('He удалось добавление');
  12.         if (mysqli_num_rows($result)==0) {
  13.                 $query="INSERT INTO table VALUES($one)";
  14.                 $result=mysqli_query($res,$query) OR die ('He удалось добавление');
  15.         }
  16.  }
  17.  }
  18.  mysqli_close($res);
  19. closedir ($data);
  20.     }
  21. ?>
  22.  

(Отредактировано автором: 03 Октября, 2011 - 11:15:48)

 
 Top
Uchenik
Отправлено: 03 Октября, 2011 - 11:08:55
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




LIME
Я не совсем понял
PHP:
скопировать код в буфер обмена
  1. if (mysqli_num_rows($result)>0) {
  2.                 $query="INSERT INTO table VALUES($one)";


И почему-то у меня не работает.
PHP:
скопировать код в буфер обмена
  1. function checkdir(){
  2.  $dir = $_SERVER['DOCUMENT_ROOT']."/templates/"; // папка которую будем сканировать
  3.  $data = opendir ($dir); // считываем содержимое папки $dir
  4.  $res = mysqli_connect('localhost','root','','Acep') OR die ('Не удалось подключение к БД');
  5.  while ($one = readdir ($data)) // собираем массив из результата сканирования
  6.  {
  7.  if($one != '.' && $one != '..') // если это содержимое дирректории
  8.  {
  9.         $query="SELECT `ID` FROM `acep_Skins` WHERE `Name`={$one}";
  10.         $result=mysqli_query($res,$query) OR die ('He удалось выполнить запрос');
  11.         if (mysqli_num_rows($result)==0) {
  12.                 $query="INSERT INTO acep_Skins VALUES($one)";
  13.                 $result=mysqli_query($res,$query) OR die ('He удалось добавление');
  14.         }
  15.  }
  16.  }
  17.  mysqli_close($res);
  18. closedir ($data);
  19.     }

Ругается что не удаётся выполнить запрос

(Отредактировано автором: 03 Октября, 2011 - 11:11:54)

 
 Top
LIME
Отправлено: 03 Октября, 2011 - 11:14:43
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




INSERT INTO acep_Skins (name) VALUES ($one)
(Добавление)
хорошо бы ктото написал как одним запросом сделать
очень интересно
 
 Top
Uchenik
Отправлено: 03 Октября, 2011 - 11:17:57
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




$query="SELECT `ID` FROM `acep_Skins` WHERE `Name`={$one}";
Тот же эффект, я кстати просмотрел значения $one, она не видит скины, точнее сказать она видит только первый, который дефолт, а остальные не видит.
 
 Top
Uchenik
Отправлено: 04 Октября, 2011 - 07:50:12
Post Id



Частый гость


Покинул форум
Сообщений всего: 187
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




Я попробовал даже вот так
PHP:
скопировать код в буфер обмена
  1. function get_directory_list($path)
  2. {
  3.    if(is_dir($path)){
  4.        $dh = opendir($path);
  5.        while (false !== ($dir = readdir($dh))) {
  6.            if (is_dir($path . $dir) && $dir !== '.' && $dir !== '..') {
  7.                print "<br>".$dir;
  8.                            $q="Select ID,Name from `acep_Skins` where Name='{$dir}'";
  9.                            $r=mysql_query($q);
  10.                            $m=mysql_fetch_array($r);
  11.                            if (empty($m['Name'])){$q2="Insert Into acep_Skins (Name) values('$dir')";}
  12.                            get_directory_list($dir);
  13.            }  
  14.        }
  15.        closedir($dh);
  16.    }  
  17. }

PHP:
скопировать код в буфер обмена
  1. <?$path = $_SERVER['DOCUMENT_ROOT']."/templates/";
  2. get_directory_list($path);?>

Результата никакого, в каталоге лежат 3 скина, а в БД прописан только 1, тот который по дефолту.

(Отредактировано автором: 04 Октября, 2011 - 07:51:29)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с файловой системой и файлами »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB