Tomar una o más variables en select mysql
Por más que busco y re busco, no logro entender la manera de tomar una o más variables de un form para un select en mysql. Ya sé que esta pregunta la han hecho antes, pero precisamente he seguido todos los ejemplos y respuestas dadas aquí mismo y no me funciona nada.
Tengo un form con campos de selección tales como "barco", "puerto de embarque", "puerto de destino", etc. No hay campos de texto. Cada select del form toma una lista de una BD. Hasta ahí todo bien. Pero al pasar al script php no logro entender como hacer para que tome una sola variable o más a la vez como filtros para el select de la consulta Mysql, dependiendo de cuántos campos haya seleccionado el usuario. Hasta ahora he probado estas opciones dadas en respuestas en esta web:
Opción 1:
$sql_query="SELECT * FROM 'vehiculos' WHERE ";
$where_query="#";
$where_query .= (isset($_POST[Matricula]) && $_POST[Matricula] != "")?" AND `Matricula`= '$_POST[Matricula]'":"";
$where_query .= (isset($_POST[Marca]) && $_POST[Marca] != "")?", `Marca` = $_POST[Marca]":"";
$where_query .= (isset($_POST[Modelo]) && $_POST[Modelo] != "")?", `Modelo` = $_POST[Modelo]":"";
$where_query .= (isset($_POST[Precio]) && $_POST[Precio] != "")?", `Precio` = $_POST[Precio]":"";
$sql_query .= str_replace("# AND", "", $where_query);
$final=mysql_query($sql_query);
OPCION 2:
$criterio = '';
if ( isset($_GET['marca']) )
{
$criterio .= "AND marca LIKE '%{$_GET['marca']}%'";
}
if ( isset($_GET['modelo']) )
{
$criterio .= " AND modelo LIKE '%$_GET['modelo']}%' ";
}
luego al final creas una consulta sql asi:
$sql = "SELECT * FROM ordenadores WHERE TRUE $criterio";
En mi form estoy usando POST en method. En ambos ejemplos he cambiado los GET por POST, cuando corresponde. Además he intentado otras opciones particulares, y otras respuestas encontradas en la web, pero no me funciona nada. A lo más, elegir uno u otro filtro, pero no uno, o varios, o todos a la vez, como yo necesito.
Tengo un form con campos de selección tales como "barco", "puerto de embarque", "puerto de destino", etc. No hay campos de texto. Cada select del form toma una lista de una BD. Hasta ahí todo bien. Pero al pasar al script php no logro entender como hacer para que tome una sola variable o más a la vez como filtros para el select de la consulta Mysql, dependiendo de cuántos campos haya seleccionado el usuario. Hasta ahora he probado estas opciones dadas en respuestas en esta web:
Opción 1:
$sql_query="SELECT * FROM 'vehiculos' WHERE ";
$where_query="#";
$where_query .= (isset($_POST[Matricula]) && $_POST[Matricula] != "")?" AND `Matricula`= '$_POST[Matricula]'":"";
$where_query .= (isset($_POST[Marca]) && $_POST[Marca] != "")?", `Marca` = $_POST[Marca]":"";
$where_query .= (isset($_POST[Modelo]) && $_POST[Modelo] != "")?", `Modelo` = $_POST[Modelo]":"";
$where_query .= (isset($_POST[Precio]) && $_POST[Precio] != "")?", `Precio` = $_POST[Precio]":"";
$sql_query .= str_replace("# AND", "", $where_query);
$final=mysql_query($sql_query);
OPCION 2:
$criterio = '';
if ( isset($_GET['marca']) )
{
$criterio .= "AND marca LIKE '%{$_GET['marca']}%'";
}
if ( isset($_GET['modelo']) )
{
$criterio .= " AND modelo LIKE '%$_GET['modelo']}%' ";
}
luego al final creas una consulta sql asi:
$sql = "SELECT * FROM ordenadores WHERE TRUE $criterio";
En mi form estoy usando POST en method. En ambos ejemplos he cambiado los GET por POST, cuando corresponde. Además he intentado otras opciones particulares, y otras respuestas encontradas en la web, pero no me funciona nada. A lo más, elegir uno u otro filtro, pero no uno, o varios, o todos a la vez, como yo necesito.
Respuesta de oyepez003
1