Foros del Web » Programando para Internet » PHP »

fraccionar una variable en PHP

Estas en el tema de fraccionar una variable en PHP en el foro de PHP en Foros del Web. Hola amigos necesito fraccionar una variable en varias partes para darle un nombre distinto a la variable de cada fracción. Mediante esta consulta: Código PHP: ...
  #1 (permalink)  
Antiguo 20/05/2012, 14:03
 
Fecha de Ingreso: enero-2010
Ubicación: Colombia
Mensajes: 238
Antigüedad: 14 años, 3 meses
Puntos: 2
fraccionar una variable en PHP

Hola amigos necesito fraccionar una variable en varias partes para darle un nombre distinto a la variable de cada fracción. Mediante esta consulta:

Código PHP:
              $sql="SELECT COUNT(dtalle_lic),licencias.dtalle_lic,tbl_licencias.cod_licencia,tbl_licencias.cod_fun,fun.cod_fun,fun.cod_lic,licencias.cod_lic,licencias.dtalle_lic, tbl_licencias.cod_exp,expensas.cod_exp,expensas.total,SUM(expensas.total) as suma             
              FROM tbl_licencias,fun,licencias,expensas
              WHERE tbl_licencias.cod_fun=fun.cod_fun AND fun.cod_lic=licencias.cod_lic AND tbl_licencias.cod_exp=expensas.cod_exp 
                       GROUP BY dtalle_lic"

                
$result=mysql_query($sql,$link);     
                while(
$row=mysql_fetch_array($result)){
                echo 
"$row[0]";    
                } 
En mi caso, la variable $row[0] da como resultado '28361' y necesito que cada numero quede en una variable distinta y por separado, ejemplo:

$num1=2
$num2=8
$num3=3
$num4=6
$num5=1
  #2 (permalink)  
Antiguo 20/05/2012, 14:34
Avatar de NJS
NJS
 
Fecha de Ingreso: noviembre-2011
Mensajes: 371
Antigüedad: 12 años, 5 meses
Puntos: 28
Respuesta: fraccionar una variable en PHP

y porque no usas

