Consulta mysql desde formulario php

Tengo una tabla mysql sobre ordenadores con los siguientes campos: codigoarticulo, marca, modelo y precio.
Quiero hacer una consulta desde un formulario de forma que pueda buscar por cualquiera de los campos individualmente o cualquier combinación de ellos. O sea por ejemplo, por código solamente o por marca y modelo al mismo tiempo.
¿Cómo identifico en el formulario los campos que han sido elegidos para la consulta?
Y lo que es más importante, ¿cuál podría ser la sentencia sql para la consulta?.
Respuesta
1
Construye la sentencia sql sobre la marcha
$sql_query="SELECT * FROM `tablaaaa` WHERE ";
$where_query="#";
$where_query .= (isset($_GET[filtro1]) && $_GET[filtro1] != "")?", `campo1`= $_GET[filtro1]":"";
$where_query .= (isset($_GET[filtro2] && $_GET[filtro2] != "")?", `campo2` = $_GET[filtro2]":"";
$sql_query .= str_replace("#,", "", $where_query);
mysql_query($sql_query);
Más o menos esa es la idea, modeala a tu necesidad ;)
Hola.
Ufff, se me hace algo complicado entender tu respuesta para el nivel de mysql que tengo.
¿No existirá algo más sencillo?.
Gracias.
es sencillo ;)
Te la explico y verás lo simple que es ;)
Por cierto, tiene un pequeño fallito, y es que utilizaba comas en vez de AND para separar las condiciones. Ahora te pongo el código bien y comentado ;)
$sql_query="SELECT * FROM `tablaaaa` WHERE ";
/*Tablaaaa es tu tabla y en $sql_query está la primera parte de la sentencia. (Lo que no cambia)/*
$where_query="#";//lo uso para quitar luego el primer AND sobrante 
$where_query .= (isset($_GET[filtro1]) && $_GET[filtro1] != "")?" AND `campo1`= '$_GET[filtro1]'":""; 
/*Si el filtro1 tiene un valor, añade "AND `campo1` = '$_GET[filtro1]'" a la where_query (el $_GET[filtro1] lo puedes sustituir por $_POST[filtro1] y otras cosas, que es uno de los filtros (puede ser por ejemplo nombre, apellido, correo, etc...)*/
$where_query .= (isset($_GET[filtro2] && $_GET[filtro2] != "")?", `campo2` = $_GET[filtro2]":""; /*lo mismo que el otro, pero con otro filtro, y puedes añadir todos los que necesites*/
$sql_query .= str_replace("# AND", "", $where_query);
/*Si todos los filtros se cumplieron, where_query tiene la forma   -> # AND `campo1` = hola AND `campo2` = adios    <- con lo que hay que quitar el primer AND (Y para eso estaba el # del principio, para localizarlo. y lo que salga, se le concatena al principio de sql_query y ya tenemos la sentencia lista*/
mysql_query($sql_query);//ya mandamos la sentencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas