Foros del Web » Programando para Internet » PHP »

Buscar en un array en la BD

Estas en el tema de Buscar en un array en la BD en el foro de PHP en Foros del Web. Hola! Que tal? Tengo una tabla en la BD donde cargo Profesores. Existe un campo 'materias' en el que se guardan los id de las ...
  #1 (permalink)  
Antiguo 09/09/2010, 13:34
Avatar de fakulicious  
Fecha de Ingreso: mayo-2008
Ubicación: Mendoza
Mensajes: 140
Antigüedad: 16 años
Puntos: 2
Pregunta Buscar en un array en la BD

Hola! Que tal?

Tengo una tabla en la BD donde cargo Profesores. Existe un campo 'materias' en el que se guardan los id de las materias a las que está asignado ese profesor. Por ejemplo:

6,10,12

Lo que necesito ahora es buscar los profesores que aplican a cierta materia.

La prueba que hice fue esta:

Código PHP:

$idMateria 
$_POST['idMateria'];

$consulta mysql_query("SELECT * FROM profesores WHERE materias LIKE '%".$idMateria."%'"$link); 

Pero cuando le envié el id 2, me seleccionó también las que tienen el id 12 asignado, porque encontró el 2.

Cómo puedo hacer para buscar en cada uno de los id que están en el campo 'materias' pero enteros, no por partes?

Espero que alguien me pueda ayudar.

Muchas gracias. Saludos.
__________________
Facundo
http://www.creactivo.com.ar

Última edición por fakulicious; 09/09/2010 a las 13:36 Razón: Error de tipeo.
  #2 (permalink)  
Antiguo 09/09/2010, 13:39
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 9 meses
Puntos: 70
Respuesta: Buscar en un array en la BD

Sin like.

Iguala = o usa IN

Código PHP:
Ver original
  1. $idMateria = $_POST['idMateria'];
  2.  
  3. $consulta = mysql_query("SELECT * FROM profesores WHERE materias IN ($idMateria)", $link);  
  4. //si le pasas el string 6,12,10

Si estás seguro que siempre enviarás un sólo dato, pues no uses IN, iguala:

Código PHP:
Ver original
  1. $idMateria = $_POST['idMateria'];
  2. $consulta = mysql_query("SELECT * FROM profesores WHERE materias=$idMateria", $link);  
  3. //si sólo le pasas un número

Saludos.
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #3 (permalink)  
Antiguo 09/09/2010, 14:08
Avatar de fakulicious  
Fecha de Ingreso: mayo-2008
Ubicación: Mendoza
Mensajes: 140
Antigüedad: 16 años
Puntos: 2
Respuesta: Buscar en un array en la BD

Carxl, gracias por responder.

Pero lo que pasa es que, si bien SIEMPRE le paso un solo valor, en el campo de la BD puede haber uno o varios.

Por ejemplo:

campo 'materias' -> 6,10,12

Si igualo, tendría que pasarle la cadena exacta (6,10,12) para que me devuelva ese resultado. Pero yo lo que hago es pasarle UN valor, y quiero que me devuelva todos los registros que tienen ese valor en alguno de los valores del campo materias.

De todas formas probé con IN e igualando, y no funciona. Solo me devuelve los registros que tienen en primer lugar el valor que envío. En este caso, el 6.
__________________
Facundo
http://www.creactivo.com.ar
  #4 (permalink)  
Antiguo 09/09/2010, 17:18
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 9 meses
Puntos: 70
Respuesta: Buscar en un array en la BD

Pues entonces manda la cadena si te entendí bien.

Pasa la cadena con las materias no? 6,12,10 y así te arrojará todos los profesores que dictan esas materias.

Saludos.

PDT: Creo que tu problema es más de consulta que de php. Sí es así ve al foro de MySql
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #5 (permalink)  
Antiguo 09/09/2010, 17:26
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 2 meses
Puntos: 20
Respuesta: Buscar en un array en la BD

Lo que fakulicious tiene es una DB tal que así:

NOMBRE PROFESOR | ASIGNATURAS
Manolo-----------------6,10,12
Juan ------------------- 8,11,12
Pepe ------------------- 4,12,15

Y lo que pide es encontrar, por ejemplo, todos los profesores que impartan la asignatura 12.

A mí también me interesa saber cómo se hace.
  #6 (permalink)  
Antiguo 09/09/2010, 17:33
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 9 meses
Puntos: 70
Respuesta: Buscar en un array en la BD

Gracias por la aclaración david_M_G.

Entiendo. Lo dicho, es más por base de datos que por php. Al menos para hacerlo óptimo.

Saludos.
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #7 (permalink)  
Antiguo 13/09/2010, 10:25
Avatar de fakulicious  
Fecha de Ingreso: mayo-2008
Ubicación: Mendoza
Mensajes: 140
Antigüedad: 16 años
Puntos: 2
Respuesta: Buscar en un array en la BD

En el foro de MySQL me dieron la solución:

SELECT campo1, campo2 FROM tutabla WHERE FIND_IN_SET(valorbuscado, nombrecampo)>0;

Y me dejaron este link para ver más:
http://www.forosdelweb.com/f86/busqu...-comas-732797/

Lo probé y funcionó perfecto! Muchas gracias por la ayuda de siempre! ;)
__________________
Facundo
http://www.creactivo.com.ar

Etiquetas: bd
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 00:48.