Vale lo he solucionado variando esto último que me habéis comentado.
Ahora el problema viene que quiero hacer que si el usuario selecciona la primera opción del select (la vacía, en blanco) muestre todos los resultados de la tabla.
Simplemente he puesto un if delante del código anterior: si la variable está vacía, muestra todos los resultados de la tabla, y si la variable no está vacía, muestra la variable que está seleccionada. Pero da error, he ido probando diferentes opciones y el error lo suele dar en el elseif (o cambiándolo por else también da error)
Código PHP:
<?
$categoria = $_POST['categoria'];
if ($categoria == ""){
mysql_connect("servidor","usuario","clave") ;
mysql_select_db("db");
$result=mysql_query("SELECT * FROM TABLE3 WHERE Categoria like '%%'");
echo "Resultados para: $categoria";
echo "<table border=1 cellspacing=5 cellpadding=10 bordercolor='E49E56'>";
echo "<tr align='center' bgcolor='E7AE18'><td>Número</td><td>Categoría</td><td>Nombre</td></tr>"; {
while ($row=mysql_fetch_array($result))
{
?>
<tr bgcolor="#fdfdbf" align='center'><td><?=$row['Número'];?></td><td><?=$row['Categoría'];?></td><td><?=$row['Nombre'];?></td></tr>
<?
}
echo "</table>";
}
mysql_free_result($result);
elseif ($categoria != ""){
mysql_connect("servidor","usuario","clave") ;
mysql_select_db("db");
$result=mysql_query("SELECT * FROM TABLE3 WHERE (Categoria = '$categoria')");
echo "Resultados para: $categoria";
echo "<table border=1 cellspacing=5 cellpadding=10 bordercolor='E49E56'>";
echo "<tr align='center' bgcolor='E7AE18'><td>Número</td><td>Categoría</td><td>Nombre</td></tr>"; {
while ($row=mysql_fetch_array($result))
{
?>
<tr bgcolor="#fdfdbf" align='center'><td><?=$row['Número'];?></td><td><?=$row['Categoría'];?></td><td><?=$row['Nombre'];?></td></tr>
<?
}
echo "</table>";
}
mysql_free_result($result);