Foros del Web » Programando para Internet » PHP »

Separar usuarios por coma y los 2 ultimos por "y"

Estas en el tema de Separar usuarios por coma y los 2 ultimos por "y" en el foro de PHP en Foros del Web. Hola, que tal? Estoy teniendo problemas a la hora de mostrar la lista de usuarios separados por coma (",") y que el penultimo y ultimo ...
  #1 (permalink)  
Antiguo 22/09/2011, 13:21
Avatar de morfasto  
Fecha de Ingreso: julio-2011
Ubicación: Lima
Mensajes: 291
Antigüedad: 12 años, 8 meses
Puntos: 8
Separar usuarios por coma y los 2 ultimos por "y"

Hola, que tal?

Estoy teniendo problemas a la hora de mostrar la lista de usuarios separados por coma (",") y que el penultimo y ultimo esten separados por una "y".

Ejemplo:

Usuarios:
Pedro
Pablo
Diego
Jorge

Código PHP:
$usuarios "select nombre from usuarios";
$usuarios mysql_query($usuarios $link);
while(
$rs=mysql_fetch_array($usuarios)) 
{
    echo 
$rs['nombre'].", ";

Esto me da como resultado: Pedro, Pablo, Diego, Jorge,

Pero lo que yo necesito es: Pedro, Pablo, Diego y Jorge

Como hago eso posible?

Gracias!
  #2 (permalink)  
Antiguo 22/09/2011, 13:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Separar usuarios por coma y los 2 ultimos por "y"

Primero deberías agrupar todos los elementos en un array, luego sacas el último elemento y unes la lista con join(); finalmente agregas el elemento que quitaste con el "y", solo necesitas usar tu ingenio.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 22/09/2011, 13:31
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: Separar usuarios por coma y los 2 ultimos por "y"

A mí se me ocurre usar condicionales:

Código PHP:
Ver original
  1. $num = mysql_numrows($res);
  2. $x = 0;
  3.  
  4. while ($rs = mysql_fetch_array($res)) {
  5.     echo $rs['nombre'];
  6.     if ($x == $num-2) {
  7.         echo ' y ';
  8.     } else {
  9.         if ($x != $num-1) {
  10.             echo ', ';
  11.         }
  12.     }
  13.     $x++;
  14. }

Edit: ahora que leo, la solución de pateketrueke es mucho más corta, simplemente agregas al array todos los nombres, usas implode para imprimir con comas y retiras el último elemento del array con array_pop y lo unes con ' y ' . $elemento_retirado.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 22/09/2011 a las 13:46
  #4 (permalink)  
Antiguo 22/09/2011, 14:23
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Separar usuarios por coma y los 2 ultimos por "y"

También podrías utilizar GROUP_CONCAT y luego hacer el reemplazo de la última "," por "y", algo así:


Código PHP:
Ver original
  1. $result  = $db->query('SELECT GROUP_CONCAT(name) FROM users')
  2.               ->fetch(PDO::FETCH_COLUMN);  
  3. if(false !== ($pos = strrpos($result, ','))){
  4.     $result = substr_replace($result , ' y ', $pos, 1);    
  5. }      
  6. echo $result . PHP_EOL;

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: coma, mysql, usuarios, ultimo
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 12:43.