Foros del Web » Programando para Internet » PHP »

Problema con registros duplicados

Estas en el tema de Problema con registros duplicados en el foro de PHP en Foros del Web. Buenas hermanos tengo una duda. La cuestion es la sigueinte estoy realizando en mi pagina educativa (educacionytecnologia.com.ve) el apartado de profesores. En este apartado le ...
  #1 (permalink)  
Antiguo 19/03/2010, 21:50
 
Fecha de Ingreso: febrero-2010
Mensajes: 16
Antigüedad: 14 años, 2 meses
Puntos: 0
Problema con registros duplicados

Buenas hermanos tengo una duda.


La cuestion es la sigueinte estoy realizando en mi pagina educativa (educacionytecnologia.com.ve) el apartado de profesores.

En este apartado le doy la capacidad al docente de enviarle correos a los alumnos que el mismo seleccione, ahora cada alumno al suscribirse en la pagina selecciona las materias que desea consultar, por otro lado la institucion le coloca al profesor las materias que el da dentro de la institucion, cabe destacar que varios profesores pueden estar asociados a varias instituciones, y varios alumnos a varias instituciones, ok prosigo.

Al momento de hacer la seleccion de los alumnos a los cuales enviarles el correo me da un error, salen nombres duplicados, no porque esten varias veces dentro de la base de datos, si no que puede que el query que realizo este haciendo varios ciclos trayendo valores duplicados se los pongo a continuacion:

Código PHP:
<?php
    session_start
