Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problemas con obtencion de registros desde BD

Estas en el tema de Problemas con obtencion de registros desde BD en el foro de Frameworks JS en Foros del Web. Hola, espero que me pueda dejar entender, mi problema es el sgte: en una pagina tengo una tabla html y un list,dentro de este list ...
  #1 (permalink)  
Antiguo 05/07/2009, 14:31
 
Fecha de Ingreso: abril-2009
Ubicación: Lima
Mensajes: 108
Antigüedad: 15 años, 7 meses
Puntos: 0
Problemas con obtencion de registros desde BD

Hola, espero que me pueda dejar entender, mi problema es el sgte:
en una pagina tengo una tabla html y un list,dentro de este list tengo numeros id, lo q busco es q cada vez q haga click en uno de estos numeros los datos que estan estan en mi BD relacionados cn estos numeros aparescan en campos de mi table html, es decir un simple SELECT, cuando mi SELECT recupera una sola fila,me funciona bien, mi problema viene cuando lo que mi SELECT recupera son mas de 1 fila, ya que solo me lee el primer registro no el segundo, por ejemplo mis datos recuperados de la BD son A y B, cuando en mi programa hago click en uno de los datos del list(que recupera estos datos) aparece A y A.

Acá les pongo parte de mi código:
Esto esta en mi archivo principal: resultado.php
Código PHP:
 <td width="98" valign="top">
    <select name="num_orden" size="8" style="width:100%" onchange="ver_orden()">
    <?php 
            
foreach($a as $d){?>
        <option value="<?php echo $d->numpeticion;?>"><?php echo $d->numpeticion;?></option>
    <?php }?>
    </select>    </td>
