Pues estoy haciendo un modulo y la temática es un calendario de conciertos, he logrado crear el formulario para ingresar los datos en la BD y para extraerlos y mostrarlo, ahora estoy con el de editarlos y borrarlos. Voy bastante bien pero me ha sugido un problema que no consigo deducir como solucionarlo. En mi formulario de busqueda de los conciertos publicados hay 4 valores posibles:
Nombre:
Fecha: (mes) - (año)
Lugar:
Mostrar todo
Si pulsas en mostrar todo, te muestra todos los registros de la base de datos, eso esta bien. El problema es a la hora de la busqueda segun las variables introducidas. He creado este codigo:
Código PHP:
if ($_POST['enviado'] == 'si') {
$nombre = $_POST['name'];
$mes = $_POST['mes'];
$anno = $_POST['anno'];
$lugar = $_POST['lugar'];
$mostrar = $_POST['mostrar'];
if ($mostrar == "todo") {
$result = mysql_query("SELECT id, nombre, dia, mes, anno, lugar FROM conciertos ORDER BY id DESC;");
while ($registro = mysql_fetch_array($result)) {
echo $registro[1] . " - " . $registro[2] . "/" . $registro[3] . "/" . $registro[4] . " - " . $registro[5] . " -> <a href='".$url_path."editar.php?editar=si&id=".$registro[0]."'>Modificar</a><br />";
}
mysql_free_result($result);
mysql_close($conexion);
} else {
if ($nombre == "") $nombre="*";
if ($mes == "---") $mes="*";
if ($anno == "---") $anno="*";
if ($lugar == "") $lugar="*";
$result = mysql_query("SELECT id, nombre, dia, mes, anno, lugar FROM conciertos WHERE nombre Like '$nombre' AND mes Like '$mes' AND anno Like '$anno' AND lugar Like '$lugar' ORDER BY id DESC;");
while ($registro = mysql_fetch_array($result)) {
echo $registro[1] . " - " . $registro[2] . "/" . $registro[3] . "/" . $registro[4] . " - " . $registro[5] . " -> <a href='".$url_path."editar.php?editar=si&id=".$registro[0]."'>Modificar</a>";
}
mysql_free_result($result);
mysql_close($conexion);
}
La segunda parte del codigo deberia buscar los registros segun los valores introducidos en el formulario y lo hace, pero SOLO si han sido rellenados todos y existe equivalencia con todos los campos de un registro. Por lo cual este motor de busqueda deja mucho que desear XDDDD Para solucionarlo se me ocurrio que si se dejaba un campo vacio su valor pasara a ser * (if ($nombre == "") $nombre="*";), asi en el WHERE habria algo asi(nombre Like *). Pero esto tampoco funciona. Tambien probe asi (nombre Like '$nombre*') pero nada.
Pues
resumiendo necesito un WHERE que busque registros con similitudes a los valores ingresados, sin necesidad de que sean introducidos todos (Nombre, mes, año y lugar). Alguien se le ocurre algo? T_T
Desde ya gracias.