Foros del Web » Programando para Internet » PHP »

Comparar directorio con datos en MySql

Estas en el tema de Comparar directorio con datos en MySql en el foro de PHP en Foros del Web. Hola, Quizas el titulo es bastante confuso, pero basicamente querria saber como enfocar lo siguiente: 1.- Tengo un directorio con ficheretes: \image\1.jpg \image\2.jpg \image\3.jpg \image\4.jpg ...
  #1 (permalink)  
Antiguo 16/01/2012, 01:46
 
Fecha de Ingreso: marzo-2010
Mensajes: 63
Antigüedad: 14 años, 1 mes
Puntos: 0
Comparar directorio con datos en MySql

Hola,

Quizas el titulo es bastante confuso, pero basicamente querria saber como enfocar lo siguiente:

1.- Tengo un directorio con ficheretes:

\image\1.jpg
\image\2.jpg
\image\3.jpg
\image\4.jpg
..

2.- Tengo una tabla que uno de los campos hace referencia a este ficherete

Registro 1 -> Campo_Image = 1.jpg
Registro 2 -> Campo_Image = 3.jpg



Como puedo saber los ficheros que tengo en el directorio Y NO existan en la tabla ?


Gracias por las sugerencias
Savi
  #2 (permalink)  
Antiguo 16/01/2012, 02:03
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Comparar directorio con datos en MySql

Hola:

Yo tengo algo hecho de la siguiente manera: vuelco de la tabla el nombre de los ficheros en un array. y luego leo el directorio con dir comprobando cada entrada con in_array(), y descartando luego los ficheros no válidos:

if (preg_match('/(.jpg|.gif|.png)/', $entrada))...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 16/01/2012, 02:59
 
Fecha de Ingreso: marzo-2010
Mensajes: 63
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Comparar directorio con datos en MySql

Caricatos,

Funciono gracias. Te explico brevemente lo q he hecho a ver si el rendimiento crees q sera el correcto.

1.- Poner datos de tabala en array

Código PHP:
while ( $linea mysql_fetch_array$rsMYSQL_ASSOC ) ) 
    
$output[] = $linea'image' ]; 
2.- Comparar archivo por archivo del directorio con la tabla

Código PHP:
$dir = (isset($_GET['dir']))?$_GET['dir']:"/";
$directorio=opendir($dir); 

while (
$archivo readdir($directorio)) { 
  if(
$archivo == '.') {}
  elseif(
$archivo == '..') {}
  elseif(
is_dir("$dir/$archivo")) {}
  else {
    if ( 
in_array$archivo$output ) ){
            
// SI EXISTE
        
} else {
            
// NO EXISTE. Hago lo que sea
        
}

   }

Esto ya me vale y funciona. Lo que no entendi en cambio era para que sirve

Cita:
if (preg_match('/(.jpg|.gif|.png)/', $entrada))...
Pero en fin... me has ayudado --> Muchas Gracias.

Savi
  #4 (permalink)  
Antiguo 16/01/2012, 03:09
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Comparar directorio con datos en MySql

Hola:

Para añadir los ficheros al array uso arraay_push, aunque eso no creo que tenga importancia. Mi código es:


$d = dir($carpeta);
while (false !== ($entrada = $d->read())) {
if (!in_array($entrada, $urls)) {
if (preg_match('/(.jpg|.gif|.png)/', $entrada))
array_push($ficheros, $entrada);
}
};
$d->close();

La línea con la expresión regular filtra los ficheros con extensiones de imágenes... tal vez sea conveniente cambiar el orden de las condiciones...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 16/01/2012, 03:40
 
Fecha de Ingreso: marzo-2010
Mensajes: 63
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Comparar directorio con datos en MySql

Caricatos,


Ahhhhhh !!!! --> Ahora entiendo

Y cuando tenga un ratito mirare la diferencia entre añadir un elemento asi $aMiData[] = dato a hacerlo via tu funcion array_push()....


Gracias !!!
Savi.

Etiquetas: directorio, mysql, registro, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:57.