Foros del Web » Programando para Internet » PHP »

Mostrar dos filas con mismo ID PHP/MySQL

Estas en el tema de Mostrar dos filas con mismo ID PHP/MySQL en el foro de PHP en Foros del Web. Hola amigos, me estoy quedando pelado intentando mostrar la lista de alumnos y los cursos a los que asisten... tengo algo asi: una tabla llamada ...
  #1 (permalink)  
Antiguo 02/03/2013, 21:37
 
Fecha de Ingreso: mayo-2006
Mensajes: 11
Antigüedad: 18 años, 6 meses
Puntos: 0
Pregunta Mostrar dos filas con mismo ID PHP/MySQL

Hola amigos, me estoy quedando pelado intentando mostrar la lista de alumnos y los cursos a los que asisten... tengo algo asi:

una tabla llamada cursoalumnos con los siguientes contenidos:

idalumno | idcurso

a su vez tengo otra tabla llamada cursos que tiene
id | nombre.......| hora...| etc....
---|----------------|---------|--------
1 | Matematica.| 11.30 | .....
2 | Lengua.......| 12.30 | .....
3 | Geografia...| 12.30 | .....
---|----------------|---------|--------

supongamos que el alumno 33548 esta matriculado en Matematica y Lengua
cuando un alumno se registra en un curso, su id se agrega en la tabla cursoalumnos asi tambien como el id del curso

idalumno | idcurso
------------|----------
33548.....| 1.........
------------|----------
33548.....| 2.........
-----------------------

Mi consulta es, como puedo mostrar en mi pagina web php el resultado de la siguiente manera:

Apellido.| nombre | Curso(s)......| ....
-----------|-----------|----------------|--------
Eufrasio | Don......| Matematica |
..............|.............|Lengua........|
-----------|----------|-----------------|--------
  #2 (permalink)  
Antiguo 02/03/2013, 21:55
 
Fecha de Ingreso: mayo-2006
Mensajes: 11
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Mostrar dos filas con mismo ID PHP/MySQL

tengo lo siguiente,

pero me devuelve solo un curso...

