Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema con "OR" en Patron de comparación

Estas en el tema de Problema con "OR" en Patron de comparación en el foro de Mysql en Foros del Web. Hola a todos...! Estoy tratando de construírme un buscador avanzado dentro de mis posibilidades. Pero estoy trabado en algo que no puedo encontrar la respuesta. ...
  #1 (permalink)  
Antiguo 27/07/2010, 13:13
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Problema con "OR" en Patron de comparación

Hola a todos...!

Estoy tratando de construírme un buscador avanzado dentro de mis posibilidades. Pero estoy trabado en algo que no puedo encontrar la respuesta. Por favor si me pueden orientar.

Esta consulta a mi BD funciona bien, pero resulta que le quiero agregar otros patrones de comparación con "OR" y no me funcionan. No se que estoy haciendo mal!

Código PHP:
<?php
$apellido_paterno 
$_GET['apellido_paterno'];
$nombre_paterno $_GET['nombre_paterno'];
$apellido_materno $_GET['apellido_materno'];
$nombre_materno $_GET['nombre_materno'];
$nombre $_GET['nombre'];
$apellido_persona $_GET['apellido_persona'];
$documento $_GET['documento'];
$anio $_GET['anio'];
$lugar $_GET['lugar'];
$provincia $_GET['provincia'];
//Conexión a la base de datos
          
include($_SERVER['DOCUMENT_ROOT']."CONECCION BD");
          
conectarse();
      if(!
$apellido_paterno && !$nombre_paterno && !$apellido_materno && !$nombre_materno && !$nombre && !$apellido_persona && !$documento && !$lugar && !$anio && !$provincia) {
      echo 
"<div style='font-size:22px;font-weight:bold;color:#c00;margin:10px 0px 25px 0px;padding-bottom:50px;'>" No SE INGRESARON DATOS "</div>";
      } elseif (
$apellido_paterno != "apellido_paterno") {
      
$_pagi_sql="SELECT
      id,
      apellido_paterno,
      nombre_paterno,
      apellido_materno,
      nombre_materno,
      nombre,
      documento,
      DATE_FORMAT(fecha,'%Y') AS fecha,
      lugar,
      url,
      texto,
      fuente,
      transcripcion
      FROM documentos_actas
      WHERE 
      apellido_paterno LIKE '%$apellido_paterno%' AND 
      nombre_paterno LIKE '%$nombre_paterno%' AND
      apellido_materno LIKE '%$apellido_materno%' AND      
      nombre_materno LIKE '%$nombre_materno%' AND
      nombre LIKE '%$nombre%' AND
      apellido_paterno LIKE '%$apellido_persona%' AND
      documento LIKE '%$documento%' AND
      anio LIKE '%$anio%' AND
      lugar LIKE '%$lugar%' AND
      provincia LIKE '%$provincia%'      
      ORDER BY apellido_paterno, nombre ASC"
;      
 
?>
Por ejemplo, le quiero agregar otra comparación y no me funciona:

Código PHP:
apellido_paterno LIKE '%$apellido_paterno%' 
OR 
apellido_paterno LIKE '%$apellido_paterno %' 
  #2 (permalink)  
Antiguo 27/07/2010, 14:39
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Problema con "OR" en Patron de comparación

No sé por qué quieres buscar lo mismo a la vez con AND y OR. Acláranos el alcance de tu consulta. ¿Qué campos quieres que necesariamente sean coincidentes con la búsqueda? Explícanos las situaciones y te ayudaremos a elaborar la consulta o te derivaremos a otro foro, si es que fuera necesario para conseguir lo que quieres.
El uso de AND y OR mezclados requiere del uso de paréntesis, pero dinos exactamente qué quieres conseguir con tu consulta.
  #3 (permalink)  
Antiguo 27/07/2010, 15:13
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Problema con "OR" en Patron de comparación

Hola jurena, gracias por ayudarme!

Este es el formulario:

Código:
<table style="width:60%;margin:auto;border-spacing:0px;">
<tr>
<td>
<form action="buscar_avanzada.php"; method="GET" name="busqueda_avanzada">
<strong>Apellido de la Persona:</strong><br /><input type="text" name="apellido_persona"></td>
<td><strong>Nombre de la Persona:</strong><br /><input type="text" name="nombre"></td>
</tr>
<tr>
<td>Apellido del Padre:<br /><input type="text" name="apellido_paterno"></td>
<td>Nombre del Padre:<br /><input type="text" name="nombre_paterno"></td>
</tr>
<tr>
<td>Apellido de la Madre:<br /><input type="text" name="apellido_materno"></td>
<td>Nombre de la Madre:<br /><input type="text" name="nombre_materno"></td>
</tr>
<tr>
<td>Tipo de Documento:<br /><input type="text" name="documento"></td>
<td>Lugar:<br /><input type="text" name="lugar"></td>
</tr>
<tr>
<td>Año:<br /><input type="text" name="anio"></td>
<td>Provincia:<br /><input type="text" name="provincia"></td>
</tr>
<tr>
<td colspan="2" style="padding:15px 0px 5px 0px;"><div style="width:30%;margin:auto;"><input type="submit" name="Submit" value="Buscar"></div></td>
</tr>
</form>
</table>
Por ejemplo, entre los campos del formulario del buscador, figura uno para la búsqueda del "Nombre Materno". Si el usuario ingresa por ej. "Ana", la consulta con:

WHERE nombre_materno Like '%$nombre_materno%'

me devuelve registros tanto de "Ana" y "Anastacia"

Entonces estoy intentando filtrar la búsqueda y para eso quería poner:

WHERE nombre_materno Like '%$nombre_materno%' OR nombre_materno Like '%$nombre_materno %'

para ir descartando nombres y sólo encuentre "Ana"

El "AND" lo utilizo por que en el formulario se pueden combinar los campos para la búsqueda, por ejemplo se puede buscar por Nombre del Padre y Apellido de la Madre.

Disculpas si no me explico correctamente!
  #4 (permalink)  
Antiguo 28/07/2010, 01:07
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Problema con "OR" en Patron de comparación

Creo que tu problema es otro. Debes resolverlo de otra forma. Si quieres que busque por lo que escribas, es decir, si no rellenas todos los datos del formulario que busque sólo por los rellenados, debes pedir ayuda en el foro PHP, para que te digan el modo en que debes sólo añadir la parte de la cadena de consulta que tiene que ver con cada INPUT relleno y variable enviada.
Para lo otro, con algo así, si es que te he entendido bien:
... WHERE (nombre_materno Like '%$nombre_materno%' OR nombre_materno Like '%$nombre_materno %') AND (nombre_paterno Like '%$nombre_paterno%' OR nombre_materno Like '%$nombre_materno %') AND...

Para la búsqueda, seguro que lo sabes, hay otras opciones, si es que usas tablas MyISAM, como por ej. el uso de índices FULL TEXT, y también podrías usar EXPRESIONES REGULARES, eso también en InnoDB, pero si sólo vas a añadir esto te bastará con lo dicho. Pero qué harás con María, que puede ponerse sola, delante y detrás; tendrás que añadir otro OR dentro del paréntesis. Con FULL text eso es innecesario pues busca palabras, no cadenas. No te olvides de indexar con INDEX los campos sobre los que realizas búsquedas.

Última edición por jurena; 28/07/2010 a las 01:37
  #5 (permalink)  
Antiguo 28/07/2010, 09:15
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Respuesta: Problema con "OR" en Patron de comparación

Gracias jurena...

Haré pruebas y voy a investigar lo de Full Text en el Manual, de paso sigo aprendiendo!

Gracias nuevamente!

Etiquetas: patron
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:49.