Foros del Web » Programando para Internet » PHP »

Haciendo Buscador de PHP con MYSQL, ayuda plis.

Estas en el tema de Haciendo Buscador de PHP con MYSQL, ayuda plis. en el foro de PHP en Foros del Web. hola amigos foreros, weno aqui nuevamente pidiendoles ayuda, estoy haciendo mi pagina web personal, y en la seccion del menu Musica-lista de material estoy haciendo ...
  #1 (permalink)  
Antiguo 02/04/2010, 00:07
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 14 años, 11 meses
Puntos: 0
Sonrisa Haciendo Buscador de PHP con MYSQL, ayuda plis.

hola amigos foreros, weno aqui nuevamente pidiendoles ayuda, estoy haciendo mi pagina web personal, y en la seccion del menu Musica-lista de material estoy haciendo un buscador para buscar entre 250 registros aprox. buscar por artista; atra vez de un cuadro de texto y me muestre los resultados en una mismo archivo o nose acepto sugerencias... amigos....

Lo quiero hacer de la manera q funciona foros torrents, donde se muestran todos registros luego cuando buscas alguna material te muestra los resultados...weno basicamente qiero q haga la busqueda luego se adicionan los detalles...aqui ya avance un poco

www.vision-web.tk o vision-web.webcindario.com

Codigo:

Código PHP:
   <?php 
// conectar al servidor 
 
