Foros del Web » Programando para Internet » PHP »

Agregar comas y y en una cadena

Estas en el tema de Agregar comas y y en una cadena en el foro de PHP en Foros del Web. Tengo una chekbox con multiples opciones.... -Juan -Rogelio -Antonio -Saul -Carlos -Luis y por ejemplo marco 4 casillas de estas... como puedo hacer para almacenar ...
  #1 (permalink)  
Antiguo 25/06/2011, 10:27
 
Fecha de Ingreso: mayo-2011
Mensajes: 167
Antigüedad: 13 años
Puntos: 1
Agregar comas y y en una cadena

Tengo una chekbox con multiples opciones....

-Juan
-Rogelio
-Antonio
-Saul
-Carlos
-Luis

y por ejemplo marco 4 casillas de estas...
como puedo hacer para almacenar en la bd de esta manera....

Rogelio, Antonio, Saul y Carlos
o si solo selecciono 3
Luis, Saul y Antonio
2
Juan y Saul
1
Saul
  #2 (permalink)  
Antiguo 25/06/2011, 10:49
 
Fecha de Ingreso: mayo-2011
Mensajes: 167
Antigüedad: 13 años
Puntos: 1
Respuesta: Agregar comas y y en una cadena

ya logre quitar la ultima coma.. asi...

Código PHP:
Ver original
  1. <?php
  2. $cadena = "Juan, Carlos, Jose, Hugo,";
  3. echo $cad = substr($cadena, 0, -1);?>

Pero como puedo remplazar la ultima , por una " y "
  #3 (permalink)  
Antiguo 25/06/2011, 11:04
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Agregar comas y y en una cadena

Serías más práctico si en vez de ir concatenando comas a los nombres, los guardas en un array y luego las unes con implode:

$nom[]="Juan";
$nom[]="Luis";
$nom[]="Saul";
$nom=implode(",",$nom);
esto te daría
"Juan,Luis,Saul";

Y sólo necesitarías agregarle la "y", así:

$nom.="y";

O bien si quieres continuar con lo que tienes, puedes sustituir la última coma así:

$cadena=substr($cadena,0,-1);//quitas la coma.
$cadena.="y";//agregas la y
  #4 (permalink)  
Antiguo 25/06/2011, 11:10
 
Fecha de Ingreso: mayo-2011
Mensajes: 167
Antigüedad: 13 años
Puntos: 1
Respuesta: Agregar comas y y en una cadena

pero si necesito poner la "y" entre Luis y Saul

para que kede Juan, Luis y Saul
  #5 (permalink)  
Antiguo 25/06/2011, 11:35
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Agregar comas y y en una cadena

En tal caso, podrías hacer esto:
$cadena=explode(",",$cadena);//pasamos a array la cadena, partiendo por las comas, lo cual no sería necesario si la trabajas desde el inicio como array.

$ultimo=array_pop($cadena);//sacamos el último valor del arreglo

$cadena=implode(",",$cadena);//colocamos las comas y pasamos el array a cadena
$cadena.="y $ultimo";//agregamos el ultimo elemento con una y de por medio.
  #6 (permalink)  
Antiguo 25/06/2011, 12:03
 
Fecha de Ingreso: mayo-2011
Mensajes: 167
Antigüedad: 13 años
Puntos: 1
Respuesta: Agregar comas y y en una cadena

sigo sin exito...

Código PHP:
Ver original
  1. $cadena = "Juan, Carlos, Jose, Hugo,";
  2. $cadena=explode(",",$cadena);//pasamos a array la cadena, partiendo por las comas, lo cual no sería necesario si la trabajas desde el inicio como array.
  3. $ultimo=array_pop($cadena);//sacamos el último valor del arreglo
  4. $cadena=implode(",",$cadena);//colocamos las comas y pasamos el array a cadena
  5. $cadena.="y $ultimo";//agregamos el ultimo elemento con una y de por medio.
  6. echo $cadena;

me devuelve esto

Juan, Carlos, Jose, Hugoy
  #7 (permalink)  
Antiguo 25/06/2011, 12:05
 
Fecha de Ingreso: mayo-2011
Mensajes: 167
Antigüedad: 13 años
Puntos: 1
Respuesta: Agregar comas y y en una cadena

ya lo logre.. asi...

Código PHP:
Ver original
  1. <?php
  2. $cadena = "Juan, Carlos, Jose, Hugo,";
  3. $cadena = substr($cadena, 0, -1);
  4. $cadena=explode(",",$cadena);
  5. $ultimo=array_pop($cadena);
  6. $cadena=implode(",",$cadena);
  7. $cadena.=" y $ultimo";
  8.  
  9. echo $cadena;
  10. ?>
  #8 (permalink)  
Antiguo 25/06/2011, 12:07
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Agregar comas y y en una cadena

Eso es por que tienes una coma al final "Hugo,"

