Recientemente me he puesto a revisar un código de Ajax que encontré hace tiempo en una web que combinaba PHP con MySql y aunque para algunas consultas funciona pefectamente en otras no me muestra nada.
El problema es el siguiente estoy intentando hacer una base de datos de películas, la tabla películas tendra Id como clave principal: int (11) y aparte de eso tiene los siguientes campos:
- Titulo_original: varchar(80) y utf8_general_ci
- Titulo varchar(80) y utf8_general_ci
- Director varchar(80) y utf8_general_ci
- Pais varchar(80) y utf8_general_ci
- Anio int(11)
- Duración int (11)
- Interpretestext y utf8_general_ci
- Sinopsis text y utf8_general_ci
- Portada varchar(50) y utf8_general_ci
El caso es que hay varios archivos que conforman el autossugest. Así que intentaré explicar lo que me falla poniendo un par de ejemplos.
En el caso de que yo intente buscar películas por titulo en mi base de datos la consulta funciona perfectamente y nada más poner la primera letra me va mostrando una lista con todas las películas que comienzen por esa letra y su director debajo, según voy acotando más la búsqueda, la lista se va acortando.
El problema lo tengo si en lugar de buscar películas que empiecen por una letra busco directores en la base de datos, se que tendría que usar SELECT DISTINCT para que lso directores que tienen más de una película no aparezcan varias veces pero he probado de las 2 formas y no hay manera de que salga nada.
El archivo de autosuggest.php es éste:
Código PHP:
<!-- AJAX AUTOSUGGEST SCRIPT -->
<script type="text/javascript" src="lib/ajax_framework.js"></script>
<style type="text/css">
/* ---------------------------- */
/* CUSTOMIZE AUTOSUGGEST STYLE */
#search-wrap input{width:400px; font-size:16px; color:#999999; padding:6px; border:solid 1px #999999;}
#results{width:260px; border:solid 1px #DEDEDE; display:none;}
#results ul, #results li{padding:0; margin:0; border:0; list-style:none;}
#results li {border-top:solid 1px #DEDEDE;}
#results li a{display:block; padding:4px; text-decoration:none; color:#000000; font-weight:bold;}
#results li a small{display:block; text-decoration:none; color:#999999; font-weight:normal;}
#results li a:hover{background:#FFFFCC;}
#results ul {padding:6px;}
</style>
<div id="search-wrap">
<h1>Search with Auto Suggest</h1>
<input name="search-q" id="search-q" type="text" onkeyup="javascript:autosuggest()"/>
<div id="results"></div>
</div>
Código PHP:
<?php
include('config.php');
$SQL_FROM = 'peliculas';
$SQL_WHERE = 'Titulo';
$searchq = strip_tags($_GET['q']);
$getRecord_sql = 'SELECT * FROM '.$SQL_FROM.' WHERE '.$SQL_WHERE.' LIKE "'.$searchq.'%"';
$getRecord = mysql_query($getRecord_sql);
if(strlen($searchq)>0){
echo '<ul>';
while ($row = mysql_fetch_array($getRecord)) {?>
<li><a href="#"><?php echo $row['Titulo_original']; ?> <small><?php echo $row['Titulo'];
echo '</small></a></li>';
}
echo '</ul>';
}
?>
Código PHP:
<?php
include('config.php');
$SQL_FROM = 'peliculas';
$SQL_WHERE = 'Director';
$searchq = strip_tags($_GET['q']);
$getRecord_sql = 'SELECT DISTINCT Director FROM '.$SQL_FROM.' WHERE '.$SQL_WHERE.' LIKE "'.$searchq.'%"';
$getRecord = mysql_query($getRecord_sql);
if(strlen($searchq)>0){
echo '<ul>';
while ($row = mysql_fetch_array($getRecord)) {
echo '<li><a href="#">';
echo $row['Director'];
echo "</a></li>";
}
echo '</ul>';
}
?>
Este es el archivo de selección de la base de datos config.php
Código PHP:
<?php
$db_host="localhost";
$db_name="peliculas";
$username="root";
$password="root";
$db_con=mysql_connect($db_host,$username,$password);
$connection_string=mysql_select_db($db_name);
mysql_connect($db_host,$username,$password);
mysql_select_db($db_name);
mysql_query('SET NAMES utf8');
?>