Gracias Neuron pero no me funciona... me da un error.
Pongo aqui el form a ver si se ve mejor la posibilidad:
inicio.php
Código PHP:
]<script language="javascript">
function recarga(){
window.location = "<?php echo $_SERVER['PHP_SELF']; ?>?var="+document.buscador.categoria.value;
onChange="location.reload()";
}
</script>
<form name="buscador" id="buscador" method="post" action="resultados.php">
<table width="370" border="0" cellpadding="5">
<tr>
<td><div align="right">Ingrese el nombre a consultar </div></td>
<td><div align="right">
<input name="textfield" type="text" class="texto" size="30">
</div></td>
</tr>
<tr>
<td colspan="2"><div align="right">
<?php
include("config.php");
$sql="SELECT categoria FROM categorias";
$result=mysql_db_query("bogonli_principal",$sql);
echo '<select name="categoria" id="categoria" class="texto" onChange="recarga()">';
$var=$_GET["var"];
while ($row=mysql_fetch_array($result))
{echo '<option value="'.$row["categoria"].'"';
if($var==$row["categoria"]){echo " selected"; }
echo '>'.$row["categoria"];}
echo '</select>';
if(!empty($var)){
$var=$_GET["var"];
$sql2="SELECT subcategoria FROM categorias WHERE categoria='$var'";
$result2=mysql_db_query("bogonli_principal",$sql2);
?>
<?
echo '<select name="subcategoria" id="subcategoria" class="texto">';
while ($row2=mysql_fetch_array($result2))
{echo '<option value="'.$row2["subcategoria"].'">'.$row2["subcategoria"];}
echo '</select>';
}
?>
</div></td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input name="submit" type="submit" class="texto" value="Realizar la consulta">
</div></td>
</tr>
</table>
</form
El form funciona perfecto, con su select que crea el otro y demas.
Lo que no doy es en query de la pagina de resultados, al hacer click en el boton voy a resultados.php pero siempre me arroja todo lo que hay.
Tengo un codigo que he venido usando desde hace tiempo y me funciona muy bien. Es resultado de algo de estudio y ayuda de este mismo foro. El problema es que es un buscador muy basico con paginacion incluida (tambien la requiero para este caso). Busca segun cualquier cosa que pongas en un solo campo de texto. Lo adapte para este caso pero siempre me arroja lo mismo, todo lo que hay. Ademas, no se como incluir los selct en el query
Lo pongo a ver si ayuda:
resultados.php
Código PHP:
<?
include("config.php");
//$link=Conectarse();
//inicializo el criterio y recibo cualquier cadena que se desee buscar
$criterio = "";
$txt_criterio = "";
if (isset($Buscacriterio)){
$txt_criterio=$Buscacriterio;
$criterio = " where nombre like '%" . $txt_criterio . "%' or categoria like '%" . $txt_criterio . "%' or subcategoria like '%" . $txt_criterio . "%'";
}
else{
if ($_GET["criterio"]!=""){
$txt_criterio = $_GET["criterio"];
$criterio = " where nombre like '%" . $txt_criterio . "%' or categoria like '%" . $txt_criterio . "%' or subcategoria like '%" . $txt_criterio . "%'";
}
else
if ($_POST){
$txt_criterio = $_POST["palabra"];
$criterio = " where nombre like '%" . $txt_criterio . "%' or categoria like '%" . $txt_criterio . "%' or subcategoria like '%" . $txt_criterio . "%'";
}
}
$sql="SELECT * FROM clientes".$criterio;
$res=mysql_query($sql);
$numeroRegistros=mysql_num_rows($res);
if($numeroRegistros<=0)
{
echo "<div align='center'>";
echo "<font face='arial' class='texto'>No se encontraron resultados</font>";
echo "</div>";
}else{
//////////elementos para el orden
if(!isset($orden))
{
$orden="nombre";
}
//////////fin elementos de orden
//////////calculo de elementos necesarios para paginacion
//tamaño de la pagina
$tamPag=5;
//pagina actual si no esta definida y limites
if(!isset($_GET["pagina"]))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}else{
$pagina = $_GET["pagina"];
}
//calculo del limite inferior
$limitInf=($pagina-1)*$tamPag;
//calculo del numero de paginas
$numPags=ceil($numeroRegistros/$tamPag);
if(!isset($pagina))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}else{
$seccionActual=intval(($pagina-1)/$tamPag);
$inicio=($seccionActual*$tamPag)+1;
if($pagina<$numPags)
{
$final=$inicio+$tamPag-1;
}else{
$final=$numPags;
}
if ($final>$numPags){
$final=$numPags;
}
}
//////////fin de dicho calculo
//////////creacion de la consulta con limites
$sql="SELECT * FROM clientes ".$criterio." ORDER BY ".$orden.",nombre ASC LIMIT ".$limitInf.",".$tamPag;
$res=mysql_query($sql);
//////////fin consulta con limites
/// estadisticas/////
echo "<div align='center'>";
echo "<font face='arial' class='texto'>Han sido encontrados ".$numeroRegistros." resultados<br>";
echo "Mostrando la página " . $pagina . " de un total de " . $numPags . "<p>";
?>
<hr noshade style="color:#616161;height:1px">
<?
/// mostrar los resultados encontrados//////
while($registro=mysql_fetch_array($res))
{
echo "<div align='left'>";
echo "<b><a href=".$registro[url]." target=_blank>".$registro[nombre]."</a></b><br>";
echo "".$registro[descripcion]."<br><br>";
echo "Dirección: ".$registro[direccion]."<br>";
echo "Teléfonos: ".$registro[telefonos]."<br>";
echo "Correo electrónico: <a href='mailto:".$registro[email_uno]."'>".$registro[email_uno]."</a>, ";
echo "<a href='mailto:".$registro[email_dos]."'>".$registro[email_dos]."</a><br>";
echo "Ubicación: ".$registro[zona]."";
echo "<div align='right'>";
if (!empty($registro[capa])){
echo "<a href='detalles.php' target=_blank>".$registro[capa]."</a><br>";
}
?>
<hr noshade style="color:#616161;height:1px">
<?
}//fin while
}
//////////a partir de aqui viene la paginacion
?>
<br>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td align="center" valign="top" bgcolor="#FFFFFF">
<td><font size="1" color="#2278BB">
<?
if($pagina>1)
{
echo "<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina-1)."&orden=".$orden."&criterio=".$txt_criterio."'>";
echo "<font face='arial' class='texto'>Anterior</font>";
echo "</a> ";
}
for($i=$inicio;$i<=$final;$i++)
{
if($i==$pagina)
{
echo "<font face='arial' class='texto'><b>".$i."</b> </font>";
}else{
echo "<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".$i."&orden=".$orden."&criterio=".$txt_criterio."'>";
echo "<font face='arial' class='texto'>".$i."</font></a> ";
}
}
if($pagina<$numPags)
{
echo " <a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina+1)."&orden=".$orden."&criterio=".$txt_criterio."'>";
echo "<font face='arial' class='texto'>Siguiente</font></a>";
}
//////////fin de la paginacion
?>
</font></td>
</tr>
</table> <hr noshade style="color:#616161;height:1px">
<div align="center"><font face="arial" class="texto"><a class="p" href="inicio.php">Buscar de nuevo</a></font></div> <?
mysql_close();
?>