Tengo una tabla disposiciones
CREATE TABLE `disposiciones` (
`Id_disposicion` INT(11) NOT NULL,
`descripcion` LONGTEXT NULL,
`id_tipo` INT(11) NULL DEFAULT NULL,
`id_tipo2` INT(11) NULL DEFAULT NULL,
`revision` INT(11) NULL DEFAULT NULL,
`mostrar` VARCHAR(200) NOT NULL,
`img_cal` VARCHAR(255) NOT NULL,
`keys` LONGTEXT NOT NULL,
PRIMARY KEY (`Id_disposicion`),
FULLTEXT INDEX `numero` (`numero`, `ano`, `descripcion`, `extra1_6`, `extra1_7`)
)
COLLATE='latin1_swedish_ci'
ENGINE=MyISAM;
Y la tabla tipos
CREATE TABLE `tipos` (
`Id_tipo` INT(11) NOT NULL AUTO_INCREMENT,
`nombre` VARCHAR(255) NULL DEFAULT NULL,
`nombre_plural` VARCHAR(255) NULL DEFAULT NULL,
`mostrar` VARCHAR(2) NOT NULL,
PRIMARY KEY (`Id_tipo`)
)
COLLATE='latin1_swedish_ci'
ENGINE=MyISAM
AUTO_INCREMENT=23;
Y la tabla cat_tipos
CREATE TABLE `cat_tipos` (
`id` INT(11) NOT NULL,
`id_cat_tipo` INT(11) NOT NULL,
`mostrar` VARCHAR(2) NOT NULL,
`padre_id` INT(11) NOT NULL,
`orden` INT(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
UNIQUE INDEX `unico` (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM;
y otra tabla categorias
CREATE TABLE `categorias` (
`Id_categoria` INT(11) NOT NULL,
`nombre` VARCHAR(255) NULL DEFAULT NULL,
`mostrar` VARCHAR(2) NOT NULL,
PRIMARY KEY (`Id_categoria`)
)
COLLATE='latin1_swedish_ci'
ENGINE=MyISAM;
La idea es bastante simple:
Buscar "la frase a buscar" en las categorias o subcategorias seleccionadas previamente en un formulario. Donde tienen dos select respetivos, una la de las categorias y cuando un usuario selecciona una categoria, el otro select se posiciona en la subcategoria de esa categoria seleccionada. (espero que se entienda) En esta parte no tengo problema en traer ambas consultas y unirlas en el select. El problema radica en la busqueda.
Bien, yo hice el formulario que traiga las categorias mas las subcategorias de cada categoria.Que traen de la base de datos, mas defini un campo de busqueda para las frases, en esta puse una variable llamda $cadena.
Ya he luchado mucho por el codigo, y me trabo a la hora de buscar algun texto en la tabla.
Expongo aqui mi codigo tal cual lo tengo yo.
Código PHP:
<?
# trayendo los datos de la conexion a la base de datos
include ("./Connections/st.php");
$sano = "SELECT * FROM `categorias` WHERE `mostrar` = 'SI'";
$sano = "SELECT c.*, cat.nombre as nombre, (SELECT COUNT(id) FROM cat_tipos h WHERE h.padre_id = c.id) as subs FROM cat_tipos as c, categorias as cat WHERE padre_id = '0' AND cat.Id_categoria = c.id_cat_tipo order by c.orden asc";
$cat = mysql_query ($sano);
$tre = mysql_num_rows ($cat);
?>
<html>
<head>
<script type="text/javascript">
/*Generando el select*/
function seelctor(idcat) {
switch (idcat) {
<?
$ccase = 0;
while ($tre > $ccase) {
$cat_id = mysql_result ($cat, $ccase,"id")."";
$tipos = mysql_query ('SELECT c.*, cat.nombre_plural as nombre, (SELECT COUNT(id) FROM cat_tipos h WHERE h.padre_id = c.id) as subs FROM cat_tipos as c, tipos as cat WHERE padre_id = "'. $cat_id .'" AND cat.Id_tipo = c.id_cat_tipo');
$cuat=mysql_num_rows ($tipos);
$subc=0;
$scats = "<OPTION VALUE=\"\" SELECTED= \"SELECTED\">Seleccionar una subcategoria</OPTION>";
while ($subc < $cuat) {
/* */
$vsubcat_nom = mysql_result($tipos, $subc, "nombre")."";
$vid_cat_tipo =mysql_result($tipos, $subc, "id_cat_tipo")."";
$scats = $scats."<OPTION VALUE=\"".$cat_id."-".$vid_cat_tipo."\">".$vsubcat_nom."</OPTION>";
/* */
$subc++;
}
echo "case '".$cat_id."': varsel = '".$scats."'; break \n";
$ccase++;
}
?>
default:
varsel = "dd"; break
}
document.getElementById('subcats').innerHTML = varsel;
}
</script>
</head>
<body>
<?
$arracats="";
if ($tre != 0) {
$c =0;
while ($tre > $c) {
$cat_id = mysql_result ($cat, $c,"id")."";
$cat_nom = mysql_result ($cat, $c,"nombre")."";
$arracats = $arracats."<OPTION VALUE=\"".$cat_id."\">".$cat_nom."</OPTION>";
$c++;
}
echo "
<SELECT NAME=\"cates\" ID=\"cates\" onchange=\"javascript: seelctor(this.value);\">\n<OPTION VALUE=\"\" SELECTED= \"SELECTED\">Seleccionar una categoria</OPTION>\n".$arracats."</SELECT>
";
}
else {
echo " mmm , no hay caetegorias";
}
?>
<SELECT NAME="subcats" ID="subcats"></SELECT>
<hr>
<?
#formulario
$cadena = "Nacional"; #CAMPO INPUT
$desdesubcategortia = explode("-","70-4"); #subcats
$categ= $desdesubcategortia[0];
$vid_cat_tipo=$desdesubcategortia[1];
##########################
$textobuscar = "
AND (`numero` LIKE '%".$cadena."%'
OR `ano` LIKE '%".$cadena."%'
OR `descripcion` LIKE '%".$cadena."%'
OR `extra1_1` LIKE '%".$cadena."%'
OR `extra1_2` LIKE '%".$cadena."%'
OR `extra1_3` LIKE '%".$cadena."%'
OR `extra1_6` LIKE '%".$cadena."%'
OR `extra1_7` LIKE '%".$cadena."%'
OR `extra1_8` LIKE '%".$cadena."%'
OR `extra2_1` LIKE '%".$cadena."%'
OR `extra2_2` LIKE '%".$cadena."%'
OR `extra2_3` LIKE '%".$cadena."%'
OR `extra2_4` LIKE '%".$cadena."%'
OR `extra2_5` LIKE '%".$cadena."%'
OR `extra2_6` LIKE '%".$cadena."%'
OR `extra2_7` LIKE '%".$cadena."%'
OR `extra2_9` LIKE '%".$cadena."%'
OR `extra2_10` LIKE '%".$cadena."%'
OR `extra2_11` LIKE '%".$cadena."%'
OR `extra2_12` LIKE '%".$cadena."%'
OR `extra2_13` LIKE '%".$cadena."%'
OR `extra2_14` LIKE '%".$cadena."%'
OR `extra2_15` LIKE '%".$cadena."%'
OR `extra2_17` LIKE '%".$cadena."%'
OR `extra2_18` LIKE '%".$cadena."%'
OR `extra2_19` LIKE '%".$cadena."%'
)";
/* */
$str_cualquier = "
SELECT
d.Id_disposicion as id, CONCAT(d.numero, ' / ', d.ano) as nom, numero, ano, d.extra1_2 as mes
FROM
disposiciones as d,
cat_tipos as ct,
categoriadisposicion cd
WHERE
d.mostrar='SI'
".$textobuscar." LIMIT 100
";
echo "<br>loquesea\n".$str_cualquier."\nloquesea\n<br>";
$mq = mysql_query($str_cualquier);
echo "<br>loquesea\n".mysql_num_rows ($mq)."\nloquesea\n<br>";
?>
</body>
</html>
Estoy intentando dia a dia, y todavia no se mas que puedo hacer. Si alguien tiene algun consejo, o pueda darme una manito, estare infinitamente agradecido.