Foros del Web » Programando para Internet » PHP »

Script de actualizacion de galerias.

Estas en el tema de Script de actualizacion de galerias. en el foro de PHP en Foros del Web. Wenas, a ver os explico. Tengo un directorio con 35 imagenes (del 0 al 34), y quiero que cuando suba unas nuevas imagenes mediante script, ...
  #1 (permalink)  
Antiguo 16/01/2004, 14:00
 
Fecha de Ingreso: febrero-2002
Mensajes: 139
Antigüedad: 15 años, 9 meses
Puntos: 0
Script de actualizacion de galerias.

Wenas, a ver os explico.

Tengo un directorio con 35 imagenes (del 0 al 34), y quiero que cuando suba unas nuevas imagenes mediante script, las viejas cambien el nombre, por ejemplo cuando suba als imagenes 0.jpg y 1.jpg las viejas aumenten en 2 el nombre.

La idea es que se muestren las 35 primeras imagenes del directorio, por lo que quiero que cuando suba imagenes las viejas se cambien el nombre a un numero mayor y así mostrarse solo las 35 primeras. Vamos, actualizar una galeria de imagenes.


$deldia_principio=3;

//aumento el nombre de todas las imagenes en 3. lo hago de 34 a 35 pq debe recorrer el directorio de abajo a arriba para no sustituir ninguna imagen (para cambiar de 23.jpg a 24.jpg, antes debo cambiar de 24.jpg a 25.jpg)
for($i=34; $i<35; $i=$i-1)
{
$i2=$i+$deldia_principio;
$final=(rename ('destino/'.$i.'.jpg','destino/'.$i2.'.jpg'));
}


//ahora subo las 3 imagenes nuevas
for($i=0; $i<=$deldia_principio; $i++)
{
$origen="origen/".$i.".jpg";
$fp = fopen($origen,'rb');
$archivo = fread ($fp, 7000);
$fp=fopen('destino/'.$i.'.jpg','wb');
fwrite($fp,$archivo);
fclose($fp);
$escr++;
}

El problema está en que por separado ambos scipts funcionan, pero al intentar hacerlo todo en el mismo script (me cambie el nombre de las viejas y luego me suba las nuevas) solo me cambia el nombre, no me sube las nuevas.

Donde está el problema? Alguien tiene alguna idea?

Llevo varios días probando y no encuentro la salución.

Bueno un saludo y gracias por adelantado.
  #2 (permalink)  
Antiguo 16/01/2004, 15:55
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Creo que este bucle es infinito:
Código PHP:
for($i=34$i<35$i=$i-1)
{
 
$i2=$i+$deldia_principio;
 
$final=(rename ('destino/'.$i.'.jpg','destino/'.$i2.'.jpg'));

Porque si no me equivoco lo que le dices es que ejecute el for mientras $i sea menor que 35. Y como $i inicialmente es menor que 35, e $i solo decrementa de valor, pues la condicion va a ser cierta por siempre jamas.

Creo que lo correcto seria:
Código PHP:
for($i=34$i>=0$i=$i-1)
{
$i2=$i+$deldia_principio;
$final=(rename ('destino/'.$i.'.jpg','destino/'.$i2.'.jpg'));

Es decir, mientras $i sea mayor o igual que 0. Eso hara que lo ultimo que ejecute sea cuando $i=0, que creo que es lo que deseas.

Por cierto, veo que tal como lo haces las imagenes mas viejas las pierdes, ya que solo renombras de la 34 hacia atras. Asi si un dia subes 4 nuevas, la 34 actual pasaria a ser la 38, la anterior la 37, la 36 y la 35. Pero si al dia siguiente, si solo subes 1, la 34 de ese momento pasara a ser la 35, pero seguiran existiendo la 36, 37 y 38 que creaste el dia anterior. No se si eso es lo que queres que pase.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 16/01/2004, 18:15
 
Fecha de Ingreso: febrero-2002
Mensajes: 139
Antigüedad: 15 años, 9 meses
Puntos: 0
Que fallo mas tonto he tenido.

Muchas gracias Josemi.

Por cierto la idea es luego poner un bucle con unlink para que me elimine todas las imagenes a partir de la 34 ya que solo me interesa la actualizacion de las imagenes y no guardarlas.

Un saludo y gracias de nuevo.
  #4 (permalink)  
Antiguo 17/01/2004, 15:26
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Pues no es necesario un unlink de las mayores de 34. Simplemente empieza tu for con la que le corresponde ser la 34. Por ejemplo, si metes 2 nuevas, la que quieres que pase a ser la 34 es la 32, asi que podrias empezar el for en 32. Seria algo asi:
Código PHP:
$comienzo=34-$deldia_principio;
for(
$i=$comienzo$i>=0$i=$i-1)

{

$i2=$i+$deldia_principio;

$final=(rename ('destino/'.$i.'.jpg','destino/'.$i2.'.jpg'));


Supongo que $deldia_principio es el numero de imagenes nuevas.

De esta forma (creo, pues no lo he probado) nunca crearas imagenes 35, 36, ... y no tendras que borrarlas.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 20:24.