Foros del Web » Programando para Internet » PHP »

SQL/DB Error (Por favor Ayuda!)

Estas en el tema de SQL/DB Error (Por favor Ayuda!) en el foro de PHP en Foros del Web. Hola amigos... Tengo un sitio desarrollado en PHP, y este tiene un buscador. Cuando se hace una busqueda y los resultados son desplegados en mas ...
  #1 (permalink)  
Antiguo 22/10/2004, 10:55
 
Fecha de Ingreso: octubre-2004
Mensajes: 114
Antigüedad: 19 años, 6 meses
Puntos: 0
SQL/DB Error (Por favor Ayuda!)

Hola amigos...

Tengo un sitio desarrollado en PHP, y este tiene un buscador. Cuando se hace una busqueda y los resultados son desplegados en mas de 1 pagina, el link a la segunda pagina me avienta un error asi:

Cita:
SQL/DB Error -- [You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIKE '%%' AND mnl_items.active='yes' GROUP BY]
--------------------------------------------------------------------
Aqui esta el codigo completo del php, por favor alguien sabra el error? Por favor.. alguien que me ayude.


Código PHP:
<?php
// ANIMERATE

// | search.php version history:

// | version 1.0 04/04/2003 

// +----------------------------------------------------------------------+

//



require ( "config.php" );

require ( 
"common.php" );

require ( 
"includes/mysql.php" );

require ( 
"includes/interface.php" );

require ( 
"includes/inc_reviews.php" );

require ( 
"global_config.php" );



global 
$db;

$search $_POST['search'];

$search_type $_POST['search_type']; 



$limit $CONFIG_VAR['num_records_display'];



$page "search";



include_template $CONFIG_VAR['page_header_template'] );



$Prev "Anterior"

$Next "Siguiente"



// This creates the start of the main body table

echo "<!-- Start of main body table -->\n\n";



echo 
"<table width=\"" $CONFIG_VAR['body_width_value'] . "\" align=\"center\" cellspacing=\"0\" border=\"0\" cellpadding=\"0\">\n";

echo 
"<tr>\n";





// This creates the lefthand menu column

include_template $CONFIG_VAR['left_column_template'] );



// This creates the middle table

echo "<!-- Start of middle column -->\n\n";

echo 
"<td valign=\"top\">\n";



// This creates the breadcrumb trail


breadcrumbs$page );

    echo 
"<table class=\"txtwhite\" bgcolor=\"061376\" width=\"96%\"  align=\"center\"  cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"tbodysmall\"><tr><td width=\"25%\">*<b>Titulo</b></td><td   align=\"center\"  width=\"18%\"><b>Calificación y Recomendación</b></td><td align=\"center\" width=\"8%\"><b>No. de Criticas</b></td><td   width=\"45%\"  align=\"center\"><b>Sinopsis</b></td></tR></table>\n";

if ( empty ( 
$offset ) ) 

    { 

    
$offset 0

    } 



$query "SELECT mnl_items.item_id, 

                mnl_items.item,

                mnl_items.cat_id,

                mnl_items.sub_cat_id,

                mnl_items.description,

                mnl_items.item_url,

                mnl_items.url_click_through,

                mnl_items.cost,

                mnl_items.config_field_1,

                mnl_items.config_field_2,

                mnl_items.config_field_3,

                mnl_items.config_field_4,

                mnl_items.config_field_5,

                mnl_items.config_field_6,

                mnl_items.config_field_7,

                mnl_items.config_field_8,

                Count( mnl_reviews.review_id ) AS number_reviews,

                IF(Avg( mnl_reviews.review_score ),Avg( mnl_reviews.review_score ),0) AS average_score,

                SUM( mnl_reviews.review_score ) AS total_scores

                FROM mnl_items 

                LEFT JOIN mnl_reviews ON mnl_items.item_id = mnl_reviews.item_id AND mnl_reviews.active='yes'

                WHERE mnl_items." 
$search_type " LIKE '%$search%' AND mnl_items.active='yes' 

                GROUP BY mnl_items.item, mnl_items.item_id"
;



$result $db->get_results $query );

$num_rows $db->num_rows;



if ( 
$num_rows )

    {        

    
// run the query again with the limiter

    
$query .= " LIMIT " $offset "," $limit;

    
$result $db->get_results $query );

    foreach ( 
$result as $val )

        {

        
$cat_id $val->cat_id;

        
$sub_cat_id $val->sub_cat_id;

        
item_summary "summary"$val->item_id$val->item$val->description$val->item_url$val->url_click_through$val->cost,  $val->number_reviews$val->average_score$val->total_scores$val->config_field_1,  $val->config_field_2,  $val->config_field_3,  $val->config_field_4$val->config_field_5,  $val->config_field_6,  $val->config_field_7,  $val->config_field_8 );

        }

    }

else

    {

    
print_message "No se encontro ninguna " $CONFIG_VAR['item_type'] . " en nuestra base de datos""Por favor regrese con su navegador." );

    die;    

    }



$pages intval $num_rows/$limit ); 

$url "<a href=\"search.php?search=" $search "&sort=" $sort;



