Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Instruccion Diferente de PHP MySql

Estas en el tema de Instruccion Diferente de PHP MySql en el foro de PHP en Foros del Web. Hola que tal amigos del forosdelweb, soy novato en esta página y no sé si puse el tema en el lugar correspondiente, bueno a lo ...
  #1 (permalink)  
Antiguo 03/08/2013, 02:55
Avatar de Isaac_Calderon  
Fecha de Ingreso: agosto-2013
Ubicación: Chilpancingo
Mensajes: 11
Antigüedad: 10 años, 9 meses
Puntos: 0
Instruccion Diferente de PHP MySql

Hola que tal amigos del forosdelweb, soy novato en esta página y no sé si puse el tema en el lugar correspondiente, bueno a lo que vine. Tengo un detalle con una consulta y es que quiero mostrar los registros(cursos) que están disponibles para el usuario pero sólo mostrar aquellos que no han sido agregados a su lista.

Lo que primero hago es consultar la tabla: curso_alumnos los cursos que esta cursando para después guardarlos en un array luego hago una consulta en la tabla: cursos pero con la instrucción <> (diferente de) y es aquí donde falla mi lógica, ya que en la ultima iteración del for(donde recorro el array) no me muestra la condición que establecí, les muestro mi código:


Código PHP:
$array_curso_id_1 = array(); $y 0;

$resultado_curso_alumnos mysql_query("SELECT * FROM curso_alumnos WHERE perfil_usuario_id=".$id_us$conexion);

while (
$row mysql_fetch_array($resultado_curso_alumnos)) {
    
$array_curso_id_1[$y] = $row['curso_id'];
    
$y++;
}

for (
$i0$i count($array_curso_id_1); $i++) { 
                                    
    
$resultado_cursos_disponibles_1 mysql_query("SELECT * FROM cursos WHERE curso_id != ".$array_curso_id_1[$i], $conexion);
                                    
                                    
         while (
$row mysql_fetch_array($resultado_cursos_disponibles_1)) {
        
$array_curso_id_2[$z] = $row['curso_id'];
        
$z++;
    }
                                    

$array_curso_id_2 es donde guardo los cursos que están disponibles para el usuario y así volver hacer una consulta pero con los datos del $array_curso_id_2. Echenme una mano
  #2 (permalink)  
Antiguo 03/08/2013, 04:15
Avatar de rocha7778  
Fecha de Ingreso: mayo-2013
Ubicación: Cartagena Colombia
Mensajes: 79
Antigüedad: 11 años
Puntos: 1
Respuesta: Instruccion Diferente de PHP MySql

http://www.php.net/manual/es/intro.mysqli.php

actualice, la clase mysql fue reemplazada por mysqli.

y la consulta la puedes hacer directamente no es necesario dos consultas y luego comparar.


si eres muy novato como dices, te recomiendo leer http://www.intercambiosvirtuales.org...-datos-abraham
  #3 (permalink)  
Antiguo 03/08/2013, 10:30
Avatar de Isaac_Calderon  
Fecha de Ingreso: agosto-2013
Ubicación: Chilpancingo
Mensajes: 11
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Instruccion Diferente de PHP MySql

Gracias por la info le echare una leída pero con una consulta no se soluciona mi problema, por ejemplo, en la tabla cursos tengo (curso_id)

1
2
4

Y el usuario esta tomando el curso 4 y1 lo que quiere decir que el curso 2 esta disponible intento solucionarlo con un SELECT... WHERE curso_id <> curso_alumno_id

Que vendría siento 4 y 1 con respectiva iteracion de un for (para recorrer el array de los cursos que ya esta tomando el usuario)

El resultado de la primera vuelta del for es 1 y 2
El resultado de la segunda vuelta es 2 y 4
Por lo que sólo debería mostrar el curso 2 ya que es el que esta disponible

¿como sería la consulta directamente sino sé cuales son los cursos que esta tomado?
  #4 (permalink)  
Antiguo 03/08/2013, 10:38
Avatar de rocha7778  
Fecha de Ingreso: mayo-2013
Ubicación: Cartagena Colombia
Mensajes: 79
Antigüedad: 11 años
Puntos: 1
Respuesta: Instruccion Diferente de PHP MySql

El problema es simple diseño de bd solo tienes dos tablas' te falta una tercera donde se relaciona estudiantes con cursos y es en esa tabla donde tienes que buscar. Solo has el intento.
  #5 (permalink)  
Antiguo 03/08/2013, 11:00
Avatar de Isaac_Calderon  
Fecha de Ingreso: agosto-2013
Ubicación: Chilpancingo
Mensajes: 11
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Instruccion Diferente de PHP MySql

[URL="https://docs.google.com/file/d/0B3c-33NoAEoMdG5jckNmYnFlR2M/edit"]https://docs.google.com/file/d/0B3c-33NoAEoMdG5jckNmYnFlR2M/edit[/URL]

Este es la estructura de las tres tablas contando la tabla de enlace a cursos. ¿Crees que deba cambiarla o así esta bien?
  #6 (permalink)  
Antiguo 03/08/2013, 12:10
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: Instruccion Diferente de PHP MySql

Cita:
quiero mostrar los registros(cursos) que están disponibles para el usuario pero sólo mostrar aquellos que no han sido agregados a su lista.
En realidad tu problema es más de base de datos que otra cosa.
Se resuelve cumpliendo exactamente lo que dices:

Código SQL:
Ver original
  1. SELECT *
  2. FROM cursos
  3. WHERE curso_id NOT IN (SELECT curso_id FROM curso_alumnos WHERE perfil_usuario_id= $usuario);

Tienes que tener en cuenta que cuando necesitas un único resultado de la base de datos, y todas las condiciones se originan en otras consultas a la base, es muy probable que se pueda hacer una única consulta, algo más elaborada, que devuelva lo que necesitas.
Por eso existen los foros de BBDD.

En cuanto al diseño de la base, a menos que muestres el gráfico entero, no se entienden las relaciones, ni tampoco si tiene defectos a corregir.
La próxima vez postea un gráfico integral.
__________________
¿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 03/08/2013, 16:09
Avatar de Isaac_Calderon  
Fecha de Ingreso: agosto-2013
Ubicación: Chilpancingo
Mensajes: 11
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Instruccion Diferente de PHP MySql

Muchas gracias por la ayuda me sirvo demasiado, gnzsoloyo. Te muestro la estructura de la bd para saber si tiene defectos, échale un ojo, porfas.


[URL="https://docs.google.com/file/d/0B3c-33NoAEoMTDFiZ0RUN3dWUEU/edit?usp=sharing"]https://docs.google.com/file/d/0B3c-33NoAEoMTDFiZ0RUN3dWUEU/edit?usp=sharing[/URL]

Una vez más, gracias. :)

Etiquetas: php+bd+mysql
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 16:16.