Foros del Web » Programando para Internet » PHP »

Problemas con el codigo

Estas en el tema de Problemas con el codigo en el foro de PHP en Foros del Web. Hola a todo aquel que lea este mensaje, y gracias por su ayuda si me puede colaborar. Estoy haciendo un portal que recibe archivos y ...
  #1 (permalink)  
Antiguo 05/04/2005, 16:44
Avatar de KarenFerreira  
Fecha de Ingreso: abril-2005
Ubicación: Bucaramanga, Colombia
Mensajes: 87
Antigüedad: 19 años
Puntos: 2
Pregunta Problemas con el codigo

Hola a todo aquel que lea este mensaje, y gracias por su ayuda si me puede colaborar.
Estoy haciendo un portal que recibe archivos y los almacena en un servidor, el servidor solo recibe archivos con nombres de maximo 8 caracteres de extension, por lo cual los que me envian muy largos debo renombrarlos, puedo recibir maximo 5 archivos a la vez, el codigo lo tengo listo pero hay una secuencia donde se queda pegado y al parecer es en uno de los ciclos que estoy haciendo, los campo archivo donde recibo lo que se va a enviar al servidor se llaman infile1, infile2, infile3, infile4 e infile5, yo realizo un conteo previo al codigo de renombrar o de ajustar el nuevo nombre porque el archivo aun no lo he renombrado, para saber cuantas caja archivo estan siendo utilizadas, ahora el bloque de codigo que tengo que no me esta funcionando es el siguiente:
si existe algo que no entiendan por favor me avisan, ok?
$m=0;
$cambiados=0;
$num=1;
$i=0;
if($cuentaarch>0)
{
while($num<=$cuentaarch)//acomoda los nombres de los archivos en un arreglo
{ //para acomodar los archivos con mas de 8 caracteres de extension en su nombre
$nombres[$i]=${"infile".$num."_name"};//se copia el nombre del archivo en un arreglo de nombres
echo $nombres[$i];
$j=0; //utilizo j para moverme caracter a caracter dentro de un nombre determinado
$k=0; //utilizo k para contar los caracteres que van hasta que aparece punto

while($nombres[$i][$j]!=".")//mientras que el caracter sea diferente de punto
{
echo "entra una";
$k++;//aumente k
$j++;//mueva j
}

if($k>=8)//k es mayor que el numero de caracteres permitidos para un nombre?
{ //si, entonces
$cambiados++;

for($m=0; $m<6; $m++)
{$copia[$i][$m] = $nombres[$i][$m];} //creo una copia de los primeros seis caracteres del archivo
$copia[$i][6]="_"; //asigno 2 caracteres de relleno para ajustar los ocho de máximo del nombre.
$copia[$i][7]=$i;
$m+=3;

while($m<12)
{
$copia[$i][$m] = $nombres[$i][$j]; //termina de copiar los ultimos cuatro caracteres de la extension del archivo
$m++;
$j++;
}
$m=0; //limpia la m, por si es necesario hacer el mismo tratamiento con otro archivo
}
else
$copia[$i] = $nombres[$i];//si tiene 8 o menos de ocho simplemente copio el nombre igual que como estaba
$i++; //aumento en uno la posicion del arreglo de nombres
$num++; //aumento en uno para avanzar al siguiente archivo recibido
}//regresa a completar el ciclo

espero que los comentarios sean claros y de antemano nuevamente gracias por su ayuda
  #2 (permalink)  
Antiguo 06/04/2005, 06:47
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
.... lo siento, es un poco complicado seguirle a tu código... en principio de dónde sale $cuentaarch??...

Lo que se hace ante un código tan complicado es mandar a imprimir cosas dentro de éste... para seguirle el rastro... hasta donde se imprimió se quedó.. ó si se detiene imprimiendo algo es que hay un bucle mal por ahí... etc. Entonces quizá te convenga hacer esto...

ó!... cambiar de método... creo te complicas demasiado... en principio checate la FAQ para subir archivos multiples: http://www.forosdelweb.com/showthrea...636#post296636 ... y creo que para renombrar bastaria con substr()... nada más...

... entoces... si incistes con lo que tienes prueba lo que te digo.. y nos avizas... pero igual prueba otra cosa como la que te menciono...

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 06/04/2005, 08:47
 
Fecha de Ingreso: febrero-2004
Ubicación: Bogotá, Colombia
Mensajes: 191
Antigüedad: 20 años, 2 meses
Puntos: 1
Creo q la variable $cuentaarch es un sizeof() o count() para contar las cajas de texto donde vienen los archivos.

Estoy de acuerdo con jam, creo q te estas complicando un poco, te sugiero q leas el post q te puso jam, y q mires http://www.desarrolloweb.com/articul...7.php?manual=6 ahi esta una referencia sencilla para hacer un upload, y $_FILES[] q te va a ser util para conocer y modificar los nombres de los archivos
  #4 (permalink)  
Antiguo 07/04/2005, 14:27
Avatar de KarenFerreira  
Fecha de Ingreso: abril-2005
Ubicación: Bucaramanga, Colombia
Mensajes: 87
Antigüedad: 19 años
Puntos: 2
Sigo teniendo problemas con el codigo y estoy a punto de enloquecerme porque se queda en un ciclo de forma infinita, y aparentemente todo esta bien, pero algo sucede, si me pueden ayudar me avisan por favor y les envio el codigo completo para que me lo revisen a ver si puedo hacer algo con eso.
  #5 (permalink)  
Antiguo 07/04/2005, 15:51
Avatar de KarenFerreira  
Fecha de Ingreso: abril-2005
Ubicación: Bucaramanga, Colombia
Mensajes: 87
Antigüedad: 19 años
Puntos: 2
Gracias a jam y a andrecito, al fin pude encontrar una forma de arreglar el codigo y todo gracias a ustedes, se los muestro para que vean todo lo que se recorto.
$pp=".";
$cambiados=0;
$i=1;

if($cuentaarch>0)
{
while($i<=$cuentaarch)
{
$pos = strpos($nombres[$i], $pp);

echo $pos;
if($pos>=8)
{
$cambiados++;
$copiapormod=substr($nombres[$i], 0, 5);
$copiapormod=$copiapormod."_".$i;
$extension=substr($nombres[$i], -4);
$copiapormod=$copiapormod.$extension;
$copia[$i]=$copiapormod;
echo $copia[$i];
}
else
{$copia[$i] = $nombres[$i];}
$i++;
}

Gracias otra vez por la ayuda, me sacaron de un gran aprieto

Última edición por KarenFerreira; 07/04/2005 a las 16:02
  #6 (permalink)  
Antiguo 07/04/2005, 16:07
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Nombre.. el trabajo lo hiciste tú... y a simple viste se ve mucho mejor a lo que tenias antes..

Solo.. un detalle... aunque entiendo que manejas arhivos.. pero no sé que haces con ellos .. solo quisiera mencionar la parte donde haces:
$extension=substr($nombres[$i], -4);
... con esto sacas la extención con todo y punto... pero ojo con aquellos archivos que tienen 4 carácteres como extención... aunque solo se me viene a la mente el caso de los jepg... no sé si te importe... tendrías que hacer una validación por ahí...

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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 23:09.