Foros del Web » Programando para Internet » PHP »

Buscador en web php y base Mysql

Estas en el tema de Buscador en web php y base Mysql en el foro de PHP en Foros del Web. Chicos estoy haciendo un buscador para mi web con php y mysql (la idea es que arroje resultados de mi base de datos) Pero al ...
  #1 (permalink)  
Antiguo 17/05/2015, 09:49
Avatar de cleaner86  
Fecha de Ingreso: septiembre-2013
Ubicación: Santiago
Mensajes: 20
Antigüedad: 10 años, 7 meses
Puntos: 0
Información Buscador en web php y base Mysql

Chicos estoy haciendo un buscador para mi web con php y mysql (la idea es que arroje resultados de mi base de datos)

Pero al realizar una busqueda solo me arroja el mensaje "NO HAY RESULTADOS EN LA BBDD"


Alguien me puede ayudar??

Les dejo el codigo.



NOTA; En el string ""SELECT * FROM episode_writers WHERE status = 1 AND nombre LIKE ?"; ... tambien he probado poniendo "FROM nombre_de_tabla" y nada



Mi base de datos es asi:

Nombre : simpsons_information
Tablas : episode_writer (tengo 5 tablas pero solo pondre una como ejemplo)
dentro de "epsode_writer": id, episode_writer, id_writer, creation_datetime, status.


y la tabla la he creado asi:

CREATE TABLE episode_writer(

id INTEGER PRIMARY KEY AUTO_INCREMENT,

id_episode INTEGER NOT NULL REFERENCES episode(episode_number),
id_writer varchar(255) NOT NULL REFERENCES writer(name),
creation_datetime TIMESTAMP NOT NULL DEFAULT NOW(),

status INTEGER NOT NULL DEFAULT 1
);








Código PHP:

<?php  // Primero definimos la conexión a la base de datos 
define ('HOST_DB''localhost'); //Nombre del host, nomalmente localhost 
define ('USER_DB''root'); //Usuario de la bbdd 
define ('PASS_DB''pass'); //Contraseña de la bbdd 
define ('NAME_DB''simpsons_information'); //Nombre de la bbdd  