if ( 
$num_rows $limit

    { 

    
$pages++; 

    } 



echo 
"<table width=\"80%\" border=\"0\" cellpadding=\"5\" cellspacing=\"1\" align=\"center\">\n";

echo 
"<tr>\n";

echo 
"<td class=\"mnlpagination\" align=\"center\">Página \n";





for ( 
$i 1;$i <= $pages;$i++ ) 

    { 

    
$newoffset=$limit*($i-1); 

    echo 
$url "&offset=" $newoffset "\">$i</a>\n"

    } 





if ( 
$offset 

    { 

    
$prevoffset $offset $limit

    echo 
$url "&offset=" $prevoffset "\">$Prev</a>\n"

    } 





if ( 
$num_rows > ( $offset $limit ) ) 

    { 

    
$nextoffset $offset $limit

    echo 
$url "&offset=" $nextoffset "\">$Next</a>\n"

    } 



echo 
"</tr>\n";

echo 
"</table>\n";



//This creates the main menu along the bottom of the main column

bottom_menu"yes" );



echo 
"</td>\n";

echo 
"<!-- End of middle column -->\n\n";



// This creates the right hand menu column

include_template $CONFIG_VAR['right_column_template'] );



// This ends the main body table

echo "</tr>\n";

echo 
"</table>\n";



//This creates the page footer

include_template $CONFIG_VAR['page_footer_template'] );

?>
  #2 (permalink)  
Antiguo 22/10/2004, 11:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Podrías hacer un echo a tu $query y ver si la sentencia SQL que ahí verás es lo que esperas .. sobre todo con respecto a $search_type tome el valor que se espera.

Un saludo,
  #3 (permalink)  
Antiguo 22/10/2004, 11:19
 
Fecha de Ingreso: octubre-2004
Mensajes: 114
Antigüedad: 19 años, 6 meses
Puntos: 0
Hola.. gracias por la respuesta. Te cuento que en verdad soy novato. Este sistema lo hizo una persona que amablemente me lo paso y me ayudaba en soporte. Yo soy aprendiz muy basico de php, apenas y he podido modificarle ciertas cosillas mas que nada de diseño. A lo que voy es que necesito ayuda mas especifica, en pocas palabras me podrias ayudar paso a paso?

Gracias
  #4 (permalink)  
Antiguo 23/10/2004, 21:46
 
Fecha de Ingreso: octubre-2004
Mensajes: 114
Antigüedad: 19 años, 6 meses
Puntos: 0
Ayuda por favor
  #5 (permalink)  
Antiguo 24/10/2004, 21:10
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Justo acabo de responder a un problema similar en la web del Paginator... y lo más probable es que se trate de algo similar aquí.
Tu script de búsqueda utiliza paginación para poder mostrar los resultados en varias páginas.... Hay algunos valores que se generan en el formulario y los tienes que leer como $_POST['search']... pero a las siguiente páginas que ya no son generadas desde el formulario, sino desde enlaces (anterior, siguiente) esos valores llegan por URL, por lo que tendrás que recogerlos como $_GET['search'].
Tienes al menos dos maneras de resolver esto:
Primera:
Código PHP:
// En lugar de $search = $_POST['search'] pones:
if(isset($_POST['search'])){
  
$search $_POST['search'];
}else{
  
$search $_GET['search'];
}

// O lo que es lo mismo con el operador ternario:
$search = isset($_POST['search'])?$_POST['search']:$_GET['search']; 
.
Segunda forma
Código PHP:
// En lugar de $search = $_POST['search'] pones:
$search $GLOBALS['search']; 
.
Recomendable la primera forma (aunque en este caso no existe mucha diferencia). Deberás hacer lo mismo con todas las variables $_POST que necesites utilizar en todas las páginas que se generan.

Saludos
  #6 (permalink)  
Antiguo 25/10/2004, 10:47
 
Fecha de Ingreso: octubre-2004
Mensajes: 114
Antigüedad: 19 años, 6 meses
Puntos: 0
Pues no... no funciona aun. Hice y reemplace lo que me recomendaste y nada :(

Lo estare haciendo mal? porfavor ayuda
  #7 (permalink)  
Antiguo 25/10/2004, 11:40
 
Fecha de Ingreso: octubre-2004
Mensajes: 114
Antigüedad: 19 años, 6 meses
Puntos: 0
Sigo obteniendo el error al avanzar a la siguiente pagina:

SQL/DB Error -- [You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIKE '%pelicula%' AND mnl_items.active='yes' ]
  #8 (permalink)  
Antiguo 25/10/2004, 21:46
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Bueno... La verdad es que no tengo ni idea de cómo maneja los errores esa clase que tienes de acceso a mysql... pero por lo menos ya se lee la variable $search ... hiciste lo mismo con las otras variables que pasas por POST??? ('search_type' por ejemplo??)..

Si ya lo hiciste... entonces tendrás que revisar que el SQL se genere correctamente en todas las páginas.
Pon esta línea al final:
Código PHP:
die("<br />El SQL generado es : <b>$query</b>"); 
En todas las páginas debe ser igual... simplemente debe cambiar el primer número del LIMIT.

Saludos
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 07:23.