Foros del Web » Programando para Internet » PHP »

Resultados de busqueda en base de datos

Estas en el tema de Resultados de busqueda en base de datos en el foro de PHP en Foros del Web. Gracias de antemano a quien pueda ayudarte porque esto me tiene parado desde hace dos dias. Tengo una página que sirve para buscar en una ...
  #1 (permalink)  
Antiguo 22/03/2007, 13:00
 
Fecha de Ingreso: enero-2006
Mensajes: 29
Antigüedad: 18 años, 3 meses
Puntos: 0
Resultados de busqueda en base de datos

Gracias de antemano a quien pueda ayudarte porque esto me tiene parado desde hace dos dias.

Tengo una página que sirve para buscar en una base de datos, contiene un formulario para configurar los criterios. Este formulario usa metodo POST. Al pulsar en Buscar expando una parte de la página donde se visualizan los resultados y me sigue manteniendo los campos de los criterios sin problemas, está todo bien configurado. Si pulso en Limpiar Criterios me limpia los campos y me contrae la seccion de los resultados.

Ahora bien, quiero que en esa seccion donde visualizo resultados, al pulsar en las cabeceras de las columnas me haca una reordenacion de los datos que visualizo, recargando la página. Pues eso, tengo un cacao de mil demonios, no tengo ni idea de como hacerlo, lo he intentado con el metodo Get para el formulario pero no va.

¿Alguien podria revisar mi código o decirme cual es la mejor metodologia para hacer algo asi?

Decidme y os pego el código. Muchisimas gracias de antemano chicos, os lo agradezco desde ya.
  #2 (permalink)  
Antiguo 22/03/2007, 13:12
 
Fecha de Ingreso: abril-2006
Mensajes: 43
Antigüedad: 18 años
Puntos: 1
Re: Resultados de busqueda en base de datos

Bueh

Creo que lo que tenes que hacer algo asi... por lo menos te dará una idea


estos podrian ser los linck

<a href="ordena=ORDER BY nombre ASC">por nombre</a>
<a href="ordena=ORDER BY ID">por id</a>


este el que despliega la consulta, el $_GET capturará lo que viene por URL

$busca = mysql_query("SELECT * FROM tuTabla $_GET[ordena]");

while($ovresult = mysql_fetch_array($busca) ){
IMPRIME CONSULTA
}


Probalo, espero que me entiendas y que te sirva...

ThE_JosZ!
  #3 (permalink)  
Antiguo 22/03/2007, 13:17
 
Fecha de Ingreso: enero-2006
Mensajes: 29
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: Resultados de busqueda en base de datos

Hmmm... pues no se si no imagino la idea que tienes, pero eso no me lo soluciona, si meto eso en el ref me carga una página que no existe. El código es bastante mas complicado de lo que crees.

Pero gracias tio.
  #4 (permalink)  
Antiguo 22/03/2007, 13:22
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 18 años, 10 meses
Puntos: 7
Re: Resultados de busqueda en base de datos

¿y si pones el codigo?
digo yo, es que asi es complicado, lo que the_josz propone es que en con el link recargues la pagina, pasando como parametro el campo por el que quieres ordenar la consulta.

Saludos.
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
  #5 (permalink)  
Antiguo 22/03/2007, 13:31
 
Fecha de Ingreso: enero-2006
Mensajes: 29
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: Resultados de busqueda en base de datos

Vale, la historia es que al recargar la página con el href pierdo los valores de los campos de los criterios. Os pego el código, espero que sea legible. Acepto cogotazos también eh.

Código:
<div class="imagen_titular"><img src="../media/t_buscar_fincas.gif" alt="" width="276" height="27"/>
</div>

