Foros del Web » Programando para Internet » PHP »

hacer una consulta!!!

Estas en el tema de hacer una consulta!!! en el foro de PHP en Foros del Web. hola!!!!alguien podria echar me una mano!! tengo estos datos en una base de datos...es decir..los datos son estos!! se ve asi en la base de ...
  #1 (permalink)  
Antiguo 07/05/2005, 09:28
 
Fecha de Ingreso: diciembre-2004
Mensajes: 156
Antigüedad: 13 años
Puntos: 0
hacer una consulta!!!

hola!!!!alguien podria echar me una mano!! tengo estos datos en una base de datos...es decir..los datos son estos!! se ve asi en la base de datos

101=120.000#104=30.000#106=10.000#108=20.000

pero cuando hago un query para traerlos...en una consulta en php me gustaria que se viera asi en la consulta:

101=120.000
104=30.000
106=10.000
108=20.000

el problema es que cada numero tiene una definicion me explico....101 significa sueldo....104 gastos de HCM y asi sucesivamente estos conceptos o descripciones de cada uno de estos numeros lo tengo en otra tabla que se llama conceptos....alguien tendra un codigo semejante que me ayude???

gracias
  #2 (permalink)  
Antiguo 07/05/2005, 09:52
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
OK a ver si entendi:
Si el campo datos te devuelve como valor esto:
101=120.000#104=30.000#106=10.000#108=20.000
quiere decir que se imprimes $result["datos"] entonces te imprimira:
101=120.000#104=30.000#106=10.000#108=20.000

Pero quieres poder ponerlos cada uno en una linea??

Si es asi usa la funcion explode que te divide un string por un caracter separador que tu eligas, en tu caso usare el signo #

Asi quedaria:
$valores = explode("#",$result["datos"]);
for($i=0;$i<=count($valores);$i++){
echo $valores[$i]."<br>";
}

Esto dara como resultado:
101=120.000
104=30.000
106=10.000
108=20.000

Espero sea esta tu duda.
  #3 (permalink)  
Antiguo 07/05/2005, 10:23
 
Fecha de Ingreso: diciembre-2004
Mensajes: 156
Antigüedad: 13 años
Puntos: 0
disculpa y como haria para compararla con una tabla los numeros 101,104 qeu tiene cada campo!!!

gracias
  #4 (permalink)  
Antiguo 07/05/2005, 10:30
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
Exactamente que quieres comparar??

Si lo que quieres es que en vez de mostrar:
101=120.000

Te diga
sueldo=120.000

Y se reemplaze el numero por su significado entonces veo que toda esa estructura de base de datos no es la correcta te dare otra solucion para evitar que cambies toda la estructura.

Deberas cargar de la tabla que dice que 101 es sueldo esos valores a un array, aqui me refiero a todos esos valores ya sea 101 = sueldo, 104 = gastos.

Bueno te hize este script:
Código PHP:
<?php
# coneccion a mi base de datos para obtener de la tabla codigos los codigos
# esta coneccion es porque tuve que similar que tengo una base de datos
# como la tuya
$link mysql_connect("localhost","root","");
mysql_select_db("Help",$link);

#aqui obtenemos los codigos y sus titulos de la base de datos
#estos son los que tu tienes definidos ya en una tabla
#cambia el nombre de la tabla codigos por el tuyo.
$sql "select * from codigos";
$rs mysql_query($sql,$link);
while(
$result=mysql_fetch_array($rs)){
    
#aqui el string queda asi 101=saldo#104=gasto...
    
$string $string.$result["codigo"]."=".$result["titulo"]."#";
}
#pasamos esos resultados a aun array
#que estara estructurado mas o menos asi:
#Array
#(
#    [0] => 101=saldo
#    [1] => 104=gasto
#    [2] => 106=total
#    [3] => 108=desconocido
#    [4] => 
#)
$array explode("#",$string);

# aqui puse la lista manual que te devuelven de la base de datos
# claro que deberas asignar el valor correcto tu $list = $result["datos"];
$lista "101=120.000#104=30.000#106=10.000#108=20.000";
#lo paso a array
$valores explode("#",$lista);

#aqui recorro el array de los valores que obtuviste y quieres que sean
#mostrados en vez del codigo su nombre
for($i=0;$i<=count($valores)-1;$i++){
 
#aqui obtengo el numero de codigo 101
 
$codigoLista substr($valores[$i],0,3);
 
$lenLista strlen($codigoLista)+1;
 
#aqui obtengo el valor de ese codigo
 
$valorLista substr($valores[$i],$lenLista);
 
#aqui obtengo el nombre de ese codigo pasado por una funcion
 #que hize para dividir el codigo
 
$nombre nombre($codigoLista,$array);
 
 echo 
$nombre."=".$valorLista."\n";
 
}

# esta es la funcion que transforma el codigo a nombre
function nombre($codigoLista,$array){
    
    for(
$e=0;$e<count($array)-1;$e++){
     
$len strlen($codigoLista)+1;
     
$codigos substr($array[$e],0,3);
     
$texto substr($array[$e],$len);
     if(
$codigos==$codigoLista){
     return 
$texto;
     break;
     }
    }
    
}


?>

Última edición por dwaks; 07/05/2005 a las 11:21
  #5 (permalink)  
Antiguo 07/05/2005, 10:38
 
Fecha de Ingreso: diciembre-2004
Mensajes: 156
Antigüedad: 13 años
Puntos: 0
ES DECIR EN ese campo datos....estan como te dije arriba pero como veras antes de cada valor hay un numero es decir 101=120.000 lo ves??? bueno!!! yo tengo una tabla que se llama conceptos...en esa tabla ese 101 tiene un valor en este caso es 101 significa quincena!!! entocnes la idea es que en ve que salga 101 haga la consulta en la tabla conceptos y sepa que 101 significa conceptos...esta como peluo.... no se si me entendiste!!!! pero la idea es que aparezca asi

quincena = 120.000 en vez de 101=120.000

gracias de antemano!!!!!!
  #6 (permalink)  
Antiguo 07/05/2005, 11:24
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
Bueno el script que te hize hace exactamente eso que quieres.

Si no entiendes ciertas cosas entonces me preguntas y te explico como usarlo.
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 09:33.