Foros del Web » Programando para Internet » PHP »

Problema al tratar textarea con explode() para luego sumar

Estas en el tema de Problema al tratar textarea con explode() para luego sumar en el foro de PHP en Foros del Web. Hola a todos, Es la primera vez que escribo en el foro! Necesito vuestra ayuda, a ver como lo veis. Lo que necesito hacer es ...
  #1 (permalink)  
Antiguo 31/08/2012, 10:47
 
Fecha de Ingreso: agosto-2012
Mensajes: 2
Antigüedad: 12 años, 3 meses
Puntos: 1
Exclamación Problema al tratar textarea con explode() para luego sumar

Hola a todos,
Es la primera vez que escribo en el foro! Necesito vuestra ayuda, a ver como lo veis.

Lo que necesito hacer es que un usuario me ponga un texto en un textarea con el siguiente formato:

Pedro Gómez + 8
Juan Pérez + 9
...

Una vez hacen submit del formulario, trato los datos por tal de sacar la información que necesito, que por una parte es el número de grupos que van a venir (es decir, el número de lineas) que con eso no ha habido problema y posteriormente quiero conseguir el número total de invitados que van a venir.
Aquí tenéis mi código:

Código PHP:
//Cojo contenido de textarea después de hacer el submit
$lista=$_POST['invitados'];

//Cuento el numero de lineas para saber los grupos que van a asistir
$numLineas=count(explode("\n",$lista));

//Empiezo a contar los invitados totales dependiendo si hay solo una linea o varias
if($numLineas==1){
            
$var=explode("+",$lista); //Si solo hay una linea divido la cadena mediante el '+'
            
$total=1+$var[1]; //Este 1 simboliza a el nombre de la persona al que le sumo el numero de invitados que trae esa persona $var[1]
}
else { 
//Si hay mas lineas
       
$linea=explode("\n",$lista); //Creo una array con una linea en cada posicion
    
for($i==0;$i<=$numLineas-1;$i++){ //creo un bucle por todas las lineas
        
$separa=explode("+",$linea[$i]);
        
$suma+=1+$separa[1]; //Guardo en suma el total que me va dando de cada linea y el computo total de invitados
    
}

Pues bien, aparentemente yo no veo nada mal en el código y me lo cuenta mal...
Poniendo alerts por dentro del bucle me he dado cuenta que la primera linea la ignora, sólo computa un 1, es decir si es:

Alex López + 5
Juan Fuentes + 20

El resultado es 22 cuando tendría que ser 27.
Obvia la primera linea y solo computa un uno, no se porque... Es como si el explode() ignorase esa linea dividir...

A ver si alguien me puede ayudar!!

Agradezco mucho vuestra atención!


Un saludo,

Lex.
  #2 (permalink)  
Antiguo 31/08/2012, 12:01
 
Fecha de Ingreso: mayo-2006
Mensajes: 475
Antigüedad: 18 años, 7 meses
Puntos: 58
Respuesta: Problema al tratar textarea con explode() para luego sumar

Hola. Y que pasa si recorres el array con un foreach?

Código PHP:
Ver original
  1. //Cojo contenido de textarea después de hacer el submit
  2. $lista=$_POST['invitados'];
  3.  
  4. //Cuento el numero de lineas para saber los grupos que van a asistir
  5. $numLineas=count(explode("\n",$lista));
  6. $total=0;
  7. foreach($numLineas as $valor){
  8. $separa=explode("+",$valor);
  9. $total=$total+1+trim($separa[1]);
  10. }
  11. echo $total;
  #3 (permalink)  
Antiguo 31/08/2012, 12:12
 
Fecha de Ingreso: agosto-2012
Mensajes: 2
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Problema al tratar textarea con explode() para luego sumar

Cita:
Iniciado por jossss Ver Mensaje
Hola. Y que pasa si recorres el array con un foreach?

Código PHP:
Ver original
  1. //Cojo contenido de textarea después de hacer el submit
  2. $lista=$_POST['invitados'];
  3.  
  4. //Cuento el numero de lineas para saber los grupos que van a asistir
  5. $numLineas=count(explode("\n",$lista));
  6. $total=0;
  7. foreach($numLineas as $valor){
  8. $separa=explode("+",$valor);
  9. $total=$total+1+trim($separa[1]);
  10. }
  11. echo $total;
Gracias por tu ayuda jossss! Eres muy amable. En este rato al final he acabado metiendo el primer valor del array que me generaba el explode en una variable y tratándolo aparte lo he conseguido.

Por si a alguien le puede servir como saco la primera linea aunque sea sencillo ahí lo dejo:

Código PHP:
$primerenter=strpos($lista,"\n");
$primera_frase=substr($lista,0,$primerenter); 

gracias a todos los que habéis dedicado un minuto a leerlo!

Saludos

Etiquetas: explode, formulario, textarea, usuarios, trazar
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 01:01.