<?php 
	//Incluyo las rutinas de configuración de Criterios y Busqueda.
	include('rutinas/gestion_form_busqueda.php');

	echo $_GET['columna'];

	//Si he pulsado en NUEVA BUSQUEDA vacio todas las variables.
    if (isset($_POST['limpiar'])){
		$buscado = 'no';
		unset($_POST);
	}

	//Si he pulsado en BUSCAR configuro los criterios de busqueda y actuo como BUSCADO.
    if (isset($_POST['buscar'])){
		$buscado = 'si';
	}

	?>
	<p> Encuentre ofertas en nuestra base de datos mediante nuestro buscador de fincas siguiendo 5 sencillos pasos que le permitir&aacute;n ordenarlas por diferentes criterios.</p>
	<p>Puede realizar una consulta completa dejando los criterios sin alterar, o bien, puede elegir entre diferentes cantidades de olivos, intervalos de precio,  provincias, incluso ordenarlas por comarcas para la provincia de Ja&eacute;n. </p>
	<p>Una vez elegidas las opciones que mejor se adapten al tipo de fincas que desea encontrar pulse en <strong>Realizar b&uacute;squeda</strong> para ver sus resultados. </p>
	<br />
		
	<?php 
		// Si vengo de Limpiar el Formulario establezco el enfoque al principio del mismo
		if ($buscado=='no'){ echo '<a name="enfoque"></a>'; } 
	?>
	<a name="form"></a> <!-- Etiqueta para localizar aqui el enfoque cuando pulso sobre las comarcas del mapa. -->
	<h2>Seleccione los criterios que desea aplicar a la b&uacute;squeda:</h2>
	<div class="sangrado_2">
		<form action="<?php echo $_SERVER['PHP_SELF'.$path_modulo];?>#enfoque" method="post" name="form_busqueda" id="form_busqueda">
			
		<table class="formulario_busqueda">
			<tr>
				<td class="formulario_busqueda_numero">
					<img src="/media/orden_1.gif" alt="" width="18" height="18" />
				</td>
				<td class="formulario_busqueda_opcion">
					<label for="olivos">N&ordm; de Olivos:</label>
					<br />
					<select name="olivos" id="olivos">
						<?php form_busqueda_llena_olivos();?>
					</select>
				</td>
				<td class="formulario_busqueda_numero">
					<img src="/media/orden_3.gif" alt="" width="18" height="18" />
				</td>
				<td class="formulario_busqueda_opcion">
					<label for="provincia">Provincia:</label>
					<br />
					<select name="provincia" id="provincia" onclick="mira_provincia()"> 
						<?php form_busqueda_llena_provincias();?>
					</select>
				</td>
			</tr>
	
			<tr>
				<td class="formulario_busqueda_numero">
					<img src="/media/orden_2.gif" alt="" width="18" height="18" />
				</td>
				<td class="formulario_busqueda_opcion">
					<label for="precio">Precio:</label>
					<br />
					<select name="precio" id="precio">
						<?php form_busqueda_llena_precios();?>
					</select>
				</td>
				<td class="formulario_busqueda_numero">
					<img src="/media/orden_4.gif" alt="" width="18" height="18" />
				</td>
				<td class="formulario_busqueda_opcion">
					<label for="comarca">Comarca:</label>
					<br />
					<select name="comarca" id="comarca" onclick="mira_comarca()">
						<?php form_busqueda_llena_comarcas();?>
					</select>
				</td>
			</tr>
			<tr>
				<td class="formulario_busqueda_mapa" colspan="4">
					<img src="/media/mapa_comarcas_defecto.gif" alt="" name="mapa" width="445" height="308" border="0" usemap="#mapaComarcas" id="mapacomarcas" />
				</td>
			</tr>
			<tr>
				<td class="formulario_busqueda_numero">
					<img src="/media/orden_5.gif" alt="" width="18" height="18" />					
				</td>
				<td colspan="3">
					<input name="buscar" type="submit" id="buscar" value="Realizar búsqueda" />
					<input name="limpiar" type="submit" id="limpiar" value="Limpiar Criterios" />
				</td>
			</tr>
		</table>
		</form>
	</div>
	
	<?php
		if ($buscado=='si'){
			// Como ahora vengo de hacer una BUSQUEDA establezco el enfoque al principio del cuerpo de los resultados
			?>
				<a name="enfoque"></a>
				<h2>Resultados de la búsqueda:</h2>
			<?php
	
			// Conexion con la base de datos.
			$conn = mysql_connect($GLOBALS['sql_host'], $GLOBALS['sql_usuario'], $GLOBALS['sql_pass']);
			mysql_select_db($GLOBALS['sql_db,$conn']);
		
			// Inicializo el criterio de ordenación.	
			
			if(!$columna) {
				$orden = ' order by finca_ID';
			} else {
				$orden = ' order by finca_ID DESC';
			}
			
			//Construyo la sentencia SQL
			$ssql = form_busqueda_configura_criterios();
			
			$ssql = $ssql.$orden;
		
			//$ssql = "select * from ".$GLOBALS['sql_tbl_fincas'];
			$rs = mysql_query($ssql);
			$num_total_registros = mysql_num_rows($rs);
		
				
			if ($num_total_registros == 0) {
				echo 'No se encontraron resultados para los criterios seleccionados.';
			} else {
				?>
					<p>Se encontraron <strong><?php echo $num_total_registros ?> finca(s)</strong> coincidentes con los criterios seleccionados.</p>
					<p>Pulse sobre el encabezado de cada columna para ordenar los resultados en función a ese campo.<br />
					Pulse sobre una fila concreta para ver los detalles de la finca.</p>
				
					<table class="formulario_resultados">
						<tr class="leyenda">
							<td class="referencia"><a href="?mod=busc#enfoque&columna=ref">Ref.</a></td>
							<td class="descripcion"><a href="?mod=busc#enfoque&columna=ref">Descripci&oacute;n</a></td>
							<td class="provincia"><a href="provincia">Provincia</a></td>
							<td class="comarca"><a href="comarca">Comarca</a></td>
							<td class="superficie"><a href="superficie">Superficie</a></td>
							<td class="olivos"><a href="olivos">N&ordm; Olivos</a></td>
							<td class="precio"><a href="precio">Precio</a></td>
						</tr>
				<?php
				$parimpar = 1; // Cambio de color para las filas.
		
				while ($fila = mysql_fetch_object($rs)){
					// Para el cambio de color de los registros encontrados.
					if ($parimpar == 0) { $reg_color = 'registro_1'; $parimpar = 1; } 
					else { $reg_color = 'registro_2'; $parimpar = 0; }
					
					// Formateo las cadenas y leo datos de otras tablas.
					$reg_ref = $fila->finca_ID;
					$reg_descrip = acorta_cadena($fila->descripcion,25);
					
					// Localizo la Provincia asociada
					$ssql_eventual = 'select * from '.$GLOBALS['sql_tbl_provincias'].' where provincia_ID='.$fila->provincia_ID;
					$rs_eventual = mysql_query($ssql_eventual);
					$fila_eventual = mysql_fetch_object($rs_eventual);
					$reg_prov = $fila_eventual->provincia;
			
					// Localizo la Comarca asociada
					$ssql_eventual = 'select * from '.$GLOBALS['sql_tbl_comarcas'].' where comarca_ID='.$fila->comarca_ID;
					$rs_eventual = mysql_query($ssql_eventual);
					$fila_eventual = mysql_fetch_object($rs_eventual);
					$reg_comar = $fila_eventual->comarca;
				
					$reg_superf = number_format($fila->superficie).' ha.';
					$reg_olivos = number_format($fila->olivos);
					$reg_precio = number_format($fila->precio).' &euro;';
				?>		
					<tr class="<?php echo $reg_color?>">
						<td class="referencia"><?php echo $reg_ref?></td>
						<td class="descripcion"><?php echo $reg_descrip?></td>
						<td class="provincia"><?php echo $reg_prov?></td>
						<td class="comarca"><?php echo $reg_comar?></td>
						<td class="superficie"><?php echo $reg_superf?></td>
						<td class="olivos"><?php echo $reg_olivos?></td>
						<td class="precio"><?php echo $reg_precio?></td>
					</tr>
				<?php
					}
			echo '</table>';
			}
		}
	?>

