Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con explode

Estas en el tema de Problema con explode en el foro de PHP en Foros del Web. Cordial saludo. Tengo la siguiente información almacenada en una variable: $InfoCursos = "369-478|654-789|790-475|"; Cada registro esta delimitado por | y cada campo por - Es ...
  #1 (permalink)  
Antiguo 26/11/2013, 16:57
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
Pregunta Problema con explode

Cordial saludo.

Tengo la siguiente información almacenada en una variable:

$InfoCursos = "369-478|654-789|790-475|";

Cada registro esta delimitado por | y cada campo por - Es decir en este ejemplo tengo 3 registros y 2 campos por registro; para poder guardar estos datos en una base de datos hago lo siguiente:

Código PHP:
$InfoCurs explode("|"$InfoCursos);
$ContCurs count($InfoCurs) - 1;

for(
$i=0$i<$ContCurs;$i++)
    {
        
$DatoCurs explode("-"$InfoCurs[$i]);
          
$curConsecutivo $DatoCurs[0];
        
$jorConsecutivo $DatoCurs[1];
        } 
Mi problema esta en la siguiente situacion:
Cuando i vale 0 me retorna lo siguiente
$curConsecutivo me muestra "array369" por consiguiente cuando lo guardo en la tabla lo guarda con valor 0 y no 369
$jorConsecutivo me muestra "478" y lo guarda bien

Cuando i vale 1 me retorna lo siguiente
$curConsecutivo me muestra "654" guarda bien
$jorConsecutivo me muestra "789" y lo guarda bien

Cuando i vale 2 me retorna lo siguiente
$curConsecutivo me muestra "790" guarda bien
$jorConsecutivo me muestra "475" y lo guarda bien

Como pueden ver siempre me presenta el problema con la variable $curConsecutivo cuando i vale 0.

A que se debe eso???
Como hago para guardar bien en la base de datos???

Agradezco la ayuda y sugerencias que me puedan brindar.
  #2 (permalink)  
Antiguo 26/11/2013, 17:38
 
Fecha de Ingreso: octubre-2010
Mensajes: 93
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Problema con explode

hola, podrías utilizar un foreach

Código PHP:
Ver original
  1. $InfoCurs = explode("|", $InfoCursos);
  2.  
  3. foreach($InfoCurs AS $info){
  4.     $DatoCurs = explode("-", $info);
  5.     $curConsecutivo = $DatoCurs[0];
  6.     $jorConsecutivo = $DatoCurs[1];
  7. }

no he probado el código pero creo que te puede ayudar.


saludos
  #3 (permalink)  
Antiguo 26/11/2013, 17:53
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Problema con explode

Cita:
Iniciado por tattojk Ver Mensaje
¡
$curConsecutivo me muestra "array369" por consiguiente cuando lo guardo en la tabla lo guarda con valor 0 y no 369
Cuando dices "me muestra", te refieres a algún sitio donde haces un echo?
Escribe un echo $curConsecutivo."-".$jorConsecutivo; *inmediatamente* después del explode interno al bucle.Se imprime el resultado correcto?
Entiendo que has eliminado líneas de ese código, ya que, si no, $curConsecutivo y $jorConsecutivo siempre tendrán los valores de la última pareja de números.
  #4 (permalink)  
Antiguo 26/11/2013, 17:53
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Problema con explode

celineadiction ten cuidado con el último |
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 26/11/2013, 17:56
 
Fecha de Ingreso: octubre-2010
Mensajes: 93
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Problema con explode

Cita:
Iniciado por andresdzphp Ver Mensaje
celineadiction ten cuidado con el último |
cierto, no lo ví la primera vez, ahi se puede hacer un unset del último elemento del arreglo generado con el explode
  #6 (permalink)  
Antiguo 26/11/2013, 22:30
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problema con explode

Es extraño, acabo de probar el código y pude imprimir los datos sin problemas. Asegúrate de que estás imprimiendo correctamente los datos.

