Foros del Web » Programando para Internet » PHP »

:: Problema con consulta a BD en un while "

Estas en el tema de :: Problema con consulta a BD en un while " en el foro de PHP en Foros del Web. Bueno lo primero que hago es hacer un select de todos los cursos que tiene a su cargo un tutor X, la respuesta de esa ...
  #1 (permalink)  
Antiguo 09/10/2007, 14:16
Avatar de Javo2k  
Fecha de Ingreso: octubre-2005
Ubicación: San Salvador -El Salvador
Mensajes: 68
Antigüedad: 18 años, 6 meses
Puntos: 0
:: Problema con consulta a BD en un while "

Bueno lo primero que hago es hacer un select de todos los cursos que tiene a su cargo un tutor X, la respuesta de esa consulta me devuelve 2 o mas valores que recojo con el while en una variable $id_curso , pero necesito pasar esos valores del while en otro select en donde me haga una consulta a la tabla cursos donde los valores obtenidos del primer select sean diferentes aqui esta mi codigo

Cita:
$sql_grado = "select id_curso from detalle_materia where id_tutor = '25'" <-- Aqui hago el primer select;
$resul_grado = @mysql_query($sql_grado, $con) or die(mysql_error());
while($row = @mysql_fetch_array($resul_grado)){
$id_curso = $row['id_curso'];<---Aqui guardo el valor de la consulta anterior
$sql_grado1 = "select id_curso,nombre from cursos where id_curso <> '$id_curso'";<----- aqui le paso al select dentro del mismo while el id_curso diferente a los valores obtenidos del primer select
$resul_grado1 = @mysql_query($sql_grado1, $con) or die(mysql_error());
while($gp = @mysql_fetch_array($resul_grado1)){
$idcurso = $gp['id_curso'];
$nombecurso = $gp['nombre'];
Suponiendo que el primer select saca dos valores, los que esperaria que sacara en la otra consulta solo seria 3 (de 5 id_cursos en total) pero lo que me imprime el list/menu HTML que ocupo es los primeros 4 id_cursos menos el primer valor de la primera consulta + otra vez los 4 id_cursos menos el segundo valor de la consulta

asi:



De antemano gracias al que pueda ayudarme o alguna idea de como hacerlo mejor
__________________
sAn SiVar - cUlTuRa cHuPiStIka
  #2 (permalink)  
Antiguo 09/10/2007, 14:27
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Re: :: Problema con consulta a BD en un while "

Y porque no haces todo en un select ??? Algo asi como:

SELECT id_curso,nombre
FROM cursos
WHERE id_curso NOT IN (SELECT id_curso
FROM detalle_materia
WHERE id_tutor = '25')


Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 09/10/2007, 14:34
Avatar de @ndreX!  
Fecha de Ingreso: abril-2007
Mensajes: 161
Antigüedad: 17 años
Puntos: 4
Re: :: Problema con consulta a BD en un while "

Entonces, tus consultas están bien, lo que pasa es que hay información repetida, es la unica logica que se le encuentra.

Si pudieras explicarte más, seria mejor.

R.D Y la mejor forma es como dice Marvin.

Saludos.
  #4 (permalink)  
Antiguo 09/10/2007, 14:50
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Re: :: Problema con consulta a BD en un while "

Javo2k:
Si te entiendo bien, creo esto lo
puedes solucionar utilizando la funcion;
MYSQL_NUM_ROWS()
Saludos
& espero te ayude
Franco
  #5 (permalink)  
Antiguo 09/10/2007, 14:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: :: Problema con consulta a BD en un while "

Si lo que quieres es seleccionar los cursos que no tiene ese tutor, porque no primero haces un select, guardas los cursos en una lista separada por comas, y posteriormente haces el otro select a la tabla de cursos pero usas el operador NOT IN, para que no te seleccione los de esa lista.

Un ejemplo:
Código:
SELECT col1, col2, col3 FROM `tabla` WHERE `idCurso` NOT IN (3, 4, 5)
Saludos.
  #6 (permalink)  
Antiguo 12/10/2007, 23:30
Avatar de Javo2k  
Fecha de Ingreso: octubre-2005
Ubicación: San Salvador -El Salvador
Mensajes: 68
Antigüedad: 18 años, 6 meses
Puntos: 0
Re: :: Problema con consulta a BD en un while "

Ya solucione el problema lo hice con el mysq_num_rows gracias a todos por la ayuda pero hoy tengo otro problema y es que quisiera saber cual seria la mejor forma de hacer un insert de varios datos por ejemplo

Hago mi consulta select en base siempre a parametros la respuesta me devolvera X numero de valores limitados por un LIMIT

Cita:
$sql = "select id_est from alumno where grado = '$curso' and modalidad = '$modalidad' and id_sede = '$id_sede' limit $cantidad";
$result = @mysql_query($sql, $con) or die(mysql_error());
$ano = date(Y);
//Insercion
while ($row = mysql_fetch_assoc($result)) {
$arrayId_est= $row['id_est'];
$sqla = "INSERT INTO detalle_inscripcion (id_est,id_sede,id_curso,id_seccion,id_tutor,id_mo dalidad,estado,ano) values ('$arrayId_est','$id_sede','$curso','$seccion','$i d_tutor','$modalidad','1','$ano')";
$resulta = @mysql_query($sqla, $con) or die(mysql_error());
}
Pero no hace el insert a la tabla de esos X registros alguna idea de como puedo hacerlo ??
__________________
sAn SiVar - cUlTuRa cHuPiStIka
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 07:26.