Foros del Web » Programando para Internet » PHP »

ayuda con cadenas

Estas en el tema de ayuda con cadenas en el foro de PHP en Foros del Web. Holas, tengo un campo con una cadena de tres elementos separadas por ,(comas) conosco dos de ellas, rojo y blanco, la tercera es un color ...
  #1 (permalink)  
Antiguo 07/06/2010, 05:15
 
Fecha de Ingreso: junio-2005
Mensajes: 54
Antigüedad: 19 años, 5 meses
Puntos: 0
ayuda con cadenas

Holas, tengo un campo con una cadena de tres elementos separadas por ,(comas) conosco dos de ellas, rojo y blanco, la tercera es un color desconocido. el punto es que existe la posiblidad de que en la cadena se guarde solo dos valores o los tres o solo uno, estas son las posibilidades

Código PHP:
$cadena=rojoblanco
$cadena
=rojocolorx
$cadena
=rojo
$cadena
=blanco
$cadena
=blancocolorx
$cadena
=colorx 
la cuestion es como identificar al colorx???

he usado ereg() para identificar rojo y blanco, pero no hallo la manera de identificar a colorx, alguna idea?

gracias
  #2 (permalink)  
Antiguo 07/06/2010, 05:32
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 8 meses
Puntos: 26
Respuesta: ayuda con cadenas

Convierte la cadena en array(usa la funcion explode()), asi tendras un array de longitud x. (puedes saber la longitud de un array con la funcion count())

con un bucle recorres el array, los comparas con rojo y blanco y si no es ninguno de esos dos colores, pues es el que buscas. ;)

Espero que te sirva
  #3 (permalink)  
Antiguo 07/06/2010, 05:45
 
Fecha de Ingreso: junio-2005
Mensajes: 54
Antigüedad: 19 años, 5 meses
Puntos: 0
Respuesta: ayuda con cadenas

Gracias lo intentare, te cuento como me fue luego
  #4 (permalink)  
Antiguo 07/06/2010, 05:58
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 8 meses
Puntos: 26
Respuesta: ayuda con cadenas

Ok, si no funciona pon igualmente el codigo para ver si pueda ayudarte en algo mas.
  #5 (permalink)  
Antiguo 07/06/2010, 08:02
 
Fecha de Ingreso: junio-2005
Mensajes: 54
Antigüedad: 19 años, 5 meses
Puntos: 0
Respuesta: ayuda con cadenas

Holas, pues si funciono, solo que tiene un comportameinto raro, y no puedo sacar el valor que necesito, algo estoy enredando

La complicacion es porque solo dos valores son fijos en los chekbox, yel tercer chekbos es un campo para ingresar:

Código PHP:
<input type="checkbox" name="idioma[]" value=
<?php if(ereg("Español",$con['idioma'])) echo "\"Español\" checked"; else echo "\"Español\"";?>/> Español <br /> 
 <input type="checkbox" name="idioma[]" value=
<?php if(ereg("Ingles",$con['idioma'])) echo "\"Ingles\" checked"; else echo "\"Ingles\"";?> />  
  Ingles<br />
 <input type="checkbox" name="idioma[]" value=
 