();
    
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Envio de Correos</title>
<style type="text/css">
<!--
.Estilo1 {color: #FFFFFF}
.Estilo2 {color: #FFFFFF; font-weight: bold; }
.Estilo3 {font-size: 18px}
-->
</style>
</head>

<body bgcolor="#660000">
    <p align="center" class="Estilo1"><strong>Bienvenido Profesor.</strong></p>
    <p align="center" class="Estilo1"><strong>Recuerde colocar correctamente los datos a fin de evitar conflictos.</strong></p>
    <p align="center" class="Estilo2 Estilo3">Formulario de envio de Correo.</p>
<p align="center" class="Estilo2 Estilo3">Por Favor seleccione a los usuarios que desee enviar el correo</p>
<p align="center" class="Estilo2 Estilo3">_____________</p>

    
    <table width="501" border="2" align="center">
    
      
         <tr>
      <tr>
         <p align="center" class="Estilo1"><strong>Seleccione los usuarios a los que desee enviar el correo con la informacion </strong><strong></strong></p>

         
         <tr>
        
<br>
<p align="center" class="Estilo2 Estilo3">Solicitudes de Alumnos</p>

<th><span class="Estilo1">Nombre del Alumno</span></th>
<th><span class="Estilo1">Cedula</span></th>
<th><span class="Estilo1">Institucion a la que pertenece</span></th>

<th><span class="Estilo1">Seleccione el alumno</span></th>

        <?PHP
        $db
mysql_connect ("""","");
            if (!
$db)
            {
            echo 
"Error al conectar con la base de datos";
            exit;
            }

        
// Seleccionar Usuarios!!!!!!!!!!
        
$usuario$_SESSION['usuario'];

    
//Verificar el usuario que esta logeado.........
    //echo "$usuario";
        
        
mysql_select_db ("eductecn_sistema");
        
$consulta5"SELECT * FROM profesores where usuariop='$usuario'"
        
$resultado5mysql_query($consulta5);
        while (
$fila5mysql_fetch_array($resultado5))
        {
                    
                    
$rif$fila5[1];
                    
                    
        } 
        
        
//verificar el usuario en la tabla materiasx profesor. Esta tabla contiene las materias asociadas al profesor, esta accion la hace la institucion a la que pertenezcan.

        
mysql_select_db ("eductecn_sistema");
        
$consulta1"SELECT * FROM materiasxprofesor where usuariop='$usuario'"
        
$resultado1mysql_query($consulta1);
        while (
$fila1mysql_fetch_array($resultado1))
        {
        
                
                                
// De la consulta anterior traigo el codigo de la materia asociado al profesor logeado y lo comparo con la tabla de materiasxalumno en donde estan las materias seleccionadas por los alumnos al inscribirse

                    
mysql_select_db ("eductecn_sistema");
                    
$consulta2"SELECT * FROM materiasxalumno where cod_materia='$fila1[1]'"
                    
$resultado2mysql_query($consulta2);
                    while (
$fila2mysql_fetch_array($resultado2))
                    {
                    
                        
//De la consulta anterior traigo el usuario asociado a las materias seleccionadas, y lo comparo con la tabla usuarioa para traer sus datos personales todo esto se realiza para verificar la direccion de correo electronico que es lo que se encuentra mas abajo en el checkbox.
            
                            
mysql_select_db ("eductecn_sistema");
                            
$consulta3"SELECT Distinct usuarioa FROM alumnos where usuarioa= '$fila2[2]'"
                            
$resultado3mysql_query($consulta3);
                            
$columysql_num_fields($resultado3);
                            
$filasmysql_num_rows($resultado3);
                    
        





//consulta para los valores
while ($fila3mysql_fetch_array($resultado3))
{
//echo "$fila3[4]";
echo "<form name='f1'  action='correoenviado.php' method='POST'>";

        for(
$i=$filas;$i<=$filas;$i++)
         {
            echo
"<tr>";
                        
                    for(
$x=0;$x<=3;$x++)
                        {
                        echo 
"<td> <font color='white'> $fila3[$x]"
                        if (
$x==3)
                        {
                        echo
"<label>";
                                        
                                           
//aqui coloco la direccion de correo electronico es  a lo que corresponde el $fila3[4] que se encuentra debajo. ahora al momento de yo traer esa consulta por ejemplo un alumno me sale dos veces en la tabla, seguramente es un problema con los while que me recomiendan hacer? saludos :D.
                        
echo"<input type='checkbox' name='correo[]' value='$fila3[4]'>";
                        
                        echo
"</label>";
                        }
                    
                        echo
"</td>";
                        }
            
            echo 
"</tr>";
        }
        
 }
 }
 }
        
        
?> 



        </td>
      </tr>
</table>
    <div align="center"></div>
<table border="1" align="center" bgcolor="#660000">
<tr>
        <td bordercolor="#FFFFFF"><span class="Estilo1"><strong>Ingrese el Asunto del Correo que desea enviar.</strong></span></td>
    <td><input type="text" name="asunto"></td>
</tr>
<tr>
        <td bordercolor="#FFFFFF"><span class="Estilo1"><strong>Aqui puede colocar el mensaje del correo que desea enviar.</strong></span></td>
<td><label>
          <textarea name="cuerpo" id="textarea" cols="45" rows="5"></textarea>
        </label></td>
</tr>

 
      
      <tr>
        <td bordercolor="#FFFFFF"><input type="reset" name="borrar" id="button" value="Borrar Contenido"></td>
        <td><input type="submit" name="registrar" id="button2" value="Enviar"></td>
      </tr>
    </table>
    
</form>
<p align="left" class="Estilo2">&nbsp;</p>
</body>
</html>

Última edición por luisinho69; 19/03/2010 a las 21:59
  #2 (permalink)  
Antiguo 19/03/2010, 22:13
 
Fecha de Ingreso: febrero-2010
Mensajes: 16
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Problema con registros duplicados

Disculpen el doble post a ver si me hago entender mejor en la consulta al realizarla debe ser culpa de los while, pero aparece esto:


Cita:
Nombre del Alumno Cedula Institucion a la que pertenece Seleccione el alumno
Alexander 20.998.329 J-2134566-2 233-65-43
Alexander 20.998.329 J-2134566-2 233-65-43
Ese alumno selecciono dos materias y es por eso que aparece dos veces, puesto que aparece dos veces en la tabla de materiasxalumno, se les ocurre alguna manera de evitar esto? saludos
  #3 (permalink)  
Antiguo 19/03/2010, 22:16
 
Fecha de Ingreso: diciembre-2008
Mensajes: 69
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Problema con registros duplicados

Creo que tu problema pasa por utilizar while.
Prueba utilizando simplemente

Código PHP:
$fila1mysql_fetch_array($resultado1); 
y quitando el while, que creo que multiplica los registros una vez que empiezas a enviar mensajes.

Te sugiero que termines la consulta de bases de datos al final del código.

Contame tus resultados. Saludos.
  #4 (permalink)  
Antiguo 19/03/2010, 22:19
 
Fecha de Ingreso: diciembre-2008
Mensajes: 69
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Problema con registros duplicados

Bueno, me ganaste con la respuesta...

Para tu pregunta, ¿no podría ampliarse la consulta a la base de datos y colocar AND como criterio del WHERE?

Saludos.
  #5 (permalink)  
Antiguo 19/03/2010, 22:26
 
Fecha de Ingreso: febrero-2010
Mensajes: 16
Antigüedad: 14 años, 2 meses
Puntos: 0
Muchas gracias por tu respuesta amigo, mira la cuestion es esta, se ve poco estetico para el profesor tener que ver usuarios duplicados esto tal vez es culpa del while estoy seguro, la cuestion es que si no utilizo el while estoy frito, puesto que son varios registros que hay que leer, en la consulta de la tabla alumnos, he utilizado el AND, colocando como filtro la cedula y el rif, y sin embargo me sigue trayendo ambos datos, es irritante jejejeje pero se que debe ser alguna cuestion con los while hermano tendras alguna otra idea de hacer este tipo de consultas?

Lo unico que necesito saber de los alumnos es el correo, pero para poder llegar ahi, tengo que compaarar al profesor loggeado con la tabla materiasxprofesor esto debido a que cada profesor da diferentes materias, saco el codigo de materias y lo comparo con el de materiasxalumnos esto ya que al menos deben tener una materia asociada a un profesor, y luego de ahi saco al usuario del alumno y lo comparo con la tabla de alumnos donde se encuentra su usuario y de ahi saco el correo alguna sugerencia de como podria optimizar este proceso

Lo pude solucionar acomodando el primer while donde consulto el profesor loggeado, aun sigo depurando a ver si da errores ya os comentare :D

Sigo con el mismo error amigos, al cerrar el primer while solo traigo el primer registro de la materia asociada al profesor y no me sirve la ida es leer todas las materias y compararlas con los alumnos para saber cuales estan asociados y eso :(

Última edición por GatorV; 21/03/2010 a las 13:32

Etiquetas: duplicados, registros
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 05:20.