Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema busqueda de valores SQL - PHP

Estas en el tema de Problema busqueda de valores SQL - PHP en el foro de Mysql en Foros del Web. Hola gente. Despues de 3 dias buscando por todo el mundo digital y sin encontrar nada de nada termino remitiendome a vosotros. Resulta que tengo ...
  #1 (permalink)  
Antiguo 12/04/2011, 02:16
 
Fecha de Ingreso: enero-2010
Mensajes: 63
Antigüedad: 14 años, 2 meses
Puntos: 7
Problema busqueda de valores SQL - PHP

Hola gente.

Despues de 3 dias buscando por todo el mundo digital y sin encontrar nada de nada termino remitiendome a vosotros.

Resulta que tengo una BBDD con 8 celdas
ID, MARCA, MODELO, ANO, CATEGORIA, COPYRIGHT, OTROS, OTRAS
Grabo en ellas sin problema y todo lo que necesito.

El problema esta a la hora de buscar algo en ellas.
lo que busco es que.
1º Selecciono la categoria
2º Dependiendo de la categoria me muestra una lista de marcas
3º Dependiendo de la marca una lista de modelos
4º Tengo dos casillas para poner año, DESDE y HASTA, lo que quiero es que si no hay otros datos me busque entre dos fechas, y si hay datos anteriores, que me busque entre dos fechas pero en esos datos.
5º Si coloco alguna palabra clave de la celda OTRAS, igual que las operaciones de año.

Aun cojeo un poco con el IF, ELSE y todo esto, que imagino que por ahi esta la solucion.

Esto es lo que tengo hasta ahora, y no funciona nada de nada.
Código HTML:
<?php
require("libreria/verificarpassword.php");
$sel = array();
$sel[1] = "_sel";
?>
<html>

<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="objetos/estilosoft.css" rel="stylesheet" type="text/css" />
<script src="libreria/funcionesjava.js" type="text/javascript"></script>
<script type="text/javascript">document.onkeypress = noENTER;</script>
</head>
<body leftmargin="30" topmargin="0">