include("conexiones.php");
// varificamos que el formulario halla sido enviado 
if(isset($_GET['buscar']) && $_GET['buscar'] == 'Buscar'){ 
    
$frase addslashes($_GET['frase']); 
    
// hacemos la consulta de busqueda 
    
$sqlBuscar mysql_query("SELECT id, artista, detalle, FROM material WHERE artista=$frase"$connect) or die(mysql_error());
    
$totalRows mysql_num_rows($sqlBuscar); 
    
// Enviamos un mensaje 
    // indicando la cantidad de resultados ($totalRows) 
    // para la frase busada ($frase) 
    
if(!empty($totalRows)){ 
        echo 
stripslashes("<p>Su b&uacute;squeda arroj&oacute; <strong>$totalRows</strong> resultados para <strong>$frase</strong></p>");         
        
// mostramos los resultados 
        
while($row mysql_fetch_array($sqlBuscar)){ 
        echo 
'<tr>';
        echo 
'<td>'.$row["id"].'</td>';  
        echo 
'<td>'.$row["artista"].'</td>';
        echo 
'<td>'.$row["detalles"].'</td>';
        echo 
'<td>'.$row["fuente"].'</td>';
        echo 
'<td>'.$row["duracion"].' Minutos</td>';
        echo 
'</tr>';
        
        } 
    } 
    
// si se ha enviado vacio el formulario 
    // mostramos un mensaje del tipo Oops...! 
    
elseif(empty($_GET['frase'])){ 
        echo 
"Debe introducir una palabra o frase."
    } 
    
// si no hay resultados 
    // otro mensaje del tipo Oops...! 
    
elseif($totalRows == 0){ 
        echo 
stripslashes("Su busqueda no arrojo resultados para <strong>$frase</strong>"); 
    } 

?> 
        
          <form id="form1" name="buscar" method="get" action="<?php $_SERVER['PHP_SELF'?>">
            <p>Buscar 
              <input type="text" name="frase" id="frase" value="<?php echo $_GET['frase']; ?>"/>
              
              <input type="submit" name="enviar" id="button" value="Buscar!" />
            </p>
          </form>
    
          
         
       <table cellspacing="0" cellpadding="0" width="101%">
        <tr>
          <th width="4%" class="lefthead">N&ordm;</th>
          <th width="18%">Banda \ Solista</th>
          <th width="55%">Lugar, Fecha</th>
          <th width="10%">Fuente</th>
          <th width="13%" class="righthead">Duraci&oacute;n</th>
        </tr>         
 <?php
    
include("conexiones.php");

    
//hacemos las consultas
    
$result=mysql_query("select * from material"$connect);
    
$tregistros=mysql_num_rows($result);

 while(
$row=mysql_fetch_array($result))
   {
echo 
'<tr>';
echo 
'<td>'.$row["id"].'</td>';  
echo 
'<td>'.$row["artista"].'</td>';
echo 
'<td>'.$row["detalles"].'</td>';
echo 
'<td>'.$row["fuente"].'</td>';
echo 
'<td>'.$row["duracion"].' Minutos</td>';
echo 
'</tr>';
}
mysql_free_result($result);
 
 
?>
el codigo de la primera parte la cogi de los aportes de php...pero no me funciona....a ver si alguien me hecha una mano

salu2
  #2 (permalink)  
Antiguo 02/04/2010, 04:36
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 14 años, 11 meses
Puntos: 19
Respuesta: Haciendo Buscador de PHP con MYSQL, ayuda plis.

No entiendo nada de lo que dices. No es por molestar, pero sólo veo frases inconexas y un sistema de buscador pero no entiendo lo que dices de como quieres que sea el buscador.
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it
  #3 (permalink)  
Antiguo 02/04/2010, 08:32
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Haciendo Buscador de PHP con MYSQL, ayuda plis.

Cita:
Iniciado por AnesGy Ver Mensaje
No entiendo nada de lo que dices. No es por molestar, pero sólo veo frases inconexas y un sistema de buscador pero no entiendo lo que dices de como quieres que sea el buscador.
plop, weno amigo solo mira este link http://vision-web.webcindario.com/material.php , ay un buscador como veras un cuadro de texto, y 10 registros y lo que quiero hacer es un buscador por Artista donde por ejemplo escriba Coldplay y solo me aparescan Coldplay, se entiende ? weno espero, y weno todo lo qiero hacer en un mismo archivo o weno nose acepto alguna otra idea...

gracias
  #4 (permalink)  
Antiguo 02/04/2010, 09:37
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 14 años, 11 meses
Puntos: 19
Respuesta: Haciendo Buscador de PHP con MYSQL, ayuda plis.

Ah un buscador normal. Vale, pensé k pedías algo especial:

Eso se hace con MySQL.

Necesitas 2 cosas: un programa que muestre resultados (en PHP y que muestre HTML), y un programa que saque los resultados (preguntándole a la base de datos).

El único medio complicado es el que saque los datos y se hace de la siguiente manera:

Supongamos que tenemos una tabla MySQL tal que:

miTabla:
  • id
  • nombre
  • artista
  • album
  • anyo

Entonces queremos los registros con el artista "Coldplay" entonces buscamos:

Código:
SELECT                 --> Selecciona
*                      --> todos los los campos (columnas)
FROM                   --> de
`miTabla`              --> la tabla miTabla
WHERE                  --> donde
`artista` = 'Coldplay' --> el artista sea Colplay
ORDER BY               --> y ordénalos por
id`;                   --> id
Código MySQL:
Ver original
  1. SELECT * FROM `miTabla` WHERE `artista` = 'Coldplay' ORDER BY `id`;

Pero esto sólo te devuelve los registros que tengan en Artista 'Coldplay' no devolviéndote los registros que ponga 'COLDPLAY' (depende del cifrado y creo que del tipo de tabla) ni tampoco 'Colplay y Guns and Roses'.

Para eso usamos LIKE '% ... %', % se llama wildchar (equivale a lo que sea).

Código MySQL:
Ver original
  1. SELECT * FROM `miTabla` WHERE `artista` LIKE '%Coldplay%' ORDER BY `id`;

Habría que refinar más el algoritmo por que también te devolvería AColdplay, pero bueno, eso lo tienes que buscar mas a fondo en la página de MySQL.


Entonces, imaginemos que queremos permitir búsqueda por Artista, y por Nombre (añadir mas es cuestión de pensarlo un segundo), entonces necesitamos un formulario talque:

Código HTML:
Ver original
  1. <form action="" method="post">
  2. Buscar:
  3. <input type="text" value="Buscar..." name="aBuscar"/>
  4.  por
  5. <select name="aDonde">
  6.  <option value="nombre">Canción</option>
  7.  <option value="artista">Artista</option>
  8. </select>
  9. <input type="submit" value="¡Buscar!" name="aEnviar"/>
  10. </form>

Notese que en <option value="nombre">Canción</option> nombre es el nombre de la columna, y Canción es el concepto. Allí podrías poner Perros mojados a la parrilla y seguiría funcionando.

Ahora te toca interpretar los datos, y eso tienes que currártelo un poco (no es complicado). Lo que tienes que enviar a la base de datos para obtener el resultado es:

Código PHP:
Ver original
  1. mysql_query("SELECT * FROM `miTabla` WHERE `".$_POST['aDonde']."` = '".$_POST['aBuscar']."' ORDER BY `id`;",$link);


Ahora bien, te queda arreglar una serie de fallos que tiene el sistema base:
  • Se puede usar el Firebug para cambiar los datos enviados por POST y buscar los resultados de forma extraña. Es decir este código es ligeramente vulnerable a sufrir XSS (Cross Site Scripting), o sea, que no es muy seguro. Esto lo tienes que trabajar tú.
  • El problema que indiqué antes que devuelve cualquier artista que contenga Coldplay en ella.
  • Es un sistema muy básico, quizás debes mejorarlo un poco.


Espero que te sirva esto, por que creo que me lo he currado bastante XD.
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it

Última edición por AnesGy; 02/04/2010 a las 09:57
  #5 (permalink)  
Antiguo 02/04/2010, 10:15
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Haciendo Buscador de PHP con MYSQL, ayuda plis.

gracias amigo, si es la idea basica de como hacerlo y de hecho q funcionara, dime pero esto se puede hacer en un solo archivo archivo ?... o como lo has pensando..la idea seria que al presionar el boton enviar recien se active esta busqueda(o funcione), y mostrar estos resultados no necesariamente con ajax ojo; talves solo redirrecionandolo a otro archivo php y devolviendo el resultado pero ahi si nose como hacer eso :( , pq como ves al cargar la pagina al comienzo carga todos los datos y weno nose pienso yo que talves podria haber algun error.....

salu2
  #6 (permalink)  
Antiguo 02/04/2010, 10:26
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 14 años, 11 meses
Puntos: 19
Respuesta: Haciendo Buscador de PHP con MYSQL, ayuda plis.

Cita:
talves solo redirrecionandolo a otro archivo php y devolviendo el resultado pero ahi si nose como hacer eso :( , pq como ves al cargar la pagina al comienzo carga todos los datos y weno nose pienso yo que talves podria haber algun error.....
Si sabes PHP, y Javascript, pero los sabes muy bien (es decir que eres un gurú), entonces metete con AJAX. Si no dejalo como está. No pierde nada tu sitio por recargar la página. Y eso que dices de cargar otro PHP devovliendo el resultado se llama AJAX.
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it
  #7 (permalink)  
Antiguo 02/04/2010, 11:06
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Haciendo Buscador de PHP con MYSQL, ayuda plis.

Cita:
Iniciado por AnesGy Ver Mensaje
Si sabes PHP, y Javascript, pero los sabes muy bien (es decir que eres un gurú), entonces metete con AJAX. Si no dejalo como está. No pierde nada tu sitio por recargar la página. Y eso que dices de cargar otro PHP devovliendo el resultado se llama AJAX.
ey amigo AnesGy ya me salio y en un solo archivo, con la idea que me diste del query, modifique algunas cosas del codigo, pero me gustaria que me ayudaras un poco lo que me gustaria hacer es que en el query buscara las coicidencias en los campos: artista y detalles ? como haria eso, seria algo asi :

$sqlBuscar = mysql_query("SELECT * FROM material where artista,detalles like '%$frase%'", $connect) or die(mysql_error());

salu2
  #8 (permalink)  
Antiguo 02/04/2010, 11:10
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 14 años, 11 meses
Puntos: 19
Respuesta: Haciendo Buscador de PHP con MYSQL, ayuda plis.

creo que eso no funciona, nunca lo he probado pero :

SELECT * FROM `material` WHERE `artista` LIKE '%$frase%' AND `detalles` LIKE '%$frase%'
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it
  #9 (permalink)  
Antiguo 02/04/2010, 12:32
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Haciendo Buscador de PHP con MYSQL, ayuda plis.

Cita:
Iniciado por AnesGy Ver Mensaje
creo que eso no funciona, nunca lo he probado pero :

SELECT * FROM `material` WHERE `artista` LIKE '%$frase%' AND `detalles` LIKE '%$frase%'
hola amigo, pues puse esa consulta y no resulta, en todo caso buscare mas en google a fondo sobre esto....ahora mas bien amigo qiero agregarle otro formulario para que busque a los artistas pero por medio de un combobox y haga el mismo resultado, me podrias decir la forma de hacerlo te agredeceria bastante...

gracias...
  #10 (permalink)  
Antiguo 02/04/2010, 13:13
 
Fecha de Ingreso: abril-2010
Mensajes: 7
Antigüedad: 14 años
Puntos: 0
Respuesta: Haciendo Buscador de PHP con MYSQL, ayuda plis.

Espero le sirva...

<html>
<head>
</head>
<body>
<ul class="navbar">
<li><a href="busc_pru.php">Buscar Musica</a>
<li><a href="enlaces.html">Enlaces</a>
</ul>


<a href="<?php echo $_SERVER['PHP_SELF']; ?>">Buscador </a>

<form name="buscar" action="<?php $_SERVER['PHP_SELF'] ?>" method="get">
Buscar:
<input type="text" size="20" value="<?php echo $_GET['frase']; ?>" name="frase" />
<input type="submit" name="buscar" value="Buscar" />
</form>
<p>
<?php
// conectar al servidor

$server_link = mysql_connect("localhost", "usuario", "pass");
if(!$server_link){
die("Fall&oacute; la Conexi&oacute;n ". mysql_error());
}
// seleccionamos la base de datos
$db_selected = mysql_select_db("base_de_datos", $server_link);
if(!$db_selected){
die("No se pudo seleccionar la Base de Datos ". mysql_error());
}
// varificamos que el formulario halla sido enviado
if(isset($_GET['buscar']) && $_GET['buscar'] == 'Buscar'){
$frase = addslashes($_GET['frase']);
// hacemos la consulta de busqueda


$sqlBuscar = mysql_query("SELECT nombreruta,artista, titulo
FROM musica
where nombreruta
like '%$frase%' or artista
like '%$frase%' ", $server_link)
or die(mysql_error());
$totalRows = mysql_num_rows($sqlBuscar);
// Enviamos un mensaje
// indicando la cantidad de resultados ($totalRows)
// para la frase busada ($frase)
if(!empty($totalRows)){
echo stripslashes("<p>Su b&uacute;squeda arroj&oacute; <strong>$totalRows</strong> resultados para <strong>$frase</strong></p>");
// mostramos los resultados

//echo "<strong><a href='#'>$row[Titulo]</a>:</strong> <em>Coincidencias: ". round($row['coincidencias']) ."</em><br />";

/* Desplegamos cada uno de los registros dentro de una tabla */
echo "<table border=3 cellpadding=4 cellspacing=0>";

/*Priemro los encabezados*/
echo "<tr>
<th colspan=1> Lista de Musica </th>
<tr>
<th> Direccion Descarga </th>
</tr>";

/*Y ahora todos los registros */

while($row = mysql_fetch_array($sqlBuscar)){
echo "<tr>
<td> $row[nombreruta] </td>
</tr>";
}
echo "</table>";
}
}
// si se ha enviado vacio el formulario
// mostramos un mensaje del tipo Oops...!
elseif(empty($_GET['frase'])){
echo "Debe introducir Artista o Conción.";
}
// si no hay resultados
// otro mensaje del tipo Oops...!
elseif($totalRows == 0){
echo stripslashes("Su busqueda no arrojo resultados para <strong>$frase</strong>");
}

?>
</p>
<p>&nbsp; </p>
<address>Creada el 15 de marzo de 2010<br>
</address>

</body>
</html>
  #11 (permalink)  
Antiguo 02/04/2010, 14:21
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 14 años, 11 meses
Puntos: 19
Respuesta: Haciendo Buscador de PHP con MYSQL, ayuda plis.

No se que versión tienes de MySQL, quizás tengas que cambiar AND por &&. De todas maneras las cosas nunca no funcionan, sino que devuelven un fallo, bien sea 0 resultados o bien sea un error MySQL. mysq_error devuelve el error MySQL, y si no hay error pero no hay resultados entonces se están devolviendo 0 resultados.

Indicame cual de estos son.
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it
  #12 (permalink)  
Antiguo 02/04/2010, 15:08
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Haciendo Buscador de PHP con MYSQL, ayuda plis.

Cita:
Iniciado por AnesGy Ver Mensaje
No se que versión tienes de MySQL, quizás tengas que cambiar AND por &&. De todas maneras las cosas nunca no funcionan, sino que devuelven un fallo, bien sea 0 resultados o bien sea un error MySQL. mysq_error devuelve el error MySQL, y si no hay error pero no hay resultados entonces se están devolviendo 0 resultados.

Indicame cual de estos son.
Hola amigo weno te comento la version que tengo aqui localmente del MYSQL es la 5.1.36 , y al hacer la consulta me devuelve 0 resultados.....

y eh puesto la consulta de esta manera:

$sqlBuscar = mysql_query("SELECT * FROM material WHERE artista LIKE '%$frase%' AND detalles LIKE '%$frase%'", $connect) or die(mysql_error());

salu2
  #13 (permalink)  
Antiguo 02/04/2010, 15:24
 
Fecha de Ingreso: mayo-2009
Mensajes: 94
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Haciendo Buscador de PHP con MYSQL, ayuda plis.

Cita:
Iniciado por wigamu Ver Mensaje
Espero le sirva...

$sqlBuscar = mysql_query("SELECT * FROM material where detalles like '$frase%' or artista like '%$frase%' ", $server_link) or die(mysql_error());
loteria amigo resulto tu forma gracias ¡¡¡ y era como se muestra arriba

Amigo y para que me reconosca igual cuando haga la busqueda con MAyuscula o Minuscula ? osea cuando escriba una palabra en minuscula en el cuadro de texto y en el resultado de la busqueda me aparescan resultados con coicidencias de mayusculas y minusculas, q tengo q agregar a esta consulta.....

gracias

Etiquetas: mysql, plis, 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 15:38.