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++;
}
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 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];
}
}