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

problema con buscador (error en sentencia sql)

Estas en el tema de problema con buscador (error en sentencia sql) en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Que tengo un buscador. que al poner un titulo de una pelicula me da un error de sentencia mysql en php os pongo el codigo ...
  #1 (permalink)  
Antiguo 15/02/2011, 08:56
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 10 meses
Puntos: 1
problema con buscador (error en sentencia sql)

Que tengo un buscador. que al poner un titulo de una pelicula me da un error de sentencia mysql en php os pongo el codigo y lo voy comentando.

1. usando el buscador este me redirecciona a busqueda.php

en busqueda.php tengo el siguiente codigo:
Código PHP:
<?php require_once("../../includes/initialize.php"); ?>
<?php incluir_plantillas
("admin_header.php"); ?>
<?php
    $titulo
=$_POST['busqueda'];
            
    
$search Foto::buscar_por_titulo($titulo);

            
      
?>


<?php
    
foreach($search as $row)
    {
?>
<?php        
        
echo '<div id="mostrarimagen">';
        echo 
'<img src="../images'.$row['archivo'].'" width="130px" height="180px"></img>';    
        echo 
"</div>";
        echo 
"<div id='mostrarpeli'>";
        echo 
"<ul>";
        echo 
"<li><b>Titulo:</b></li>" .$row['titulo']; 
        echo 
"<li><b>año:</b></li>" .        $row['ano']; 
        
        echo 
"<li><b>genero:</b></li>" .$row['genero']; 
        echo 
"<li><b>calidad:</b></li>" .$row['calidad'];
        echo 
"<li><b>idioma:</b></li>" .$row['idioma'];
        
//echo '<li><img src="'.$row['ruta'].'" width="130px" height="180px"></img></li>';
        //echo "<li><b>tipo:</b></li>" .$row['tipo'];
        //    echo "<li><b>size:</b></li>" .$row['size'];
        
echo "<li><b>comentario</b></li>" .$row['comentario'];
        echo 
"</ul>";
        echo 
"</div>";

    }
?>



<?php incluir_plantillas("admin_footer.php"); ?>
como veis tenngo una variable $titulo que recibe el dato $_post del formulario, es decir el campo titulo donde ingreso el titulo de la pelicula a buscar.

luego tengo una variable donde almaceno el resultado de usar la funcion bucar_por_titulo($titulo), esta funciona esta dentro de la clase Foto que esta en otro archivo. os dejo el codigo de la funcion:

Código PHP:
    public static function buscar_por_titulo($titulo)
    {
    global 
$bd;
        return static::
buscar_por_sql(" SELECT titulo , ano , genero , calidad , idioma , comentario FROM " .static::$nombre_tabla.
                                    
" where titulo={$titulo}");
    } 

El fallo de la sentencia mysql está en el where de la sentencia que esta dentro de la funcion.

este es el error que me da el navegador = Unknown column 'perra' in 'where clause'
Ultima consulta sql: SELECT titulo , ano , genero , calidad , idioma , comentario FROM fotos where titulo=perra

por que este error? no me manejo bien con las funciones haber. la funcion la e declarado que tiene un parametro o argumento = $titulo.

y en busqueda.php cuando llamo a la funcion le paso como parametro $titulo y antes de la funcion tengo $titulo=$_POST['busqueda'];

que estoy haciendo mal?
  #2 (permalink)  
Antiguo 15/02/2011, 09:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: problema con buscador (error en sentencia sql)

El problema es que necesitas pasar tu criterio entre comillas simples, ya que es un campo de texto debe de ir entre comillas simples.

Saludos.
  #3 (permalink)  
Antiguo 15/02/2011, 10:59
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: problema con buscador (error en sentencia sql)

ya e puesto las comillas y e modificado el contenido que esta dentro del foreach para solucionar otro error que me ha dado pero ahora no imprime nada solo los titulos de cada campo del array que quiero imprimir. lo tengo ahora asi.

Código PHP:
foreach($search as $row)
            {
    
              echo 
'<div id="mostrarimagen">';
              echo 
'<img src="../images/'.$row->archivo.'" width="130px" height="180px"></img>';    
              echo 
"</div>";
              echo 
"<div id='mostrarpeli'>";
              echo 
"<ul>";
              echo 
"<li><b>Titulo:</b></li>" .$row->titulo
              echo 
"<li><b>año:</b></li>" .        $row->ano
              
              echo 
"<li><b>genero:</b></li>" .$row->genero
              echo 
"<li><b>calidad:</b></li>" .$row->calidad;
              echo 
"<li><b>idioma:</b></li>" .$row->idioma;
              
//echo '<li><img src="'.$row['ruta'].'" width="130px" height="180px"></img></li>';
              //echo "<li><b>tipo:</b></li>" .$row['tipo'];
              //    echo "<li><b>size:</b></li>" .$row['size'];
              
echo "<li><b>comentario</b></li>" .$row->comentario;
              echo 
"</ul>";
              echo 
"</div>";
      
          } 
por que no me imprime nada????
  #4 (permalink)  
Antiguo 15/02/2011, 11:09
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: problema con buscador (error en sentencia sql)

Ejecuta un var_dump($search) para que veas que datos tiene $search.

Saludos.
  #5 (permalink)  
Antiguo 15/02/2011, 11:20
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: problema con buscador (error en sentencia sql)

ya lo he hecho me dice que $search esta vacio!!! entonces es que me falla la funcion buscar_por_titulo() pongo el codigo que usa esta funcion y otros codigos asociados haber si me ayudais con esto.

Código PHP:
    public static function buscar_por_titulo($titulo)
    {
    global 
$bd;
        return static::
buscar_por_sql(" SELECT archivo , titulo , ano , genero , calidad , idioma , comentario FROM " .static::$nombre_tabla.
                                    
" where titulo='{$titulo}'");
    } 


Código PHP:
public static function buscar_por_sql($sql)
    {
        global 
$bd;
        
$resultado $bd->enviar_consulta($sql);
        
$matriz_usuarios = array();
        while(
$registro $bd->fetch_array($resultado))
        {
            
array_push($matriz_usuarios, static::instanciar($registro));
        }
        return 
$matriz_usuarios;
            
    } 

Código PHP:
public function fetch_array($resultado)
    {
        return 
mysql_fetch_array($resultado);
    } 

Código PHP:
    public static function instanciar($registro)
    {
            
$nombre_clase get_called_class();
        
$objeto = new $nombre_clase;
    

        foreach(
$registro as $propiedad => $valor)
        {
        
            if(
$objeto->propiedad_existe($propiedad))
            {
                
$objeto->propiedad $valor;
            }
        }
        return 
$objeto;
    } 
Código PHP:
public function propiedades()
    {
        
$campos_props = array();
        foreach(static::
$campos_tabla as $campo)
        {
            
$campos_props[$campo] = $this->$campo;
        }
        return 
$campos_props;
    } 
  #6 (permalink)  
Antiguo 15/02/2011, 20:24
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: problema con buscador (error en sentencia sql)

Código PHP:
Ver original
  1. public static function buscar_por_titulo($titulo)
  2.     {
  3.     global $bd;
  4.         return static::buscar_por_sql(" SELECT archivo , titulo , ano , genero , calidad , idioma , comentario FROM " .static::$nombre_tabla.
  5.                                     " where titulo='{$titulo}'");
  6.     }

No debería ser self::buscar_por_sql(.....) en vez de static::buscar_por_sql(), lo mismo para el método propiedades en el foreach self::$campos_tabla.

Etiquetas: sentencia, sql, buscadores
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 05:35.