Código PHP:
row[0]
row[1]
row[2]
row[3]
row[4
__________________
Mejores empresas de Hosting
-=-=-=-=-=-=-=-
Empresas de Hosting
  #3 (permalink)  
Antiguo 20/05/2012, 15:25
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: fraccionar una variable en PHP

$array=str_split($row[0]);

eso te devolvera en un array lo que buscas.
Saludos.
  #4 (permalink)  
Antiguo 20/05/2012, 17:50
 
Fecha de Ingreso: enero-2010
Ubicación: Colombia
Mensajes: 238
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: fraccionar una variable en PHP

hola oscartt67, gracias. Mira, soy un poco nuevo en programacion PHP, no se en donde colocar la linea de codigo que me sugeriste aunque la coloque dentro del while pero no paso nada. Mira el codigo por favor.


Cita:
$sql="SELECT COUNT(dtalle_lic),licencias.dtalle_lic,tbl_licenci as.cod_licencia,tbl_licencias.cod_fun,fun.cod_fun, fun.cod_lic,licencias.cod_lic,licencias.dtalle_lic ,
tbl_licencias.cod_exp,expensas.cod_exp,expensas.to tal,SUM(expensas.total) as suma

FROM tbl_licencias,fun,licencias,expensas

WHERE tbl_licencias.cod_fun=fun.cod_fun AND fun.cod_lic=licencias.cod_lic AND tbl_licencias.cod_exp=expensas.cod_exp
GROUP BY dtalle_lic
";
$result=mysql_query($sql,$link);
while($row=mysql_fetch_array($result)){
$array=str_split($row[0]);
echo "$row[0]<br>";

}
  #5 (permalink)  
Antiguo 21/05/2012, 00:14
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: fraccionar una variable en PHP

lee los comentarios

Código PHP:
$sql="SELECT COUNT(dtalle_lic),licencias.dtalle_lic,tbl_licenci as.cod_licencia,tbl_licencias.cod_fun,fun.cod_fun, fun.cod_lic,licencias.cod_lic,licencias.dtalle_lic ,
tbl_licencias.cod_exp,expensas.cod_exp,expensas.to tal,SUM(expensas.total) as suma

FROM tbl_licencias,fun,licencias,expensas

WHERE tbl_licencias.cod_fun=fun.cod_fun AND fun.cod_lic=licencias.cod_lic AND tbl_licencias.cod_exp=expensas.cod_exp
GROUP BY dtalle_lic
"
;
$result=mysql_query($sql,$link);
while(
$row=mysql_fetch_array($result)){
$datos[]=$row[0];
echo 
"$row[0]<br>";
}
/* ahora aqui tendrias los valores del while en un arreglo.
para ver las variables haces esto */
print_r($datos);
// asi veras todo los resultados del array y para darles nombre asi;
// esto fuera y despues del while
$num1=$data[2];
$num2=$data[8];
$num3=$data[3];
$num4=$data[6];
$num5=$data[1];
/*
asi tomaras los datos  del arreglo o array poniendo $dato[numero] espero aver explicado bien*/ 
  #6 (permalink)  
Antiguo 21/05/2012, 06:32
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: fraccionar una variable en PHP

despues de split, en $array, encontrarás:
$array[0]=2;
$array[1]=8;
$array[2]=3;
Pero si quieres variables, tal y como propones, aquí te dejo el código: te devolverá:
$num1=2
$num2=8
$num3=3

Código PHP:
$sql="SELECT COUNT(dtalle_lic),licencias.dtalle_lic,tbl_licenci as.cod_licencia,tbl_licencias.cod_fun,fun.cod_fun, fun.cod_lic,licencias.cod_lic,licencias.dtalle_lic ,
tbl_licencias.cod_exp,expensas.cod_exp,expensas.to tal,SUM(expensas.total) as suma    

FROM tbl_licencias,fun,licencias,expensas

WHERE tbl_licencias.cod_fun=fun.cod_fun AND fun.cod_lic=licencias.cod_lic AND tbl_licencias.cod_exp=expensas.cod_exp 
GROUP BY dtalle_lic 
"
;
$result=mysql_query($sql,$link); 
while(
$row=mysql_fetch_array($result)){
$array=str_split($row[0]);    
foreach(
$array as $i=>$value){
    eval(
"\$num".($i+1)."=\$value;");
}


Espero te sea de ayuda. Saludos
  #7 (permalink)  
Antiguo 21/05/2012, 09:28
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: fraccionar una variable en PHP

oscartt67 jajaja no save manejarse con un array y le sujieres un eval????

mejor ve esto http://es.wikipedia.org/wiki/Eval#Seguridad
  #8 (permalink)  
Antiguo 21/05/2012, 10:34
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: fraccionar una variable en PHP

Creo que se trata de aportar conocimiento, y si nelson tiene dudas con EVAL, preguntará y le responderé. Deja que cada uno ponga límites a su capacidad.

Cita:
quede en una variable distinta
Además, es la única manera de solucionar textulamente su pregunta:

Tu solución es aceptable para una variable de 5 dígitos, pero si varia, no sirve.
Código PHP:
$num1=$data[2];
$num2=$data[8];
$num3=$data[3];
$num4=$data[6];
$num5=$data[1]; 
  #9 (permalink)  
Antiguo 21/05/2012, 10:48
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: fraccionar una variable en PHP

enlinea:
Leí tu link respecto a seguridad, y es este caso, me gustaria que comentaras donde ves el riesgo, tratándose de una variable de longitud 1.

nelson:
en caso de ser letras en lugar de números, tienes que hacer

Código PHP:
 eval("\$num".($i+1)."=\"\$value\";"); 
saludos
  #10 (permalink)  
Antiguo 21/05/2012, 12:34
 
Fecha de Ingreso: enero-2010
Ubicación: Colombia
Mensajes: 238
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: fraccionar una variable en PHP

oscartt67 ya hice lo que te me sugeriste con el eval pero mi pregunta es ¿cual variable o de que modo tengo que imprimir para que me cree variables con diferentes nombres?

Mira lo que le modifique alcodigo:

Cita:
$sql="SELECT COUNT(dtalle_lic),licencias.dtalle_lic,tbl_licenci as.cod_licencia,tbl_licencias.cod_fun,fun.cod_fun, fun.cod_lic,licencias.cod_lic,licencias.dtalle_lic ,
tbl_licencias.cod_exp,expensas.cod_exp,expensas.to tal,SUM(expensas.total) as suma

FROM tbl_licencias,fun,licencias,expensas

WHERE tbl_licencias.cod_fun=fun.cod_fun AND fun.cod_lic=licencias.cod_lic AND tbl_licencias.cod_exp=expensas.cod_exp
GROUP BY dtalle_lic
";
$result=mysql_query($sql,$link);
while($row=mysql_fetch_array($result)){
$array=str_split($row[0]);
foreach($array as $i=>$value){
eval("\$num".($i+1)."=\$value;");
}
echo "$row[0]";
}
El resultado al hacer impreso la variable $row[0] fue:
2
8
3
6
1
pero como le asigno un nombre de variable a cada uno. Yo diria que la funcion eval que me sugeriste, osea '
Cita:
eval("\$num".($i+1)."=\$value;");
' hace lo que deseo hacer lo que pasa es que no se manejarla. Necesito de tu ayuda oscartt67, gracias

y ps la verdad el eval para mi es nuevo

Última edición por nelson12345; 21/05/2012 a las 12:45
  #11 (permalink)  
Antiguo 21/05/2012, 13:49
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: fraccionar una variable en PHP

una vez acabado el foreach, tendrás disponibles las variables $num1=2,$num2=8,$num3=3...tantas como caracteres tenga la variable $row[0].

echo $num1;

Eval lo que hace es ejecutar el código que le pasas. Por ejemplo,
Código PHP:
$a="echo 'hola!';";
eval(
$a);

//seria lo mismo que 
echo 'hola'
Mira en internet, encontrarás mucha información si te interesa profundizar.
Saludos
  #12 (permalink)  
Antiguo 21/05/2012, 16:45
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: fraccionar una variable en PHP

$sql="SELECT COUNT(dtalle_lic),licencias.dtalle_lic,tbl_licenci as.cod_licencia,tbl_licencias.cod_fun,fun.cod_fun, fun.cod_lic,licencias.cod_lic,licencias.dtalle_lic ,
tbl_licencias.cod_exp,expensas.cod_exp,expensas.to tal,SUM(expensas.total) as suma

FROM tbl_licencias,fun,licencias,expensas

WHERE tbl_licencias.cod_fun=fun.cod_fun AND fun.cod_lic=licencias.cod_lic AND tbl_licencias.cod_exp=expensas.cod_exp
GROUP BY dtalle_lic
";
$result=mysql_query($sql,$link);
while($row=mysql_fetch_array($result)){
$array=str_split($row[0]);
foreach($array as $i=>$value){
eval("\$num".($i+1)."=\$value;");
}
echo "$row[0]";
}

el tema de seguridad es por que sensillamente al ver el tipo de manejo del eval puedo pensar facilmente en un exploid para hakear el sitio que esta hacinedo.

podrias buscar en google "php exploid eval", personalmente pienso que un eval se usa solo cuando es estrictamente necesario.

esta bien es un campo de 1 pero si no sabe los problemas quiza lo use para solucionar oteas cosas y lamenntablemente caiga en un error.

mira el texto extaido del manual oficial de PHP

Precaución

aclaro no es que este mal pero tambien hay que poner los contras.

referencia: http://www.php.net/manual/es/function.eval.php

Etiquetas: sql, variables
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:37.