Saludos
  #7 (permalink)  
Antiguo 30/11/2013, 08:49
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
Pregunta Respuesta: Problema con explode

Cordial saludo.

Probe con el forech y sigue presentando el mismo problema al guardar como especifique anteriormente; tambien tome el consejo del ultimo | e igual; esta es la forma como armo la informacion; debo seleccionar en el formulario varios check entonces hago lo siguiente:

Código PHP:
            $ContCheck 0;
            for(
$i 0;$i $_POST['ContCurs'];$i++)
                {
                    if(isset(
$_POST['chkCurso'.$i]))
                        {
$ContCheck++;}
                }
            
$CheckSele 0;
            for(
$i 0;$i $_POST['ContCurs'];$i++)
                {
                    if(isset(
$_POST['chkCurso'.$i]))
                        {
                            
$CheckSele++;
                            if(
$CheckSele $ContCheck)
                                {
$Separador "|";}
                            else
                                {
$Separador "";}
                            
$InfoCursos $InfoCursos.$_POST['chkCurso'.$i]."-".$_POST['cbJornada'.$i].$Separador;
                        }
                } 
con esto guardo en la variable $InfoCursos el codigo del curso y la jornada unido por "-" y por cada fila nueva con un "|" excepto el ultimo.

Al momento de guardar debo leer $InfoCursos y lo hago de la siguiente manera:

Código PHP:
$InfoCurs explode("|"$InfoCursos);
$ContCurs count($InfoCurs) - 1;

for(
$i=0$i<$ContCurs;$i++)
    {
        
$DatoCurs explode("-"$InfoCurs[$i]);
          
$curConsecutivo $DatoCurs[0];
        
$jorConsecutivo $DatoCurs[1];
        echo 
$curConsecutivo."-".$jorConsecutivo."<br>";
//       Aqui pongo la instruccion del insert 
        

De acuerdo a lo retornado por $curConsecutivo y $jorConsecutivo; como especifique al inicio:
el primer registro del campo o sea $curConsecutivo me guarda 0 y la $jorConsecutivo guarda bien el codigo.
del segundo registro del campo $curConsecutivo me guarda bien y la $jorConsecutivo guarda bien el codigo.

por consiguiente hago un echo en el for y encuentro que en el primer registro, campo $curConsecutivo me retorna Array##### ejemplo Array369 y por esa razon me guarda el 0.


Que solución me pueden dar???

Estoy pensando en crear una tabla para guardar esos datos pero no quiero desperdiciar base de datos sabiendo que se puede hacer con esto; que otra opcion me pueden dar??'

Agradezco de antemano la ayuda y sugerencias que me puedan brindar.
  #8 (permalink)  
Antiguo 30/11/2013, 12:20
 
Fecha de Ingreso: octubre-2010
Mensajes: 93
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Problema con explode

lo único que se me ocurre es que la variable $InfoCursos declares antes del for donde se llena

puede ser $InfoCursos = "";
  #9 (permalink)  
Antiguo 30/11/2013, 12:26
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Problema con explode

¿Estás seguro de que la palabra "array" no se imprime en otra parte del código que no has puesto?¿Estás seguro de que $InfoCursos sigue siendo un string, cuando se ejecuta el trozo de código que has puesto?
  #10 (permalink)  
Antiguo 30/11/2013, 18:53
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
De acuerdo Respuesta: Problema con explode

Cordial saludo.


marlanga tienes razon; no me habia dado cuenta que le habia puesto $arrInfoCursos entonces me guardaba como array pero le quite el arr y santo remedio; aprendi algo....


Gracias a todos por sus valiosos aportes.
  #11 (permalink)  
Antiguo 01/12/2013, 02:33
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Problema con explode

Siempre tengo razón, incluso cuando miento.

Etiquetas: explode, registro, tabla, variable
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 04:40.