Bueno, te voy a hacer una aclaración de a qué me refería con que acá no se tratan temas de programación.
Mira, de todo esto:
Código PHP:
Ver original<table width="765" height="80" border="0">
<?php
$sql = "SELECT SQL_CALC_FOUND_ROWS actividades.* FROM actividades WHERE actividades.Actividades = '$selactividad' and NombreComer like '%" . $txt_criterio . "%'";
$myVariable = "";
if (isset($_GET['selpoblacion'])and
$_GET['selpoblacion'] >0) { $txt_selpoblacion = $_GET["selpoblacion"];
$sql .= "AND idpoblacion = $txt_selpoblacion ";
}
$sql .= ' ORDER BY NombreComer ASC '; // Salen desordenados pero siempre el mismo desorden si se pone "rand(Nombre_del_campo)"
$sql .= 'LIMIT ' . (($pagination->get_page()- 1) * $records_per_page) . ', ' . $records_per_page . '';
//"LIMIT " . (($pagination->get_page()- 1) * $records_per_page) . ", " . $records_per_page . "";
// Si la consulta no puede ser ejecutada
// Parada de la ejecución y el mensaje de error de visualización
}
// Recuperar el número total de registros en la tabla
// Pasar el número total de registros a la clase de paginación
$pagination->records($rows['rows']);
// Registros por página
$pagination->records_per_page($records_per_page);
?>
<tr>
<td><a href="<?php echo $registro['Url']; ?>"><img border="0" src="<?php echo $registro['Imagenes']; ?>"></a></td>
</tr>
<?php
}
?>
</table>
lo único que nos interesa y que tratamos es esto:
Código MySQL:
Ver originalWHERE actividades.Actividades
= '$selactividad' and NombreComer
like '%$txt_criterio%' AND idpoblacion
= $txt_selpoblacion
Todo el resto es "código basura", porque es off-topic y no permitido en este foro (estoy poniendole valores al LIMIT sólo como ejemplo).
Desde el punto de vista sintáctico, la sentencia está bien escrita, por lo que no debería generar problemas,
en tanto los valores de las variables sean correctos.
Ahora bien, lo que expresas es que:
Cita: con una variable le paso a mi consulta de Mysql una actividad para que me saque los datos que corresponde con esa actividad pero si le paso un dato como por ejemplo "TODOS" que es una Option del select, me saque los datos de todas las actividades.
Eso ya no es exactamente un problema de la sentencia de SQL, sino de la forma en que la creas con PHP (y en este punto volvemos a que no es asunto de este foro), porque lo que tienes que hacer es validar en la aplicación que si el usuario seleccionó esa opción del formulario, la condición
Código MySQL:
Ver originalactividades.Actividades = '$selactividad'
no se incluya en el WHERE. Y como te remarco, aunque la sentencia finalmente es una consulta SQL, el problema es la implementación en el PHP...
El tema es que para crear una sentencia tal que incluya la opción de "todos" que quieres, el WHERE debería ser innecesariamente complicado, o crear un stored procedure que lo haga, mientras que en tu caso puees resolverlo de forma muy simple en el PHP... cosa que ya has demostrado con la condición del valor de
idpoblacion. Lo único que debes hacer es lo mismo, pero para
actividades.
La
exclusión de una condición dada implica, en SQL, que se incluyen todos los valores que puedan existir en esa columna, sin discriminación,
que es precisamente lo que estás tratando de conseguir.
¿Se entiende la idea?