Foros del Web » Programando para Internet » Javascript »

mostrar ocultar resultado consulta

Estas en el tema de mostrar ocultar resultado consulta en el foro de Javascript en Foros del Web. Hola, escribo aqui pq creo q aqui puedo encontar ayuda para mi problema. A ver comento, para empezar estoy haciendo una consulta PHP a una ...
  #1 (permalink)  
Antiguo 17/08/2012, 03:00
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 13 años, 6 meses
Puntos: 0
mostrar ocultar resultado consulta

Hola,
escribo aqui pq creo q aqui puedo encontar ayuda para mi problema. A ver comento, para empezar estoy haciendo una consulta PHP a una base de datos y obtengo un resultado q quiero escribir. Me genero una tabla en la que empiezo a escribir los resultados de la consulta, cuando rellena una fila pasa a la siguiente. Estoy cogiendo unos datos y los estoy mostrando en otra tabla. Esto seria como por ejemplo, si cogiera los datos de un determinado articulo, mostrara sus caracteristicas y en otro lado mostrara los datos del fabricante, datos que pudiera ver pulsando un botoncillo o un enlace. Mediante javascript muestro/oculto los resultados en un div, pero claro estoy mostrando/ocultando toda la tabla y queria mostrar/ocultar el resultado de un fila en concreto ¡¡no se si me explico!!.
Lo que hago es esto: primero script para ocultar/mostrar div con info
Código HTML:
<script>
function muestra(id){
if (document.getElementById){ //se obtiene el id
var el = document.getElementById(id); //se define la variable "el" igual a nuestro div
el.style.display = (el.style.display == 'none') ? 'block' : 'none'; //damos un atributo display:none que oculta el div
}
}
window.onload = function(){/*hace que se cargue la función lo que predetermina que div estará oculto hasta llamar a la función nuevamente*/
muestra('dato');/* "contenido_a_mostrar" es el nombre de la etiqueta DIV que deseamos mostrar */
}
</script> 
Obtengo los datos despues de haber hecho la consulta a la base de datos
Código PHP:
$offers get_offers($dbconn$max_num_days_offer);
// Si devuelve algún resultado
            
if (count($offers) > && isset($offers) && $offers != false) { 
Y empiezo a escribir la tabla con los resultados, pongo las cabeceras con los nombres de campo y despues empiezo a escribir en la primera tabla hasta unos datos concretos para pasar a escribir despues en otro div otra tabla con el resto de los datos.
Código HTML:
<table id="tabla_ofertas" summary="Ofertas">
<thead>
	<tr>
		<th scope="col">campo1</th>
		<th scope="col">campo2</th>
		<th scope="col">campo3</th>
		<th scope="col">campo4</th>
		<th scope="col">campo5</th>
		<th scope="col">campo6</th>
		<th scope="col">campo7</th>
	</tr>
</thead>
<tbody>
<?php foreach($offers as $offer) { ?>
	<tr>
		<td><?php echo $offer['result_campo1'] ?></td>
		<td><?php echo $offer['result_campo2'] ?></td>
		<td><?php echo $offer['result_campo3'] ?></td>
		<td><?php echo $offer['result_campo4'] ?></td>
		<td><?php echo $offer['result_campo5'] ?></td>
		<td><?php echo $offer['result_campo6'] ?></td>
		<td><?php echo $offer['result_campo7'] ?></td>
	</tr>
<?php } ?>
</tbody>
<div id ="dato"><!--aqui no quiero mostar todo, solo la fila que seleccione en la tabla anterior de articulos para ver a un proveedor concreto-->
<table id="tabla_ofertas" summary="Ofertas">
<thead>
	<tr>
		<th scope="col">nif</th>
		<th scope="col">nombre</th>
		<th scope="col">telefono</th>
		<th scope="col">fax</th>
		<th scope="col">e-mail</th>
		<th scope="col">direccion</th>
	</tr>
</thead>
<tbody>
<?php foreach($offers as $offer) { ?>
	<tr>
		<td><?php echo $offer['nif'] ?></td>
		<td><?php echo $offer['name'] ?></td>
		<td><?php echo $offer['telephone'] ?></td>
		<td><?php echo $offer['fax'] ?></td>
		<td><?php echo $offer['email'] ?></td>
		<td><?php echo $offer['address'] ?></td>
	</tr>
<?php } ?>
</tbody>
</table> 
no se si es un poco lioso, si se podra hacer. gracias, un saludo.
  #2 (permalink)  
Antiguo 17/08/2012, 03:49
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Respuesta: mostrar ocultar resultado consulta

Hola:

Si no tienes intención de enlazar, creo que mejor no usar enlaces (cuestión de semántica), luego para seleccionar una fila, deberías al tag "tr" asociarle el evento click y en principio, que detecte algo que lo asocie a lo que quieres mostrar, o sea si hay un identificador tipo id, crear las filas que quieres mostrar (que en principio deberían estar ocultas "display: none")...

Por ejemplo puedes con php crear las filas poniéndole un id...

id="fila_$id"...

Y luego donde debas pinchar:

onclick="mostrar('$id')"

Para mostrar, acuerdate de que el estilo es "table-row".

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 21/08/2012, 06:57
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: mostrar ocultar resultado consulta

gracias Caricatos, por contestar.
reformulo la cuestion pq creo q no me he aclarado. Segun me comenta Caricatos deberia asignarle con php un id a la fila, pero segun esto seria para mostrar una fila, la cuestion no deberia asignarle un ID al TR y al TD? yo estoy mostrando, por ejemplo, del TR 1 los seis primeros TD y quiero ocultar del 7 al 10 para mediante un botoncillo o un enlace pinchar en el y q me muestre esa info, por problemas de espacio en otra tabla en un div debajo del div donde muestro la tabla con los resultado.
Bien, entonces asigno un id al TR (no se si lo hago bien) del modo:

Código:
<tbody>
<?php 
	$j = 0;
         foreach($offers as $offer) {
?>
<tr id="<?php echo $j; $j++ ?>">
<td><?php echo $offer['vatin'] ?></td>
<td><?php echo $offer['vatan'] ?></td>
<td><?php echo $offer['vaten'] ?></td>
...
</tr>
<?php } ?>
</tbody>
...

Última edición por emeotero; 27/08/2012 a las 01:50

Etiquetas: php, resultados
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 12:41.