// Definimos la conexión 
function conectar(){ 
global 
$conexion//Definición global para poder utilizar en todo el contexto 
$conexion mysql_connect(HOST_DBUSER_DBPASS_DB
or die (
'NO SE HA PODIDO CONECTAR AL MOTOR DE LA BASE DE DATOS'); 
@
mysql_select_db(NAME_DB
or die (
'NO SE ENCUENTRA LA BASE DE DATOS ' NAME_DB); 

function 
desconectar(){ 
global 
$conexion
mysql_close($conexion); 
}  
//Variable que contendrá el resultado de la búsqueda 
$texto ''
//Variable que contendrá el número de resgistros encontrados 
$registros '';  
if(
$_POST){  

$busqueda trim($_POST['buscar']);  
$entero 0;  
if (empty(
$busqueda)){ 
$texto 'Búsqueda sin resultados';
}else{ 
// Si hay información para buscar, abrimos la conexión 
conectar(); 
mysql_set_charset('utf8'); // para indicar a la bbdd que vamos a mostrar la info en utf  
//Contulta para la base de datos, se utiliza un comparador LIKE para acceder a todo lo que contenga la cadena a buscar 
$sql "SELECT * FROM * WHERE status = 1 AND nombre LIKE ?";  
$resultado mysql_query($sql); 
//Ejecución de la consulta 
//Si hay resultados... 
if (@mysql_num_rows($resultado) > 0){  
// Se recoge el número de resultados 
$registros '<p>HEMOS ENCONTRADO ' mysql_num_rows($resultado) . ' registros </p>'
// Se almacenan las cadenas de resultado 
while($fila mysql_fetch_assoc($resultado)){  
$texto .= $fila['provincia'] . '<br />'
}  

}else{ 
$texto "NO HAY RESULTADOS EN LA BBDD";

// Después de trabajar con la bbdd, cerramos la conexión (por seguridad, no hay que dejar conexiones abiertas)

mysql_close($conexion); 


?> 
<!DOCTYPE html> 
<html lang="es-ES"> 
<head>  
<meta charset='utf-8'> 
<head>  
<body> 
<h1>Buscador <a href="simpsons.php" title="Simpsons" target="_self">Simpsons</a></h1>  
<form id="buscador" name="buscador" method="post" action="<?php echo $_SERVER['PHP_SELF'?>">  
<input id="buscar" name="buscar" type="search" placeholder="Buscar aquí..." autofocus > 
<input type="submit" name="buscador" class="boton peque aceptar" value="buscar"> 
</form> 
<?php  
// Se muestran los resultados de la consulta, número de registros y contenido. echo 
$registros
echo 
$texto;  
?> 
</body> 
</html>

Última edición por cleaner86; 17/05/2015 a las 09:57 Razón: mas info
  #2 (permalink)  
Antiguo 17/05/2015, 11:04
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Buscador en web php y base Mysql

Tienes errores de construcción a nivel PHP, y de control de errores y excepción.

Esos puntos son OFF TOPIC en los foros de Base de Datos.

Movido a PHP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 17/05/2015, 16:13
 
Fecha de Ingreso: mayo-2015
Ubicación: Medellín
Mensajes: 33
Antigüedad: 8 años, 11 meses
Puntos: 1
Respuesta: Buscador en web php y base Mysql

Bueno, creo que se puede deber a que usas LIKE, esta busca la palabra tras y como la escribes, ejemplo:

"Mi novia es muy guapa"
Y tu buscas:
"novia guapa" con tu uscador van a dar 0 resultados te aconsejo utilizar
MATCH AGAINST

porque este es mucho mejor al buscar "novia guapa" este si lo encontraria... pues busca palabra por palabra independientemente de su ubicacion, cosa contraria de lo que pasa con LIKE...
  #4 (permalink)  
Antiguo 17/05/2015, 16:38
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Buscador en web php y base Mysql

El problema no es el LIKE, sino que está armando mal el llamado a la función.
Ni siquiera está bindeando la variable, sin dejar de mencionar que Cómo esconde los warnings y errores de la pésima forma del uso de "@", no hay modo que sepa qué está funcionando mal...

Al menos depura un poco el código antes de realizar la consulta a la base.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 17/05/2015, 18:05
Avatar de cleaner86  
Fecha de Ingreso: septiembre-2013
Ubicación: Santiago
Mensajes: 20
Antigüedad: 10 años, 7 meses
Puntos: 0
Información Respuesta: Buscador en web php y base Mysql

Ok, lo que pasa es que no llevo ni 1 mes programando y la verdad es que entiendo muy poco por ahora... me podrian ayudar con el codigo?
  #6 (permalink)  
Antiguo 17/05/2015, 18:44
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Buscador en web php y base Mysql

Ya te di dos tips.
¿Lo revisaste?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 18/05/2015, 06:24
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Buscador en web php y base Mysql

Vamos a ver si se entienden ahora mis observaciones. No pude antes porque estaba respondiendo desde el celular...

Código PHP:
$sql "SELECT * FROM * WHERE status = 1 AND nombre LIKE ?";  
$resultado mysql_query($sql); 
Muy bonito, pero ¿cómo supones que PHP puede llegar a saber que debe reemplazar el "?" por el contenido de "$busqueda"?
En ese contexto debe usar mysqli_stmt_bind_param(), pero ese no se usa con la librería de acceso a datos a MySQL llamada MYSQL (la que usas), sino con la MySQLI.

Otra opción sería usar sptintf(), pero no aplica "?", sino "%".

Código PHP:
if (@mysql_num_rows($resultado) > 0){ 
Ok, ¿para qué crees que sirve ese "@"?
Desde ya te lo digo: Oculta cualquier aviso de error o warning, por lo que al ponerlo es imposible saber si dio error, y de haberlo dado tampoco se recuperan los codigos y mensajes.

NUNCA uses eso, es una pésima práctica, propia de malos aprendices y peores profesores. Y menos que menos en etapa de desarrollo, donde necesitas ver los errores.

¿Se entiende?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 18/05/2015, 19:52
Avatar de cleaner86  
Fecha de Ingreso: septiembre-2013
Ubicación: Santiago
Mensajes: 20
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Buscador en web php y base Mysql

te lo agradezco

Etiquetas: bases-de-datos-general, bd, buscador, conexion, local, mysql, select, server, sql
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 02:11.