Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] i [MySql] sprawdzenie czy nazwa jpega jest w bazie
Forum PHP.pl > Forum > Przedszkole
motor
Mam taki dylemat potrzebuję funkcji która umożliwi mi wykasowanie obrazków z katalogu ale tylko tych których nie ma w bazie
Mam już plik który wyświetla zawartość katalogu i mogę wyświetlić obrazki które są w bazie iw katalogu
  1. <?php
  2. $result = mysql_query(" SELECT * FROM tabela_zdjęcia WHERE nazwa zdjecia='$nazwa_zdjecia_zkatalogu'");
  3. while ($a_row = mysql_fetch_array ($result) )
  4. {
  5. print"jest ok";
  6. }
  7. ?>


Ale jak zrobić żeby wyświetliły mi się nazwy obrazków z katalogu których nazw nie ma w bazie bo tylko m i zaśmiecają , z ich usunięciem juz sobie poradzę
kwiateusz
no to porownujesz to co zwraca Ci funkcja listująca katalog z tym zo zwrocilo Ci zapytanie np poprzez in_array" title="Zobacz w manualu php" target="_manual i to co nie ma swojego odpowiednika w bazie to do tablicy a potem unlink ...
Ludvik
Pobierz wszystkie nazwy zdjęć z bazy (A) i z katalogu (cool.gif do osobnych tablic. Potem różnica zbiorów (B / A) da ci listę plików, których nie ma w bazie. W php różnicę zbiorów obliczysz array_diff" title="Zobacz w manualu php" target="_manual.
motor
Coś sobie nie radze czy ktoś może mi napisać jak przedszkolakowi questionmark.gif
  1. <?php
  2. if($file != '.' && $file != '..' && $file_ext == "jpg")
  3. {
  4.  
  5. list($width, $height, $type, $attr) = getimagesize("$default_dir"."$file");
  6.  
  7.  
  8. $result = mysql_query(" SELECT * FROM tabela_zdjęcia ");  
  9.  while ($a_row = mysql_fetch_array ($result) ) {
  10.  
  11.  
  12. $os = array("$file")
  13. if (in_array("$a_row[nazwa_zdjecia]", $os)) {
  14.  echo "tak jest<br>";
  15. }else{
  16.  
  17. echo"nie ma<br>";
  18. }
  19. ?>

$file=nazwa zd z katalogu
...
Ludvik
  1. <?php
  2. $dir = opendir('sciezka');
  3. $files = array();
  4.  
  5. while (($node = readdir($dir)) !== false) {
  6. if (!is_dir($node) && substr($node, -1, 4) == '.jpg') {
  7. $files[] = $node;
  8. }
  9. }
  10.  
  11. closedir($dir);
  12.  
  13. $records = array();
  14. $result = mysql_query('SELECT nazwa_zdjecia FROM tabela_zdjecia');
  15. while ($record = mysql_fetch_row($result)) {
  16. $records[] = $record[0];
  17. }
  18.  
  19. $toDelete = array_diff($files, $records);
  20. ?>

Jakoś tak...
Ja_Szczur
  1. <?php
  2. $result = mysql_query( 'SELECT nazwa_zdjecia FROM tabela_zdjęcia' );
  3. $zdj_z_bazy = array();
  4. while( $row = mysql_fetch_row( $result ) )
  5. $zdj_z_bazy[] = $row[0];
  6.  
  7. $dir = openDir( 'katalog/ze/zdjeciami' );
  8. while( $file = readDir( $dir ) )
  9. if( $file != '.' && $file != '..' && subStr( $file , strPos( $file , '.' ) ) == 'jpg' )
  10. if( ! in_array( subStr( $file , 0 , strPos( $file , '.' ) ) , $zdj_z_bazy ) )
  11. unLink( 'katalog/ze/zdjeciami/' . $file );
  12.  
  13. closeDir( $dir );
  14. ?>


[pisane na szybko]
motor
Do Ludvik
wywala błąd w lini nr 5
Parse error: syntax error, unexpected T_STRING in

zaraz zobaczę skrypt Pana Ja_Szczur
Ludvik
To dziwne... U mnie na php 5.1.4 nic się nie dzieje ze składnią. Znalazłem tylko błąd przy substr, gdzie -1 trzeba zamienić na -4. Ta część u mnie działa...

  1. <?php
  2. $dir = opendir('sciezka');
  3. $files = array();
  4.  
  5. while (($node = readdir($dir)) !== false) {
  6. if (!is_dir($node) && substr($node, -4, 4) == '.jpg') {
  7. $files[] = $node;
  8. }
  9. }
  10. //...
  11. ?>
motor
U mnie 5.8.4 i nadal nie działa
co to jest $node ?
nasty
A ja mam php-8.19.8837 build 2278 tongue.gif
A tak na serio takiej wesji niema, daj phpinfo()...
motor
Co ja gadam to Perl smile.gif
php 4.4.2

Ok juz działa jak to zrobić dziękuję wszystkim za nieocenioną pomoc

Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.