como te decía es mejor manejar los nombres en un array desde el principio, pero bueno, así como está tu código, debería quedar:

Código PHP:
Ver original
  1. $cadena = "Juan, Carlos, Jose, Hugo,";
  2. $cadena=substr($cadena,0,-1);//quitamos ultima coma.
  3. $cadena=explode(",",$cadena);//pasamos a array la cadena, partiendo por las comas, lo cual no sería necesario si la trabajas desde el inicio como array.
  4. $ultimo=array_pop($cadena);//sacamos el último valor del arreglo
  5. $cadena=implode(",",$cadena);//colocamos las comas y pasamos el array a cadena
  6. $cadena.="y $ultimo";//agregamos el ultimo elemento con una y de por medio.
  7. echo $cadena;
  #9 (permalink)  
Antiguo 25/06/2011, 12:08
 
Fecha de Ingreso: mayo-2011
Mensajes: 167
Antigüedad: 13 años
Puntos: 1
Respuesta: Agregar comas y y en una cadena

Disculpen tanta lata..
pero ahora me surge otra duda...

si solo tengo un valor
$cadena = "Juan,";

me lo devuelve asi
y Juan

como lo soluciono?

se me ocurre tal vez un if pero como lo aplico
  #10 (permalink)  
Antiguo 25/06/2011, 12:17
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Agregar comas y y en una cadena

simple:
Código PHP:
Ver original
  1. $cadena = " Hugo,";
  2. $cadena=substr($cadena,0,-1);//quitamos ultima coma.
  3. $cadena=explode(",",$cadena);//pasamos a array la cadena, partiendo por las comas, lo cual no sería necesario si la trabajas desde el inicio como array.
  4. if(count($cadena)>1){ //si el array cadena tiene más de un elemento
  5. $ultimo=array_pop($cadena);//sacamos el último valor del arreglo
  6. $cadena=implode(",",$cadena);//colocamos las comas y pasamos el array a cadena
  7. $cadena.="y $ultimo";//agregamos el ultimo elemento con una y de por medio.
  8. }
  9. echo $cadena;
  #11 (permalink)  
Antiguo 25/06/2011, 16:24
 
Fecha de Ingreso: mayo-2011
Mensajes: 167
Antigüedad: 13 años
Puntos: 1
Respuesta: Agregar comas y y en una cadena

Muchas gracias ocp001a ya lo solucione y lo tengo todo funcionando.. respecto a lo que decias..
//pasamos a array la cadena, partiendo por las comas, lo cual no sería necesario si la trabajas desde el inicio como array. tenias razon.. pero no supe acomodarlo...

Resulta que la variable de donde recojo los datos ya vienen en array... jajaj lo que tuve ke hacer.. es implode luego explode luego de nuevo implode.. y ps es mucho relajo!! me podrias ayudar a simplificar este codigo... =) o cualquier otra persona q me ayudara? se lo agradecere!

Código PHP:
Ver original
  1. $cadena = $_POST['fotografos'];
  2. $cadena=implode("",$cadena);
  3. $cadena=substr($cadena,0,-1);//quitamos ultima coma.
  4. $cadena=explode(",",$cadena);//pasamos a array la cadena, partiendo por las comas, lo cual no sería necesario si la trabajas desde el inicio como array.
  5. if(count($cadena)>1){ //si el array cadena tiene más de un elemento
  6. $ultimo=array_pop($cadena);//sacamos el último valor del arreglo
  7. $cadena=implode(", ",$cadena);//colocamos las comas y pasamos el array a cadena
  8. $cadena.=" y $ultimo";//agregamos el ultimo elemento con una y de por medio.
  9. }
  10. else {
  11. $ultimo=array_pop($cadena);//sacamos el último valor del arreglo
  12. $cadena=implode(", ",$cadena);//colocamos las comas y pasamos el array a cadena
  13. $cadena.="$ultimo";//agregamos el ultimo elemento con una y de por medio.
  14. }
  15. echo $cadena;
  #12 (permalink)  
Antiguo 26/06/2011, 16:26
 
Fecha de Ingreso: mayo-2011
Mensajes: 167
Antigüedad: 13 años
Puntos: 1
Respuesta: Agregar comas y y en una cadena

Alguien me ayude a limpiar un poco este codigo =)
  #13 (permalink)  
Antiguo 26/06/2011, 16:52
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: Agregar comas y y en una cadena

Algo así talves te sirva

Código PHP:
Ver original
  1. $data = array('Uno', 'Dos', 'Tres');
  2.  
  3. $str   = '';
  4. $total = count($data);
  5. if ($total) {
  6.     $last = array_pop($data);
  7.     $str  = 1 == $total ? $last : sprintf('%s y %s', implode(',', $data), $last);
  8. }
  9.  
  10. echo $str . PHP_EOL;
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: comas, cadenas
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 14:42.