
17/09/2009, 08:26
|
 | | | Fecha de Ingreso: septiembre-2009
Mensajes: 26
Antigüedad: 15 años, 7 meses Puntos: 0 | |
Respuesta: Busqueda PHP y MySql Hola Matías.
No tengo mucha experiencia en php porque recién estoy empezando pero en sql tengo ya 10 años de trabajo con visual basic y sql server.
Primero, estás preguntando por el post de una variable, por tanto a mi parecer no debes usar la doble comilla para preguntar si está vacío y lo otro es que a la hora de hacer la concatenación debes preguntar si el campo anterior existe, te explico:
es $tipo el primer campo a filtrar????....porque entonces no puedes usar la clausula AND puesto que es el primero
Yo veo tu código así:
<?php
$tipo = $_POST['tipo'];
$titulo = $_POST['titulo'];
$isbn = $_POST['isbn'];
if ($_POST['tipo'] && trim($tipo) != ") //aca preguntas si existe el post de tipo y si $tipo es diferente de vacío y si es el primer parámetro no necesitas la clausula AND
{
$sql .= " WHERE tipo = '" .trim($tipo) ."' ";
}
if ($_POST['titulo'] && trim($titulo) != '')
{
//Para poder seguir la cadena debes primero preguntar si el primer parametro esta pasando
if ($_POST['tipo'] && trim($tipo) != ")
{
$sql .= " AND titulo like '%".$titulo ."%' ";
}
else
{
$sql .= " WHERE titulo like '%".$titulo."%' ";
}
if ($_POST['isbn'] && trim($isbn) != '')
{
//Continuas la concatenación
if ($_POST['tipo'] && trim($tipo) != ") || ($_POST['titulo'] && trim($titulo) != '')
{
$sql .= " AND isbn = '".trim($isbn) ."' ";
}
else
{
$sql .= " WHERE isbn = '".trim($isbn) ."' ";
}
$sql .= " ORDER BY ID DESC";
$result = mysql_query($sql) or die("Query: $sql ".mysql_error());
?>
Por favor pruebalo y me dices. Por otra parte, imagino que en algún lugar estás validando que al menos te llenen un campo por donde efectuar la búsqueda????? |