Como ven al hacer click en uno de los datos del list, llama a al función ver_orden,que esta en mi archivo AJAX:
Código:
function ver_orden(){
	orden=document.resultado.num_orden.value;
	ajax=objetoAjax();
	ajax.open("GET", "busc_ord_res.php?orden="+orden);		
	ajax.onreadystatechange=function() {
		if (ajax.readyState==4) {
			var valores = ajax.responseText;
			var filas=valores.split(",")['0'];
			var tr, td, i;		
			for(i=1;i<=filas;i++){
				tr = document.all.tab_res.insertRow();
				td = tr.insertCell();
											
				td.innerHTML = "<input name='codigo["+i+"]' type='text' id='codigo' value='"+valores.split(",")['1']+"' style='width:95%' size='5' />";
				td = tr.insertCell();
				
				td.innerHTML = "<input name='abrev["+i+"]' type='text' id='abrev' value='"+valores.split(",")['2']+"' style='width:95%' size='5' />";
		.......
		contLin++;
			}
	
		}
} 
ajax.send(null);
}
Este es parte del archivo donde recupero los datos de mi BD:
Código PHP:
$orden=$_GET["orden"];
$n=$r->datos_por_orden($orden);
echo 
count($n).",";
foreach(
$n as $k){
    echo 
$k->idanalisis.",";
    echo 
$k->analisis.",";

COMO LES DIGO CUANDO ES UN SOLO REGISTRO EL QUE SE RECUPERA, TODO ESTA BIEN PERO CUANDO SON MAS REGISTROS ES DONDE TENGO PROBLEMAS,PORFA AYUDENME.......
  #2 (permalink)  
Antiguo 06/07/2009, 07:51
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Problemas con obtencion de registros desde BD

Hola

Mirando por encima parace que está recepcionando 3 parámetros (2,A,B)
Si es así podrías hacer que solo recibiera (A,B), de tal forma que quedaría

Código javascript:
Ver original
  1. var valores = ajax.responseText;
  2. var filas=valores.split(",");
  3.             var tr, td, i;     
  4.             for(i=0;i< filas.length;i++){

No sé, es solo una idea

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 06/07/2009, 08:53
 
Fecha de Ingreso: abril-2009
Ubicación: Lima
Mensajes: 108
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problemas con obtencion de registros desde BD

Hola gracias por responder, lo que necesitaria es algo asi como un FOREACH en php,si te das cuenta yo genero filas dinamicamente y en esas filas necesito ingresar datos de mi BD, cuand es un solo registro el q esta en mi BD, lo hace bien,pero cuando son dos o mas registros es cuando me falla, solo jala los datos del primer registro, si en mi BD tengo A y B, en mi sistema aparece A en la primera fila y A en la segunda, cuando en la primera deberia aparecer A y en la segunda fila B.

Eh estado buscando en internet y encontre q hay una variante de for, for(var j in array), pero lo probe y ya no me genera las filas, mira lo hize así:
Cita:
alert(valores); //EN ESE ALERT APARECEN LOS DATOS Q BUSCO, ES DECIR LOS 2 O MAS REGISTROS QUE BUSCO INSERTAR EN MIS FILAS, LO MALO ES QUE NO SE COMO

for(var j in valores){ // PROBE CON VALORES.LENGTH PEROTAMPOCO SALE

tr = document.all.tab_res.insertRow();
td = tr.insertCell();
num=valores.split(",")['1'];
td.innerHTML = "<input name='codigo["+i+"]' type='text' id='codigo' value='"+valores.split(",")['2']+"' style='width:95%' size='5' />";
td = tr.insertCell();
.........
Ojala puedas ayudarme

Última edición por xtian87; 06/07/2009 a las 08:59
  #4 (permalink)  
Antiguo 06/07/2009, 12:08
 
Fecha de Ingreso: abril-2009
Ubicación: Lima
Mensajes: 108
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problemas con obtencion de registros desde BD

Como dicen que una imagen vale más que mil palabras, aquí les pongo esta imagen

En ella uds. pueden ver todos los datos que son jalados de mi BD.
LINEA ROJA:1er registro
LINEA AZUL:2do Registro
LINEA NEGRA:3er Registro

Eso es lo q deberia aparecer en cada fila de mi tabla html,pero en mi sistema aparecen así:


Como ven el 1er registro (CREATININA) se repite en las 3 filas.

AYUDENME PORFA
  #5 (permalink)  
Antiguo 06/07/2009, 12:54
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Problemas con obtencion de registros desde BD

Hola

Veamos que tal algo como esto. Recoges los datos tal que así, separando cada registro 2,33333,A|2,44444,B


Código javascript:
Ver original
  1. datosgenerales = 2,33333,A|2,44444,B
  2. var filas=datosgenerales.split("|");
  3. var valores = new Array();
  4.  
  5. var tr, td, i;     
  6. for(i=0;i<filas.length;i++){
  7. valores[i] = filas[i].split(",");
  8.  
  9. for (j=1; j<=valores[i].length; j++)

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #6 (permalink)  
Antiguo 06/07/2009, 23:33
 
Fecha de Ingreso: abril-2009
Ubicación: Lima
Mensajes: 108
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problemas con obtencion de registros desde BD

Hola disculpa por responder tarde, solo q recien ahorita pude probar lo q me enviastes, mira lo probe pero nada:

Cita:
for(var i=0; i<filas.length;i++){
valores[i] = filas[i].split(",");
for (var j=1; j<=valores.length; j++){
codigo=valores[j];
tr = document.all.tab_res.insertRow();
td = tr.insertCell();
td.innerHTML = "<input name='codigo["+j+"]' type='text' id='codigo' value='"+valores[j].split(",")+"' style='width:95%' size='5' />";
td = tr.insertCell()
td.innerHTML = "<input name='abrev["+j+"]' type='text' id='abrev' value='"+valores[j].split(",")+"' style='width:95%' size='5' />";
...............
Puse valores.length y no valores[i].length porque al poner como me decias me salia error en el length,asi que tuve q ponerle eso. Ahora como te digo mi problema sigue sucediendo, ahora no me sale ninguna fila y me sale un error de "Undefined" ... ;-(
  #7 (permalink)  
Antiguo 07/07/2009, 05:54
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años
Puntos: 126
Respuesta: Problemas con obtencion de registros desde BD

Hola

Sí, tienes razón. No lo había probado

Ahora mirandolo mas detenidamente me he dado cuenta que estas usando document.all...., así solo funcionará en IE. Usa document.getElementById

Veamos que tal con esta prueba de escritorio

Código javascript:
Ver original
  1. <html>
  2. <body onload="adicionarFila();">
  3. <script type="text/javascript">
  4. function adicionarFila(){
  5. datosgenerales = "2,33333,A|2,44444,B"
  6. var filas=datosgenerales.split("|");
  7. var valores = new Array();
  8.  
  9. for(i=0;i<filas.length;i++){
  10. valores = filas[i].split(",");
  11.  
  12. var Row = document.getElementById("tab_res").insertRow(-1);
  13.     var Cell = Row.insertCell(0);
  14.         Cell.innerHTML = "<input name='codigo["+i+"]' type='text' id='codigo' value='"+valores[2]+"' style='width:95%' size='5' />";
  15.     var Cell = Row.insertCell(0);
  16.         Cell.innerHTML = "<input name='abrev["+i+"]' type='text' id='abrev' value='"+valores[1]+"' style='width:95%' size='5' />";
  17.     var Cell = Row.insertCell(0);
  18.         Cell.innerHTML = "<input name='ide["+i+"]' type='text' id='ide' value='"+valores[0]+"' style='width:95%' size='5' />";
  19.     }
  20. }
  21. </script>
  22. <table id="tab_res" border="1" cellspacing="5" cellpadding="5">
  23. <tr>
  24. <td>Valor</td>
  25. <td>Número</td>
  26. <td>Grupo</td>
  27. </tr>
  28. </table>
  29. </body>
  30. </html>

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #8 (permalink)  
Antiguo 07/07/2009, 15:03
 
Fecha de Ingreso: abril-2009
Ubicación: Lima
Mensajes: 108
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problemas con obtencion de registros desde BD

Adler muchísimas gracias por tu tiempo, con esto último que me enviastes sí sale como necesitaba, nuevamente muchas pero muchas gracias
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 14:27.