Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/01/2017, 18:47
Avatar de blogger
blogger
 
Fecha de Ingreso: diciembre-2005
Ubicación: frente al monitor
Mensajes: 398
Antigüedad: 18 años, 4 meses
Puntos: 12
Pregunta script de búsqueda, no se como obtener los valores

Tengo una base de datos de la biblia con las siguientes columnas libro, capitulo, verso y texto.

Usando el formulario de búsqueda en HTML, el usuario ingresa una busqueda compleja como:

Genesis 3:2, 8-7; Mateo 3:15-8; jueces 1

Donde el resultado sería

1) Texto del versiculo Genesis 3:2
2) Texto de los versiculos Genesis 3:8-7
3) Texto de los versiculos Mateo 3:15-8
4) El capitulo entero Jueces 1

¿Cómo puedo desarrollar una busqueda MySql para obtener esos resultados?

Quiero lograr lo que hacen el sitio de BibleGateway.

La tabla está estructurada de la siguiente manera:

Columnas Tipo
ID AutoInc
Libro TEXT
Versículo INT
Texto TEXT

Dividí la búsqueda en un array multiple, separandola por cada libro. Este es el resultado...

Código PHP:
//obtenemos la variable
$quest=filter_var(($_POST['search']), FILTER_SANITIZE_STRING);
//hacemos el explode
$quest explode(";",$quest);
//dividimos y salvamos en un array
$i 0
$size count($quest);
while (
$i $size) {
  
$claves[] = preg_split("/\W/"$quest[$i]);
  
$i++;

El resultado es:

Código PHP:
Array
(
    [
0] => Array
        (
            [
0] => Genesis
            
[1] => 3
            
[2] => 2
            
[3] => 
            [
4] => 5
            
[5] => 7
        
)
    [
1] => Array
        (
            [
0] => 
            [
1] => Mateo
            
[2] => 3
            
[3] => 5
            
[4] => 8
        
)
    [
2] => Array
        (
            [
0] => 
            [
1] => jueces
            
[2] => 1
        
)

Lo que hice fue esto, como prueba para ver si podía obtener todos los valores en su lugar y en cierta manera funciona, pero que pasa cuando la búsqueda es mayor de 6? Me pueden ayudar a simplificar? Cómo puedo hacerlo mejor?

Lo que hago en este ejemplo es ver si puedo obtener todas las variables en su lugar, para poder así posteriormente hacer la búsqueda en SQL.

Código PHP:
$i 0;
$size count($claves);
while (
$i $size) {
    
    
$count count($claves[$i]);
    
    if (
$count == 2) {
        
$lib $claves[$i][0];
        
$cap $claves[$i][1];
    }
    
    if (
$count == 3) {
        if (empty(
$claves[$i][0])) {
            
$lib $claves[$i][1];
            
$cap $claves[$i][2];
            
$ver $claves[$i][3];
        } else {
            
$lib $claves[$i][0];
            
$cap $claves[$i][1];
            
$ver $claves[$i][2];
        }
    }
    
    if (
$count == 4) {
        if (empty(
$claves[$i][0])) {
            
$lib $claves[$i][1];
            
$cap $claves[$i][2];
            
$ver $claves[$i][3];
        } else {
            
$lib $claves[$i][0];
            
$cap $claves[$i][1];
            
$ver $claves[$i][2];
        }
    }
    
    if (
$count == 5) {
        if (
is_numeric ($claves[$i][0])) {
            
$lib $claves[$i][0]." ".$claves[$i][1];
            
$cap $claves[$i][2];
            
$ver $claves[$i][3];
        } else {
            if (empty(
$claves[$i][0])) {
                
$lib $claves[$i][1];
                
$cap $claves[$i][2];
                
$ver $claves[$i][3];
                
$ver1 $claves[$i][4];
            } else {
                
$lib $claves[$i][0];
                
$cap $claves[$i][1];
                
$ver $claves[$i][2];
                
$ver1 $claves[$i][3];
            }
        }
    }
    
    if (
$count == 6) {
        if (
is_numeric ($claves[$i][0])) {
            
$lib $claves[$i][0]." ".$claves[$i][1];
            
$cap $claves[$i][2];
            
$ver $claves[$i][3];
            
$ver1 $claves[$i][5];
        } else {
            
$lib $claves[$i][0];
            
$cap $claves[$i][1];
            
$ver $claves[$i][2];
            
$ver1 $claves[$i][4];
            
$ver2 $claves[$i][5];
        }
    } 
Gracias por su ayuda.
__________________
http://exegesis-biblica.com/