Ahi va, casi na, no sabia si ponerlo como html o como php, porque va mezclado y de ninguna de las maneras de ve como tiene que verse. Os lo agradezco mucho chicos, de verdad.
  #6 (permalink)  
Antiguo 22/03/2007, 15:30
 
Fecha de Ingreso: abril-2006
Mensajes: 43
Antigüedad: 18 años
Puntos: 1
Busqueda Re: Resultados de busqueda en base de datos

Loco... lo que podes hacer es una tabla en tu base de datos donde quede guardado este valor... ya sea "ORDER BY nombre ASC" o "ORDER BY lo que sea"

en tu linck para que no se valla pa cualquier lao lo que podes hacer sería algo como

<a href="<? echo $PHP_REFE; ?>"ordena=nombre>Nombre</a>

luego en tu misma página capturas el URL

if($_GET["ordena"]==nombre){
mysql_query("UPDATE ordenador SET ordena=$_GET["ordena"]==nombre");
}

y luego llamas al valor guardado en la base de datos...

Perdón sino se me entiende mucho...
no soy muy didactico. Pero así lo hice yo... para mantener siempre el orden guardado de como lo ordené (vale la redundancia) la ultima ves.

Espero haberte ayudado en algo

JoZ
  #7 (permalink)  
Antiguo 22/03/2007, 18:50
 
Fecha de Ingreso: enero-2006
Mensajes: 29
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: Resultados de busqueda en base de datos

Muchas gracias compadre, ya lo he solucionado, funciona perfecto. Gracias por todo.

Saludos
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 18:35.