Reglamento general de los foros   •   FAQ   •   Buscar en el foro •  Registrarse | Iniciar sesión 



Portada » Foros Linux » Desarrollo » Programación


Nuevo tema Responder al tema
 [ 3 mensajes ] 
Patrocinadores

Autor
Buscar:
Mensaje

Desconectado
Forista Distinguido
Forista Distinguido
Avatar de Usuario

Registrado: Mar Nov 21, 2006 8:00 am
Mensajes: 1031
Ubicación: Mi casa, Sant marçal, marratxí, mallorca, baleares, españa, europa, el mundo, planeta solar...

Nota Publicado: Lun Dic 28, 2009 11:28 pm 
Arriba  
buenas, estoy desarrollando una aplicacion web para gestionar una bilioteca casera (tantos libros de mi padre y mios desperdigaos se olvidan xD)
ya tengo hecha la base de datos en mysql y la "aplicacion" para introducir nuevos libros, ahora estaba trabajando en la de busqueda. tengo en mente una busqueda avanzada, titulo, autor y tal, pero con una busqueda aproximada en slo parametors titulo y subtitulo (los otros son exactos ya que es un menu desplagable o el isbn) como podria hacer esto?

he encotrado esto
Citar:
(SELECT * FROM libro WHERE MATCH(titulo, subtitulo, isbn, idioma, genero, autor, editorial)
AGAINST (
"'.$_POST['titulo'].'"
"'.$_POST['subtitulo'].'"
"'.$_POST['ISBN'].'"
"'.$_POST['idioma'].'"
"'.$_POST['genero'].'"
"'.$_POST['autor'].'"
"'.$_POST['editorial'].'"))

ya que no me deja anidar la sentencia select....pero eso no me vale, ya que lo que pido que busque me lo busca en todos....una ayuda que no se como seguir

_________________
linux user #439128
DebianSqueeze
http://www.acarrasco.es

Proyecto:
http://alejandria.host56.com

Código:
No sé juntar "informática" y "legal" en una misma palabra....
yo sí: LINUX

 Perfil WWW  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Mié Nov 28, 2007 8:00 am
Mensajes: 1457
Ubicación: En la X del explorer (pulse para llamar)

Nota Publicado: Mar Dic 29, 2009 1:41 am 
Arriba  
Supongo que a lo que te refieres es a algo como esto:
Código:
select * from libro where titulo like '%titulo1%' and subtitulo like '%subtitulo1%' and isbn = isbn1 ...

Con esa sentencia buscas libros cuyo titulo se parezca a titulo1 y el subtitulo a subtitulo1 y el isbn sea igual al isbn1, etc
Con el <like '%titulo1%'> lo que te va a hacer es similar a una expansión del shell (como cuando pones por ejemplo "ls *.png"). Puedes considerar el '%' como un '*'

Esa sentencia debe permitir anidamiento:
Código:
select * from libro where isbn in (select num_novelas from autor) and titulo like 'un%'

Creo que se entiende el ejemplo.

_________________
Descargue el gestor de mp3 "Music Manager" -> (mmlf)
Última versión del gestor "Music Manager" -> (jmmm)

 Perfil  

Desconectado
Forista Distinguido
Forista Distinguido
Avatar de Usuario

Registrado: Mar Nov 21, 2006 8:00 am
Mensajes: 1031
Ubicación: Mi casa, Sant marçal, marratxí, mallorca, baleares, españa, europa, el mundo, planeta solar...

Nota Publicado: Mar Dic 29, 2009 4:44 am 
Arriba  
vale....ahora solo falla que si uno de los campos titulo o subtitulo tiene varias palabras sin ser todo lo que se busca, la sentencia da error
asi que he concatenado tu respuesta con la mia...pero no me deja concatenar dos match, osease esto

Citar:
select * from libro where MATCH(titulo) against ("titulo1'") and MATCH(subtitulo) against ("subtitulo1'")

me da este "error"
Citar:
Can't find FULLTEXT index matching the column list


