Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Duda de consulta en CodeIgniter

Estas en el tema de Duda de consulta en CodeIgniter en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola saludos, espero postear en el lugar correcto, ando trabajando en una pagina hecha toda en codeigniter y tengo un problema bastante grande... Me la ...
  #1 (permalink)  
Antiguo 06/02/2015, 10:25
 
Fecha de Ingreso: octubre-2013
Mensajes: 13
Antigüedad: 10 años, 6 meses
Puntos: 0
Pregunta Duda de consulta en CodeIgniter

Hola saludos, espero postear en el lugar correcto, ando trabajando en una pagina hecha toda en codeigniter y tengo un problema bastante grande...

Me la dieron para que la estudiara toda (ni conocia el framework) y que mejorara el buscador principal, fue un show entender donde estaba el codigo de buscar y a donde los manda.... el problema es el siguiente.

Al buscar por ejemplo faros me muestra todos los faros de todos los modelos de choches, pero si pongo faros de astra me muestra los faros de astra y todos los demas que son de otros modelos y cosas de astra que ni son faros :S...

Ya llevo 1 semana estudiando metodos para hacer consultas anidadas, optimizar el buscador, ver opciones de plugins pero esta ultima no se puede porque el servidor no es compatible, solo tengo como opcion ver la forma de optimizar la consulta directamente en el codigo pero no me da el coco para lograrlo, no se si me puedan dar ideas...

Dejo parte del codigo y si necesitan alguna otra parte se las agrego...

Form en la vista...

Cita:
<form method="post" class="navbar-form navbar-left" role="search" id="menu-busqueda" action="<?= base_url() ?>autopartes/">
<div class="form-group">
<input type="text" class="form-control" id="sinonimos" name="sinonimos" required="required" placeholder="Buscar parte">
</div>
<input type="submit" class="btn btn-default" id="buscar" name="buscar" value="Buscar" onsubmit="field_empty();">
</form>

Consulta en el modelo
Cita:
public function obtenerDetalles($idAutoparte)
{
$this->db->select('*');
$this->db->from('autopartes2');
$this->db->where('idAutoparte',$idAutoparte);
$resultado = $this->db->get();

if($resultado->num_rows() == 1)
{
return $resultado->result();
}

return false;
}

public function obtenerListaConsultaPersonalizada($datosConsulta, $numInicial, $numMostrar){
$ids = array();
$final_ids = array();
$sinonimos = array();
$sinonimos = explode(" ", $datosConsulta["sinonimos"]);
$query = '';

var_dump($sinonimos);
echo (count($sinonimos));

if(count($sinonimos) == 1){
$this->db->select('*');
$this->db->from('autopartes2');

$query .= 'anio LIKE "%'.$sinonimos[0].'%"';
$query .= ' OR tipo LIKE "%'.$sinonimos[0].'%"';
$query .= ' OR marca LIKE "%'.$sinonimos[0].'%"';
$query .= ' OR vehiculo LIKE "%'.$sinonimos[0].'%"';
$query .= ' OR sinonimos LIKE "%'.$sinonimos[0].'%"';
}
else{
for($i = 0; $i<count($sinonimos); $i++){
$this->db->select('idAutoparte');
$this->db->from('autopartes2');

$query = 'anio LIKE "%'.$sinonimos[$i].'%"';
$query .= ' OR tipo LIKE "%'.$sinonimos[$i].'%"';
$query .= ' OR marca LIKE "%'.$sinonimos[$i].'%"';
$query .= ' OR vehiculo LIKE "%'.$sinonimos[$i].'%"';
$query .= ' OR sinonimos LIKE "%'.$sinonimos[$i].'%"';


$this->db->where($query);
$this->db->limit($numInicial,$numMostrar);
$resultado = $this->db->get();
echo $resultado->num_rows();
if($resultado->num_rows() > 0 && $i < 4){
foreach ($resultado->result() as $autoparte) {
array_push($ids, $autoparte->idAutoparte);
}
}

$resIds = array_count_values($ids);
foreach ($resIds as $key => $value) {
if($value >= 0){
array_push($final_ids, $key);
}
}
}
$this->db->select('*');
$this->db->from('autopartes2');
$query = $final_ids[0].",";
for($j = 1; $j < count($final_ids)-2; $j++){
$query .= $final_ids[$i].",";
}
$query .= $final_ids[count($final_ids)-1];
$this->db->where_in('idAutoparte', $query);

$this->db->limit($numInicial,$numMostrar);

$resultado = $this->db->get();

if($resultado->num_rows() > 0){
return $resultado;
}

return false;
}

$this->db->where($query);

$this->db->limit($numInicial,$numMostrar);

$resultado = $this->db->get();

if($resultado->num_rows() > 0)
{
return $resultado;
}

return false;
}
De antemano muchas gracias.

Etiquetas: codeigniter, consultas+mysql, php+base+de+datos
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 12:52.