$query="SELECT * FROM alumnos ORDER BY Apellido ASC";
$result=mysql_query($query,$conexion) or die("Error: ".mysql_error());
// Si se encuentran los datos desplegamos los resultados
// Si no, avisamos que no se hallaron
if(mysql_num_rows($result) > 0){
echo "";
?><center><table border=1>
<tbody>
<tr>
<td>Apellido</td>
<td>Nombre</td>
<td>Curso</td>

</tr>

<?php

while($Rs=mysql_fetch_array($result)) {
$hora="SELECT * FROM alumnocursos WHERE idalumno = '".$Rs["idalumno"]."' GROUP BY idalumno";
$cursos=mysql_query($hora,$conexion) or die("Error: ".mysql_error());
$crs=mysql_fetch_array($cursos);
$nombrecurso="SELECT * FROM cursos WHERE id = '".$crs["idcurso"]."'";
$ncr=mysql_query($nombrecurso,$conexion) or die("Error: ".mysql_error());
$xrs=mysql_fetch_assoc($ncr);
$asd = "SELECT ALL nombre FROM cursos WHERE idcurso = '".$xrs["idcurso"]."'";
$result2 = mysql_query($asd,$conexion);
$row = mysql_fetch_array($result2);


echo "<tr>".
"<td>".$Rs["Apellido"]."</td>".
"<td>".$Rs["Nombre"]."</td>".
"<td>".$row["nombre"]."</td>".

"</tr>";
}
  #3 (permalink)  
Antiguo 02/03/2013, 22:09
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años, 7 meses
Puntos: 34
Respuesta: Mostrar dos filas con mismo ID PHP/MySQL

Código SQL:
Ver original
  1. SELECT al.apellido, al.nombre, cu.nombre
  2. FROM alumnos al
  3. JOIN cursoalumnos ca ON ca.idalumno = al.id
  4. JOIN cursos cu ON cu.id = ca.idcurso
  5. ORDER BY apellido, nombre

Lo unico que eso te va a repetir los nombres, eso podés controlarlo desde php controlando si es igual al anterior no lo imprimis
  #4 (permalink)  
Antiguo 02/03/2013, 22:38
 
Fecha de Ingreso: mayo-2006
Mensajes: 11
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Mostrar dos filas con mismo ID PHP/MySQL

Cita:
Iniciado por patriciomase Ver Mensaje
Código SQL:
Ver original
  1. SELECT al.apellido, al.nombre, cu.nombre
  2. FROM alumnos al
  3. JOIN cursoalumnos ca ON ca.idalumno = al.id
  4. JOIN cursos cu ON cu.id = ca.idcurso
  5. ORDER BY apellido, nombre

Lo unico que eso te va a repetir los nombres, eso podés controlarlo desde php controlando si es igual al anterior no lo imprimis
perdon la tabla ALUMNOS se llama probando1
  #5 (permalink)  
Antiguo 03/03/2013, 09:33
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años, 7 meses
Puntos: 34
Respuesta: Mostrar dos filas con mismo ID PHP/MySQL

ah bueno y cambiale eso.

Despues para que no repita el nombre lo verificas con un if si es igual anterior no haces el echo, sería algo asi:
Código PHP:
Ver original
  1. <table>
  2. <?php while($row = mysql_fetch_assoc($resultadoDeLaConsulta)):?>
  3. <tr>
  4. <?php if($row['nombre'] != $anterior['nombre'] && $row['apellido'] != $anterior['apellido']):?>
  5. <td><?php echo $row['nombre']?></td><td><?php echo $row['apellido']?></td>
  6. <?php else:?>
  7. <td></td><td></td>
  8. <?php endif;?>
  9. </tr>
  10. <?php
  11. $anterior = $row;
  12. endwhile;?>
  13. </table>

en la primer consulta que te puse tenes que ponerle un alias a una de las 2 columnas porque hay 2 que se llaman "nombre", se hace agregando "as nombrecurso" por ejemplo. Y después lo accedes como $row['nombrecurso'] en el asociativo.
  #6 (permalink)  
Antiguo 03/03/2013, 09:38
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años, 7 meses
Puntos: 34
Respuesta: Mostrar dos filas con mismo ID PHP/MySQL

y tenés que sacar todas esas consultas de adentro del while, va a ser tremendamente lento eso. Lo mas práctico es traer todos los datos en 1 consulta y luego recorres con el while SOLO PARA MOSTRAR, imaginate tener 100 alumnos, tenés 3 consultas dentro del while, vas a consultar la base de datos 300 veces con ese código cuando podes hacerlo todo de una sola vez.
  #7 (permalink)  
Antiguo 03/03/2013, 21:22
 
Fecha de Ingreso: mayo-2006
Mensajes: 11
Antigüedad: 18 años, 6 meses
Puntos: 0
Respuesta: Mostrar dos filas con mismo ID PHP/MySQL

Muchas gracias por tu ayuda patriciomase!! aprecio tu critica y me gusta saber que hay mejores metodos que los metodos trogloditas que yo utilizo, soy bastante nuevo con esto de PHP MySql, asi que todo lo que me digas que es mejor sera bienvenido =)

GRACIAS DE NUEVO!!!



Con el siguiente codigo obtengo el siguiente Error: Table 'prueba.cursoalumnos' doesn't exist:
Código PHP:
Ver original
  1. <?php
  2. // Realizamos la conexión al servidor MySQL
  3. require("../head.php");
  4. require("../conectar.php");
  5.    
  6.  
  7.     $query="SELECT idcurso, nombre, nombre FROM probando1 al
  8. JOIN cursoalumnos ON idalumno = id JOIN cursos cu ON id = idcurso ORDER BY apellido, nombreC";
  9.     $result=mysql_query($query,$conexion) or die("Error: ".mysql_error());
  10.     if(mysql_num_rows($result) > 0){
  11.         echo "";}
  12.             ?>
  13.             <table>
  14. <?php while($row = mysql_fetch_assoc($result)):?>
  15. <tr>
  16. <?php if($row['nombre'] != $anterior['nombre'] && $row['apellido'] != $anterior['apellido']):?>
  17. <td><?php echo $row['nombre']?></td><td><?php echo $row['apellido']?></td>
  18. <?php else:?>
  19. <td></td><td></td>
  20. <?php endif;?>
  21. </tr>
  22. <?php
  23. $anterior = $row;
  24. endwhile;?>
  25. </table>



=/

Etiquetas: arraylist, 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 21:31.