los otros campos esta solucionado de esta manera
Citar:
$quetit = 'select * from libro where MATCH(titulo) against ("'.$_POST['titulo'].'") ';
if (!($_POST['autor'] =="")){
$quetit = $quetit.' and autor="'.$_POST['autor'].'"';
}
if (!($_POST['ISBN'] =="")){
$quetit = $quetit.' and isbn='.$_POST['ISBn'];
}
if (!($_POST['genero'] =="")){
$quetit = $quetit.' and genero="'.$_POST['genero'].'"';
}
if (!($_POST['idioma'] =="")){
$quetit = $quetit.' and idioma="'.$_POST['idioma'].'"';
}
if (!($_POST['editorial'] =="")){
$quetit = $quetit.' and editorial="'.$_POST['editorial'].'"';
}

los if miran si es un campo vacio, si no es asi añaden esa sentencia a lo que ya tenia...pero me falta el subtitulo...por ahora de fabula

ayuda para añadir el subtitulo

Editado -- Mar Dic 29, 2009 12:42 pm --

al final no he usado el match y e usado solo el like, poniendolo tantas veces como palabras hay en la "frase de busqueda", os dejo como ha quedado toda la sentencia final
Citar:
if (($_POST['titulo'] =="")){
$quetit = 'select * from libro where titulo like "%" ';
}
else{
//$quetit = 'select * from libro where MATCH(titulo) against ("'.$_POST['titulo'].'") ';
$palabras = explode (' ',$_POST['titulo']);
$like="";
foreach ($palabras as $palabra) {
$like = ' titulo like "%'.$palabra.'%"';
}
$quetit = 'select * from libro where '.$like;
}


if (!($_POST['subtitulo'] =="")){
$palabras = explode (' ',$_POST['subtitulo']);
$like="";
foreach ($palabras as $palabra) {
$like = 'and subtitulo like "%'.$palabra.'%"';
}
$quetit = $quetit .$like;
}


if (!($_POST['autor'] =="")){
$quetit = $quetit.' and autor="'.$_POST['autor'].'"';
}


if (!($_POST['ISBN'] =="")){
$quetit = $quetit.' and isbn="'.$_POST['ISBN'].'"';
}

if (!($_POST['genero'] =="")){
$quetit = $quetit.' and genero="'.$_POST['genero'].'"';
}

if (!($_POST['idioma'] =="")){
$quetit = $quetit.' and idioma="'.$_POST['idioma'].'"';
}

if (!($_POST['editorial'] =="")){
$quetit = $quetit.' and editorial="'.$_POST['editorial'].'"';
}

_________________
linux user #439128
DebianSqueeze
http://www.acarrasco.es

Proyecto:
http://alejandria.host56.com

Código:
No sé juntar "informática" y "legal" en una misma palabra....
yo sí: LINUX

 Perfil WWW  
Mostrar mensajes previos:  Ordenar por  
 [ 3 mensajes ] 
Nuevo tema Responder al tema

Saltar a:  


 Temas relacionados   Autor   Respuestas   Vistas   Último mensaje 
Cual motor es mas adecuado para replicar BBDD ¿ PostgreSQL o MySQL ?

en Redes y Servidores

mcun

6

1210

Mar Sep 18, 2012 7:09 pm

mcun Ver último mensaje

Patrocina a un Raptor (el libro del raptor "La Guia para construir un motor de expresiones regulares")

en Documentación

emacsboy

2

792

Mié Ene 11, 2017 6:25 am

emacsboy Ver último mensaje

Busqueda De Red Hat

en Instalación de distribuciones

granate

4

786

Vie Nov 30, 2012 5:01 pm

o4kley Ver último mensaje

Busqueda y copia

en Sistema

JRMontero

3

127

Mié Mar 06, 2019 7:13 pm

doc Ver último mensaje

Búsqueda de distribución particular

en Instalación de distribuciones

Positivo

4

661

Mié Jun 19, 2013 8:47 am

johpunk Ver último mensaje



¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group :: Style based on FI Subice by phpBBservice.nl :: Todos los horarios son UTC + 1 hora [ DST ]
Traducción al español por Huan Manwë
phpBB SEO