Hola, buenos días a todos. Soy un novato en PHP y me incursioné en unos tutoriales que enseñaban unas bases de PHP para luego hacer lo que buscaba: un buscador PHP con base de datos (MySQL) y que dicho buscador tenga la función de autocompletar (mediante Ajax). Estoy aquí porque básicamente no me salió y me gustaría saber qué es lo que tengo mal en el código.
Empecemos desde el principio: tengo hosting de "byethost.com", que soporta PHP y MySQL.
la base de datos que hice de prueba tiene de nombre "taxones", aunque byethost.com me la pone como "b32_17298343_taxones". Es una base de datos sencilla, solo tiene dos columnas ("genero" y "especie") y unas 4 filas con los datos que introduje.
Ahora bien, aquí os paso los códigos:
1) El index.php con el form y el código php:
<?php
include('class.Conexion.php')
if(isset($_POST['buscar'])) {
$db = new Conexion();
$filtro = $db->real_escape_string($_POST['buscar']);
$sql = $db->query("SELECT * FROM taxones WHERE genero LIKE'%$filtro%';");
if($db->rows($sql) > 0 ) {
while ($auto = $db->recorrer($sql)) {
echo $auto['genero'], $auto['especie'];
}
} else {
echo 'No se han encontrado resultados.';
}
} else {
echo '';
}
?>
<!DOCTYPE html>
<html>
<head>
<link href="imagenes/favicon.ico" rel="shortcut icon"/>
<title>Flora montibérica | Herbario Virtual</title>
<link rel="stylesheet" href="css/jquery-ui.min.css"/>
<script src="js/jquery-2.2.0.min.js"></script>
<script src="js/jquery-ui.min.js"></script>
<script>
$('document').ready(function() {
$('#buscar').autocomplete({
source : 'ajax.php'
});
});
</script>
</head>
<body>
<form action="index.php" method="POST"></form>
<label>Buscar:</label><input type="text" name="buscar" id="buscar"></input>
<input type="submit" value="Buscar"></input>
</body>
</html>
2) Lo que tengo dentro de class.Conexion.php
<?php
class Conexion extends mysqli {
public function __construct() {
parent::__construct('localhost','root','b32_172983 43_taxones');
$this->query("SET NAMES 'utf8';");
$this->connect_errno ? die('Error con la conexion') : $x = 'Conectado';
unset($x);
}
public function recorrer($y) {
return mysqli_fetch_array($y);
}
public function rows($y) {
return mysqli_num_rows($y);
}
}
?>
3) lo que tengo de Ajax (que en realidad no lo probé aún, porque no va el buscador):
<?php
include('class.Conexion.php');
class Ajax {
public $buscador;
public function Buscar($a){
$db = new Conexion();
$this->buscador = $db->real_escape_string($a);
$sql = $db->query("SELECT * FROM taxones WHERE genero LIKE'%$this->buscador%';");
while($array = $db->recorrer($sql)){
$resultado[] = $array['genero'];
}
return $resultado;
}
}
$busqueda = new Ajax();
echo json_encode($busqueda->Buscar($_GET['term']));
?>
El problema que me ocurre:
cuando debería verse el buscador:
http://picresize.com/popup.html?images/rsz_112.jpg
se ve solo código (y es cuando introduzco el código php, por eso deduzco qeu debo tener algo mal ahí):
http://picresize.com/popup.html?images/rsz_1.jpg
¡Un saludo gente! ¡Necesito vuestra ayuda!