Ver Mensaje Individual
  #3 (permalink)  
Antiguo 14/12/2011, 17:21
angelde
 
Fecha de Ingreso: abril-2007
Ubicación: Madrid
Mensajes: 3
Antigüedad: 17 años
Puntos: 0
Respuesta: Array_diff funciona en explorer y no en Firefox

Cita:
Iniciado por abimaelrc Ver Mensaje
PHP no se afecta por navegador. ¿Qué estás haciendo exactamente? Si es que no se visualiza de una manera en expecífica, eso es problema de CSS no de PHP. array_diff cumple su propósito del lado del servidor.
Te paso el código. Se que es un poco chapuza (no soy experto), lo que tengo es un formulario incial donde presento unos numeros que guardo en un fichero txt, al seleccionar los numeros del formulario y entrar lo que debería de hacer es grabar en un fichero los numreos seleccionados, compararlos con el fichero que contiene los numeros totales y con el array_diff calcular la diferencia de ambos. Con esa diferencia vuelvo a generar el fichero inicial con todos los numeros excepto los seleccionados por el usuario. Te pego solo el código que me funciona con Explorer pero no con Firefox (por cierto tengo que hacer otra chapuza porque con IE tengo un problema con los espacios en blanco que genera mi código, no he logrado depurarlo):

//Despues de seleccionados los números en mi formulario, llamo al fichero txt con una lista de numeros
$arrayserie1 = file("db/ss1.txt");

//Este es el fichero donde se copiaran los números que selecciono desde un formulario
$nomtxtselss1 = "select/select1.txt";

//y genero los numeros seleccionados:
$txtselectss1 = fopen($nomtxtselss1, "w");
// condiciono que cree el fichero a que la variable traiga datos y escribo un número en cada linea.
// La variable $HTTP_POST_VARS["numeross1"] trae los numeros seleccionados en mi formulario
if ($HTTP_POST_VARS["numeross1"]!=""){
foreach ($HTTP_POST_VARS["numeross1"] as $ss1arraypost){
fwrite( $txtselectss1, $ss1arraypost."\n" );
}
}
fclose( $txtselectss1 );

//Leo el fichero con los números seleccionados en la serie 1ª
$verselss1=file("select/select1.txt");


//Esto es algo cutre pero necesario porque sino no me funciona en el EXPLORER. Vuelvo a reescribir el fichero select ya que con IE me da un salto de linea de más y la tengo que eliminar.
//Con Firefox me funciona bien. Esto solo lo hago por EXPLORER pero con FIREFOX no haría falta
//abro o creo el fichero y escribo los números seleccionados
$txtselectss1 = fopen($nomtxtselss1, "w");

// quito la linea vacia preguntando el tamaño del elemento del array
//si es mayor que 1 entonces le reescribo y sino le salto.
$contselss1=count($verselss1);
for($j = 0; $j <= $contselss1; $j++) {
if (strlen($verselss1[$j])>1){
fwrite( $txtselectss1, $verselss1[$j] );
}
}
fclose( $txtselectss1 );


//Vuelvo a leer el fichero con los números seleccionados pero del fichero corregido sin espacios
$verselss1=file("select/select1.txt");


//calculo la diferencia entre el archivo con la lista completa de numeros y el fichero con los numeros seleccionados
$arraydifss1 = array_diff( $arrayserie1, $verselss1 );


//CUANDO LEO LOS DATOS CON EXPLORER ME SALEN CORRECTOS, PERO CUANDO LOS LEO CON FIREFOX LA VARIABLE DIFERENCIA ME VUELVE A LEER TODOS LOS NUMEROS DEL FICHERO PRIMERO ss1.txt, PARECE COMO SI NO ENTENDIERA EL CONTENIDO DEL FICHERO
foreach( $arrayserie1 as $echoarrayserie1 )
echo "<br>TODOS= ".$echoarrayserie1;

foreach( $verselss1 as $echoverselss1 )
echo "<br>SELECCIONADOS= ".$echoverselss1;

foreach( $arraydifss1 as $echoarraydifss1 )
echo "<br>DIFERENCIA= ".$echoarraydifss1;