Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Buscar en base de datos

Estas en el tema de Buscar en base de datos en el foro de PHP en Foros del Web. Hola a todos, tengo una duda, quiero poner una foto por ejemplo un auto, y ponerle tres etiquetas para que sea buscada. ejem. auto,coche,motor. Pense ...
  #1 (permalink)  
Antiguo 16/12/2013, 15:14
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Buscar en base de datos

Hola a todos, tengo una duda, quiero poner una foto por ejemplo un auto, y ponerle tres etiquetas para que sea buscada.
ejem.
auto,coche,motor.

Pense en hacer 3 campos en la base de datos, campo1, campo2, campo3,

Esta bien hacerlo asi?.

Y de hacerlo asi como seria el select?

"select from fotos where camp1=$busqueda1 camp2=$busqueda1,camp3=$busqueda1,

algo asi seria??..
saludos y gracias. a todos
fede
  #2 (permalink)  
Antiguo 16/12/2013, 15:23
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Buscar en base de datos

¿Si sabes que para hacer consulta de SQL se utiliza un lenguaje llamado SQL verdad?

Bueno, pues la consulta que planteas está mal escrita.

Te sugiero leer una referencia de SQL, porque tu problema no es de código PHP mientras no sepas redactar consultas SQL apropiadamente.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 16/12/2013, 16:38
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Respuesta: Buscar en base de datos

Hola.! se que esta mal escrito, pero solo encuentro de busquedas de sistintas tablas con distintos campos, yo en una tabla quiero buscar en 3 campos...


yo lo que quiero saber si es buena practica en hacer tres busquedas en 3 campos, y no en uno solo

en uno solo me imagino que quedarian las tres palabras pegadas sin espacios.. en 3 campos distintos si no esta en uno esta en otro, y si no esta en ninguno chau no hay resultado...
estara bien ?

Saludos a todos
fede

  #4 (permalink)  
Antiguo 17/12/2013, 05:26
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Buscar en base de datos

La búsqueda numérica en campos indexados es infinitamente más rápida que la búsqueda con cadenas.

Crea una tabla llamada "etiquetas", con sólo dos columnas: "id" autoincremental y "nombre", que es un varchar de ¿30?, según la longitud máxima que pueden tener tus etiquetas.

Luego, si la tabla que necesita asignarle tags a cada fila se llama "articulos", crea otra tabla llamada "articulos_tags" con dos campos, ambos ID, que serán "id_articulo" y "id_etiqueta".

Así tienes tres ventajas: Tienes las tablas normalizadas, puedes meter a cada artículo tantas etiquetas como necesites, y por último, las consultas de buscar artículos por etiqueta son mas rápida.
  #5 (permalink)  
Antiguo 17/12/2013, 07:09
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, 5 meses
Puntos: 2658
Respuesta: Buscar en base de datos

Cita:
Iniciado por fedefrankk Ver Mensaje
Hola.! se que esta mal escrito, pero solo encuentro de busquedas de sistintas tablas con distintos campos, yo en una tabla quiero buscar en 3 campos...


yo lo que quiero saber si es buena practica en hacer tres busquedas en 3 campos, y no en uno solo

en uno solo me imagino que quedarian las tres palabras pegadas sin espacios.. en 3 campos distintos si no esta en uno esta en otro, y si no esta en ninguno chau no hay resultado...
estara bien ?

Saludos a todos
fede

¿Buena práctica?
No existe una buena práctica que te diga que se busca en un único campo o en tres o en quince. Eso depende de la estructura de la tabla y las necesidades de la consulta.
Si tienes tres campos sobre los que debes establecer condiciones de busqueda, pues se ponen los tres campos. De eso no hay dudas.
Lo que si debes considerar son las condiciones que evalúas, en cuanto a si son datos obligatorios al mismo tiempo, o son opcionales, si dos son obligatorios y otro opcional o bien si son interexcluyentes. Y eso sólo lo puedes decir tu, en base a tu propio esquema lógico.

Lo que si te podemos anticipar es que la consulta que propones está mal escrita, porque las condiciones en un WHERE no se separan con comas, sino con operadores lógicos como AND y OR. Y además el SELECT no está indicando el campo o conjunto de campos que quieres recuperar de la tabla.
Por favor, lee un manual básico de SQL antes de seguir adelante.

Ahora bien, supongamos que todas son condiciones obligatorias:
Código SQL:
Ver original
  1. SELECT *
  2. FROM fotos
  3. WHERE camp1=$busqueda1
  4. AND camp2=$busqueda1
  5. AND camp3=$busqueda1

Todos son opcionales:
Código SQL:
Ver original
  1. SELECT *
  2. FROM fotos
  3. WHERE camp1=$busqueda1
  4. OR camp2=$busqueda1
  5. OR camp3=$busqueda1

Dos obligatorios y uno opcional:
Código SQL:
Ver original
  1. SELECT *
  2. FROM fotos
  3. WHERE camp1=$busqueda1
  4. OR (camp2=$busqueda1
  5. AND camp3=$busqueda1)
(hay otras formas)

Y finalmente, un caso raro: Sólo uno puede ser TRUE:
Código SQL:
Ver original
  1. SELECT *
  2. FROM fotos
  3. WHERE camp1=$busqueda1
  4. XOR camp2=$busqueda1
  5. XOR camp3=$busqueda1
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 17/12/2013, 07:11
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta Respuesta: Buscar en base de datos

Hola,
Si entendi bien, lo hago y por cualquier cosa que falle podre preguntarte de nuevo.?

se agradece la info

saludos
fede

Etiquetas: select
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 01:36.