<?php 
$cadena
=explode(",",$con['idioma']);
$total=count($cadena);
if (
$total!=NULL
switch (
$total) {
case 
0:
    if (
$cadena['0']="Español" or $cadena['0']="Ingles"
    {echo 
"\"otro\""$otro="";} else {echo "\"otro\" checked";$otro=$cadena['0'];}
    break;
case 
1:
    if (
$cadena['1']!="Español" and $cadena['1']!="Ingles"
    {echo 
"\"otro\" checked";$otro=$cadena['1'];} else {echo "\"otro\""$otro="";}
    break;
case 
2:
    echo 
"\"otro\" checked";
    
$otro=$cadena['2'];
    break;
};
?> />
  Otro idioma <br />
  <input style="background-color: #D6D3CE" type="text" name="otro_idioma" size="20" value="
  <?php echo $otro;?>" /> </label>
Si no hay dato guardado en el campo me muestra esto:

[ ]Español
[ ]Ingles
[X]Otro [ .............] // este es el campo donde ingreso el tercer idioma

pero si actualizo los campos y marco, por ejemplo español e ingles y desmarco el otro, muestra estro

[X]Español
[X]Ingles
[ ]Otro [..............] //este es el campo donde ingreso el tercer idioma

y el phpadmin me muestra que en el campo idioma, estan guardados Español, ingles.

Última edición por teksukamen; 07/06/2010 a las 11:14
  #6 (permalink)  
Antiguo 08/06/2010, 05:13
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 8 meses
Puntos: 26
Respuesta: ayuda con cadenas

Cita:
Iniciado por teksukamen Ver Mensaje
Si no hay dato guardado en el campo me muestra esto:

[ ]Español
[ ]Ingles
[X]Otro [ .............] // este es el campo donde ingreso el tercer idioma

pero si actualizo los campos y marco, por ejemplo español e ingles y desmarco el otro, muestra estro

[X]Español
[X]Ingles
[ ]Otro [..............] //este es el campo donde ingreso el tercer idioma

y el phpadmin me muestra que en el campo idioma, estan guardados Español, ingles.
y que quieres que se te guarde en la bd si estan marcados español e ingles? no entiendo todavia muy bien su funcionamento
  #7 (permalink)  
Antiguo 08/06/2010, 13:28
 
Fecha de Ingreso: junio-2005
Mensajes: 54
Antigüedad: 19 años, 5 meses
Puntos: 0
Respuesta: ayuda con cadenas

Hola

Cita:
y que quieres que se te guarde en la bd si estan marcados español e ingles? no entiendo todavia muy bien su funcionamento
ademas kiero guardar el tercer idioma, que se escribe manualmente. en reume

si alguien kiere guardar kiere guardar el español o ingles, solo marca,pero que pasa si kieres guardar un idioma k no esta listado, por ejemplo "quecha" , aki marcas la opcion otro y en ese campo guardas ese idioma, y en el campo de la tabla se guardara junto con los otros:

[X]Español
[ ]Ingles
[X]Otro [ quechua ]

en el campo se debera guardar

---------------------
idioma
----------------------
Español, quechua
----------------------

te pongo otras posobilidades:

[X]Español
[ ]Ingles
[ ]Otro [ ...............]

---------------------
idioma
----------------------
Español
----------------------

[X]Español
[X]Ingles
[X]Otro [ quecha]

---------------------
idioma
----------------------
Español, Ingles, quechua
----------------------


paraque no se confundan con este codigo guardo los idiomas:

Código PHP:
f(count($idioma) > 1
{
for(
$i 0$i count($idioma); $i++)
{
 if (
$idioma[$i]=="otro")
    {     
$idioma2.=$otro_idioma;}
    else
    {
$idioma2 .= $idioma[$i];}
 
  if(
$i count($idioma) - )
   
$idioma2 .= ', '

}

saludos :)
  #8 (permalink)  
Antiguo 10/06/2010, 03:18
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 8 meses
Puntos: 26
Respuesta: ayuda con cadenas

¿Puede que el problema este en el switch?:
Código PHP:
$total=count($cadena); 
if (
$total!=NULL)  
switch (
$total) { 
case 
0
    if (
$cadena['0']="Español" or $cadena['0']="Ingles")  
    {echo 
"\"otro\""$otro="";} else {echo "\"otro\" checked";$otro=$cadena['0'];} 
    break; 
case 
1
    if (
$cadena['1']!="Español" and $cadena['1']!="Ingles")  
    {echo 
"\"otro\" checked";$otro=$cadena['1'];} else {echo "\"otro\""$otro="";} 
    break; 
case 
2
    echo 
"\"otro\" checked"
    
$otro=$cadena['2']; 
    break; 
}; 
Pongamos por ejemplo que no hay marcada ninguna opción. El count del array sera 1 (eso quiere decir que nunca entrara en el 0).
Mira a ver si puede ser por ahi por lo que no te funciona correctamente.

Última edición por Vallu; 10/06/2010 a las 04:01
  #9 (permalink)  
Antiguo 10/06/2010, 03:55
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 8 meses
Puntos: 26
Respuesta: ayuda con cadenas

Pues sinceramente no se cual puede ser tu problema, porque a mi me va perfectamente, o eso es lo que creo.

Si pongo:
[X]Español
[X]Ingles
[X]Otro [catalan]

---------------------
idioma
----------------------
Español, Ingles, catalan
----------------------

Y eso es lo que supongo que querias que saliera; los 3 idiomas separados por "," no? Si no es asi siento que o cada vez me estoy volviendo mas corto.

Igualmente si voy alternando los idiomas siempre me aparecen los que marco.
  #10 (permalink)  
Antiguo 10/06/2010, 15:48
 
Fecha de Ingreso: junio-2005
Mensajes: 54
Antigüedad: 19 años, 5 meses
Puntos: 0
Respuesta: ayuda con cadenas

Hola, claro que graba bien todas las opciones, el caso es que al leer los datos de ese campo, quiero que aparezca marcado en el chekbox. gracias :)
  #11 (permalink)  
Antiguo 21/06/2010, 21:41
 
Fecha de Ingreso: junio-2005
Mensajes: 54
Antigüedad: 19 años, 5 meses
Puntos: 0
Respuesta: ayuda con cadenas

Cita:
Iniciado por teksukamen Ver Mensaje
Hola, claro que graba bien todas las opciones, el caso es que al leer los datos de ese campo, quiero que aparezca marcado en el chekbox. gracias :)
Holas, finalmente pude encontrar el problema, no era en el codigo de registro sino en el proceso de guardar los datos:

count($var) me devolvia el tamaño del array, y si este estaba vacio me devolvia 1.

Código PHP:
$total=count($cadena); 
if (
$total!=NULL)  
switch (
$total) { 
lo cambie por esto
Código PHP:
$total=count($cadena);
if (!empty(
$con['idioma'])) 
switch (
$total) { 
luego porque no me resgistraba solo un dato, era por eso:

Código PHP:
if(count($idioma) > 0// esta era la linea con el problema, originalment era 1
{
for(
$i 0$i count($idioma); $i++)
{
 if (
$idioma[$i]=="otro")
    {     
$idioma2.=$otro_idioma;}
    else
    {
$idioma2 .= $idioma[$i];}
 
  if(
$c count($idioma) - )
   
$idioma2 .= ', '

}

Saludos y gracias!!!

Etiquetas: 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 21:23.