Foros del Web » Programando para Internet » PHP »

problemas con bucle do

Estas en el tema de problemas con bucle do en el foro de PHP en Foros del Web. lo que pasa es que tengo una tabla con los campos MAIL y TITULO con los siguientes registros: Cita: correo @ dominio.com hola correo @ ...
  #1 (permalink)  
Antiguo 13/06/2009, 16:26
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
problemas con bucle do

lo que pasa es que tengo una tabla con los campos MAIL y TITULO con los siguientes registros:

Cita:
correo @ dominio.com hola
correo @ dominio.com hola1
correo @ dominio.com hola2
correo @ dominio.com hola3
correo @ dominio.com hola4
correo1 @ dominio.com hola4
Tengo el siguiente bucle:

Código PHP:
$aux "";
do 
{
    if (
$aux == $row_select['mail'])
    {
        do
        {
        echo 
$row_select['mail'].'-';
        echo 
$row_select['titulo'].'<br/>';
        }while (
$row_select mysql_fetch_assoc($select));
    }        
    else
    {
    echo 
"envio correo<br/>";
    
$aux $row_select['mail'];
    }
}while (
$row_select mysql_fetch_assoc($select)); 
Pero me imprime esto:

Cita:
envio correo
correo @ dominio.com-Hola1
correo @ dominio.com-Hola2
correo @ dominio.com-Hola3
correo @ dominio.com-Hola4
correo1 @ dominio.com-Hola4
envio correo
Como ven se me esta perdiendo el primer registro ademas de que me sale envio correo dos veces al principio y al final cuando deberia aparecer asi

Cita:
correo @ dominio.com-Hola
correo @ dominio.com-Hola1
correo @ dominio.com-Hola2
correo @ dominio.com-Hola3
correo @ dominio.com-Hola4
envio correo
correo1 @ dominio.com-Hola4
envio correo
Muchas gracias por su ayuda...
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #2 (permalink)  
Antiguo 13/06/2009, 18:29
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: problemas con bucle do

Cita:
while ($row_select = mysql_fetch_assoc($select));
Cita:
while ($row_select = mysql_fetch_assoc($select));
Usas la misma variable $select, y esto avanza el punto, por eso no te trae todos los registros.
Explica que es lo que pretendes con esos 2 bucles, que debe haber una mejor forma de hacerlo.
  #3 (permalink)  
Antiguo 16/06/2009, 18:37
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: problemas con bucle do

Tengo una consulta a la BD y esta tiene todos los registros de una tabla, el campo "mail" esta n cantidad de veces y el campo "titulo" n cantidad de veces como hayan correos, todo esto con ORDER BY "mail".

Quiero que lea el primero e imprima

Cita:
registro1.mail - registro1.titulo1
que lea el segundo y compare con el primero, si el segundo es igual al primero imprima

Cita:
registro2.mail - registro2.titulo2
que lea el tercero y compare con el segundo, si es igual que siga imprimiendo... sino que imprima

Cita:
"fin correos iguales".
que coja el tercero he imprima

Cita:
registro3.mail3 - registro3.titulo3
que coja el cuarto y lo compare con el tercero.... y asi sucesivamente hasta que terminen los registros de la tabla...

Creo que es lo mas claro que puedo ser, disculpen el enredo y gracias por la ayuda...
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #4 (permalink)  
Antiguo 16/06/2009, 18:56
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: problemas con bucle do

Puedes hacer algo como esto:

Código PHP:
<?php
$ultimoCorreo 
"";
while(
$row mysql_fetch_assoc($result)) {
  echo 
$row['correo'];
  if(
$ultimoCorreo != $row['correo']) {
    echo 
"Fin de correos iguales<br />";
  }

  
$ultimoCorreo $row['correo'];
}
?>
Creo que con eso bastara.
  #5 (permalink)  
Antiguo 16/06/2009, 19:18
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: problemas con bucle do

La tabla de pruebas es asi:


MAIL-------------------------------TITULO

mail @ yahoo.com---------------hola1
mail @ yahoo.com---------------hola2
mail @ yahoo.com---------------hola3
mail @ yahoo.com---------------hola4
mail @ yahoo.com---------------hola5
mail @ hotmail.com---------------hola6

Lo hice exactamente igual y mira como me sale:


Cita:
mail @ yahoo.com
Fin de correos iguales
mail @ yahoo.com
mail @ yahoo.com
mail @ yahoo.com
mail @ hotmail.com
Fin de correos iguales
Cuando deberia ser:

Cita:
mail @ yahoo.com
mail @ yahoo.com
mail @ yahoo.com
mail @ yahoo.com
mail @ yahoo.com
Fin de correos iguales
mail @ hotmail.com
Fin de correos iguales
Se me pierde un registro, ademas me imprime el fin de correos iguales mal... que puede pasar ???

GRACIAS POR AYUDARME
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #6 (permalink)  
Antiguo 16/06/2009, 19:27
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: problemas con bucle do

Cambialo por esto:

Código PHP:
<?php
$ultimoCorreo 
"";
while(
$row mysql_fetch_assoc($result)) {
  if(
$ultimoCorreo != $row['correo'] && $ultimoCorreo != "") {
    echo 
"Fin de correos iguales<br />";
  }
  echo 
$row['correo']."<br />";
  
$ultimoCorreo $row['correo'];
}
?>
Happy?
  #7 (permalink)  
Antiguo 16/06/2009, 19:35
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: problemas con bucle do

Ya me da pena la molestadera pero mira lo que me sale:

jotaincubus @ yahoo.com
jotaincubus @ yahoo.com
jotaincubus @ yahoo.com
jotaincubus @ yahoo.com
Fin de correos iguales
jotaincubus @ hotmail.com

me esta botando el primer registro ademas no me imprime el ultimo "Fin de correos iguales" despues del correo de hotmail
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #8 (permalink)  
Antiguo 16/06/2009, 19:50
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: problemas con bucle do

Revisa que no tengas un mysql_fetch_assoc() antes de la llamada al bucle.

Y para que te muestre el ultimo "Fin de correos iguales", ¿porque no solamente imprimirlo al salir del bucle?
  #9 (permalink)  
Antiguo 16/06/2009, 20:22
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: problemas con bucle do

Hermano sos un mago, te debo una... sos grande... gracias por ayudar y compartir tus conocimientos...
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
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 23:23.