<?
	if ($_POST["bt_enviar"]=="" && $nummodcli==""){
?>
	<form action="buscar.php" method="post" enctype="multipart/form-data" name="form1">
	<table width="100%" border="0" cellpadding="1" class="textogrisgestor">
	  <tr>
		<td valign="top" width="50%">
		<br><br>
        Categoria<br />
        <select name="categoria" class="cajas">
            <option value="1"/>Dos ruedas&nbsp;&nbsp;&nbsp;&nbsp;
            <option value="2"/>Automovil&nbsp;&nbsp;&nbsp;&nbsp;
            <option value="3"/>Vehiculo Industrial<br />
            <option value="4"/>Tractor&nbsp;&nbsp;&nbsp;&nbsp;
            <option value="5"/>Otros<br />
        </select>
<br /><br />


            Marca<br />
            <select name="marca" class="cajas">
<?php $busca2 = @mysql_query("SELECT * FROM marca ORDER BY nombre_marca ASC ");
	while ($arrbusca2 = mysql_fetch_array($busca2)){
	$marcas = $arrbusca2["nombre_marca"]; ?>
    
           	  <option value="<?php echo $marcas;?>"><?php echo $marcas;?></option>
            <?php } ?>
            </select><br /><br />
Modelo<br />
            <select name="modelo" class="cajas">
<?php $busca = @mysql_query("SELECT * FROM archivo WHERE marca LIKE '%$marcas%' ORDER BY modelo ASC ");
	while ($arrbusca = mysql_fetch_array($busca)){
	$modelos = $arrbusca["modelo"]; ?>
    
           	  <option value="<?php echo $modelos;?>"><?php echo $modelos;?></option>
            <?php } ?>
            </select><br /><br />
		<b>Año</b><br /><br />

        Desde <br />
		<input name="ano1" type="text" value=""><br />
        <br />Hasta<br />
        <input name="ano2" type="text" value=""><br /><br />
        <br />Palabras Clave<br />
        <input name="pclave" type="text" value=""><br /><br />



		<input type="submit" name="bt_enviar" value="Enviar" class="botoncrema">&nbsp;&nbsp;&nbsp;&nbsp;
		</td>
		<td valign="top" width="50%">
		</td>
	  </tr>
	</table>
	</form>
<?
	}else{
?>		
	<table width="100%" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td width="10%">&nbsp;</td>
        <td width="80%">
        <div class="textogrisgestor">
<?
		//definimos los datos de busqueda		
		if ($categoria ==""){		
			$categoria = $_POST["categoria"];
		}
		if ($marca ==""){		
			$marca = $_POST["marca"];
		}
		if ($modelo ==""){		
			$modelo = $_POST["modelo"];
		}
		if ($ano1 ==""){		
			$ano1 = $_POST["ano1"];
		}
		if ($ano2 ==""){		
			$ano2 = $_POST["ano2"];
		}
		//definimos el numero de registros a mostrar
		$numreg = 30;
		//calculamos el numero de resultados
		$busqueda= @mysql_query("SELECT * FROM archivo WHERE categoria LIKE '%$categoria%' OR WHERE marca LIKE '%$marca%' OR WHERE modelo LIKE '%$modelo%' OR WHERE ano LIKE '%$ano1%' < '%$ano2%'");
		$resultados = mysql_num_rows ($busqueda);
		$paginas = ceil($resultados / $numreg);
		//damos un valor a num que es la variable que incrementa las paginas
		if ($nummodcli>0) { 
			$n=$nummodcli;
		} else {
			$n=0;
		}
		//introducimos los parametros de consulta a la base de datos. 5 es el numero de registros a mostrar
		$busqueda= @mysql_query("SELECT * FROM archivo WHERE categoria LIKE '%$categoria%' OR WHERE marca LIKE '%$marca%' OR WHERE modelo LIKE '%$modelo%' OR WHERE ano LIKE '%$ano1%' < '%$ano2%' ORDER BY id DESC LIMIT ".$n." ,".$numreg);
		if (!$busqueda){
			echo ("Error al seleccionar los elementos de la base de datos, Inténtelo más tarde");
		exit();
		}
		//visualizamos en pantalla los resultados
		echo "Se han encontrado ".$resultados." coincidencias.<br><br><br><br>";
		while ($row = mysql_fetch_array($busqueda)){
?>		
                <table width="80%" border="0" class="textogrisgestor">
				  <tr>
				  	<td valign="bottom">
				  	<? echo($row["categoria"]);?> 
					</td>
					<td>&nbsp;</td>
                    <td valign="bottom">
				  	<? echo($row["marca"]);?> 
					</td>
					<td>&nbsp;</td>
					<td valign="bottom">
					<? echo($row["modelo"]);?>
					</td>
                    <td width="20%" valign="bottom">
				  	<? echo($row["ano"]);?> 
					</td>
					<td>&nbsp;</td>
					<td width="20%" valign="bottom"><a href="resultado.php?resultado=<? echo $row["id"];?>" class="seleccionargestor">Seleccionar</a></td>
				  </tr>
				</table>
<?		
		}
?>
        <table width="100%">
          <tr>
        	<td width="50%"> 
            <div align="left"> 
<?
			if ($resultados > 0){
				//definimos los botones anterior y siguiente
				if ($count > 0){
					echo "<br><a href='buscar.php?nummodcli=";
					echo $n-$numreg;
					echo "&count=";
					echo $count - 1;
					echo "&titulo=";
					echo $titulo;
					echo "' class='seleccionargestor'>Anterior</a>";
				}
?>
            </div>
			</td>
           	<td width="50%"> 
            <div align="right"> 
<?
				if ($count < ($paginas-1)){
					echo "<br><a href='buscar.php?nummodcli=";
					echo $n+$numreg;
					echo "&count=";
					echo $count + 1;
					echo "&titulo=";
					echo $titulo;
					echo "' class='seleccionargestor'>Siguiente</a>";
				}
			}
?>
            </div>
			</td>
          </tr>
        </table>
		</div>
		</td>
        <td width="15%">&nbsp;</td>
      </tr>
    </table>
</body>
</html>
<?
}
?> 
  #2 (permalink)  
Antiguo 12/04/2011, 02:45
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Problema busqueda de valores SQL - PHP

Hola buenas,

Lo que yo te aconsejo es que primeros, cargues un array con cada uno de los filtros.

( Ese array ya lo puedes usar en forma de desplegable para seleccionar los filtros )

Después, compruebes si lo que viene por post esta dentro de ese array.

A continuación, haría una SQL sin filtros, y después, por cada filtro:

Código PHP:
Ver original
  1. if($filtro_marca) {
  2.  
  3.   $sql .= ' AND marca = ' . $filtro_marca
  4.  
  5. }

Y así para todos.

Un saludo!

Etiquetas: busquedas
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:09.