Ver Mensaje Individual
  #4 (permalink)  
Antiguo 02/04/2010, 09:37
Avatar de AnesGy
AnesGy
 
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 15 años, 6 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