Comunidad de diseño web y desarrollo en internet online

Problemas con cadena.split

Citar            
MensajeEscrito el 02 Sep 2005 06:43 pm
Buen dia compañeros, el asunto que me trae ahora es el siguiente:
Con un click en un boton mando llenar de x registros de una base de datos un componete List usando lo siguiente:
En el boton:
on(release)
{
x_variable.dato = "X";
x_variable.sendAndLoad("script_lllenado.php",x_variable,"GET");
}
y en el primer fotograma:
var x_variable = new LoadVars();
x_variable.onLoad = Llenar;

function Llenar()
{
var arreglo1:Array = x_variable.valor1.split("**");
var arreglo2:Array = x_variable.valor2.split("**");
_root.comp_lista.removeAll();
for(i=0;i<x_variable.total;i++)
{
_root.comp_lista.addItem({label:arreglo1[i],data:arreglo2[i]});
}
}

Todo esto funciona medias, ya que cuando se esta realizando el llenado con el for cuando encuentra una subcadena de arreglo1 la cual contiene una "ñ" o vocal con acento "á" o vocal con ierisis "ü" concatena dos registros y los coloca en un solo lugar del componente List ademas de que sustituye el caracter por algun otro.
Ademas de arreglo1 tambien uso arreglo2 para tener un identificador de cada registro en List, pero como sucede lo anterior estos valores se recorren y ya los valores no corresponden a sus respectivos registros.
[b]Ya revise el script y ahi no hay fallas, creo que el problema esta en la funcion xcadena.split();[/b]

Ojala puedan puedan ayudarme, de antemano gracias

Por luinuxnetsoft

10 de clabLevel



 

msie
Citar            
MensajeEscrito el 02 Sep 2005 06:49 pm
el problema de los acentos es por la codificacion, lo puedes resolver con algo asi en el codigo php:

Código :

$cadena = utf8_encode($cadena);


para la codificación

ahora el split para que lo haces? :?

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 02 Sep 2005 07:30 pm
el split lo hago pq en php almaceno os registros en una varibale de tipo String colocando separadores "**" entre cada cadena, asi que en flash el split lo uso para meter las subcadenas resultantes en un arreglo

Por luinuxnetsoft

10 de clabLevel



 

msie
Citar            
MensajeEscrito el 02 Sep 2005 09:25 pm
ok debes estar haciendo algo mal :? para que no te cargue los datos o usa un trace para que sepas que valores estas cargando :)

te voy a dar un ejemplo con tu caso :

codigo php

Código :

<?php
    $cadena="valor1=";
    for ($i=0;$i<5;$i++){
       $cadena.="numero".$i."**";       
    }
    echo $cadena;
?>

codigo actionscript

Código :

var x_variable:LoadVars = new LoadVars();
x_variable.load("http://localhost/prueba.php");

x_variable.onLoad = cargar;

function cargar (exito:Boolean){
    var arreglo1:Array = x_variable.valor1.split("**");
    if (exito){
          for (i=0;i<arreglo1.length;i++){
            trace(arreglo1[i]);
         }
    } else {
       trace("error al cargar script externo");
    }
}

si ejecuta esa pelicula la ventana de salida te mostrara esto
numero0
numero1
numero2
numero3
numero4

ahora como yo lo haria, sería asi :wink:
codigo php:

Código :

<?php
    $cadena="";
    for ($i=0;$i<5;$i++){
        $cadena.="&nombrevariable".$i."="."valor".$i;
    }
    echo $cadena;
?>

codigo actionscript:

Código :

var x_variable:LoadVars = new LoadVars();
x_variable.load("http://localhost/split.php");

x_variable.onLoad = cargar;

function cargar (exito:Boolean){
    if (exito){
          for (i=0;this["nombrevariable"+i]!=undefined;i++){
            trace(this["nombrevariable"+i]);
         }
    } else {
       trace("error al cargar script externo");
    }
}


Porque asi tendria mas control de los datos que recibo de php, con diferentes nombre variables y cada uno con un valor asignado :P

saludos :D

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 03 Sep 2005 01:28 am
ok, buen punto lo que me dices, pero ese no es mi problema, deja te lo explico mas a fondo:
Hago una consulta en flash llamando un script de php, supon que los registros que quiero obtener son "Davino, Blanco,Argüello,Pardo,Iñiguez,Vuoso", entonces en el script los almaceno en una cadena la cual al final quedaria asi, "Davino** Blanco**Argüello**Pardo**Iñiguez**Vuoso", entonces retorno esa cadena a flash y ahi utilizo la funcion de split usando como delimitador "**" para asi obtener las subcadenas, ya echo esto los inserto en un componente List pero al visualizarlo en el componente me queda de la siguiente forma:
Davino
Blanco
Arg§Pardo
I§ñigVuoso

Como observaras al momento de llenar el componente List en cuanto encuentra una de las subcadenas con caracter extraño en este caso acento o ieresis junta dos cadenas en solo lugar ademas de que pone otros caracteres.

Ese es el punto en cuestion, pq sucede eso y si habra forma de que se despliegue igual y como se consiguen los datos del script

Por luinuxnetsoft

10 de clabLevel



 

msie
Citar            
MensajeEscrito el 03 Sep 2005 01:34 am
ok haz probado las sugerencias que te he dado :? :roll:

lo de los acentos te los respondi arriba :wink:

que problema hay con los codigos que te di, solo debes asignarle lo que obtienes de la BD :? , como te dije de alguna manera estas imprimiendo la cadena mal en el script php, ademas que es total? :? te lo digo por

Código :

x_variable.total


en el for :?

el ejemplo que te di lo debes adaptar a los resultados obtenidos del query, saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 03 Sep 2005 01:39 am
x_varibale.total es otra variable que traigo del script la cual me dice cuantos registros encontro, yo creo que el script esta bien ya que lo ejecute directo y me muestra la cadena con todos los registros sin ningun error ni caracteres substituidos, como te dije antes el problema parece estar en la funcion split de flash, pero de igual forma gracias compañero, y si encuetras otra solucion te agradecere.

Por luinuxnetsoft

10 de clabLevel



 

msie
Citar            
MensajeEscrito el 03 Sep 2005 01:41 am
puedes postear el codigo php? :?

estoy ayudandote a ciegas :(

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 03 Sep 2005 01:45 am
por cierto leiste sobre lo de la codificación que te dije alla arriba, lo probaste? :? , antes de hacer el echo debes hacer la codificación :wink:

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 03 Sep 2005 01:52 am
<?php

$e=13;// este valor ahorita esta por default pero la idea sera que desde flash se manda el valor
//pero con eso no hay problema
$conexion = mysql_connect("localhost","root","");
mysql_select_db("futbol",$conexion);
$result=mysql_query("select * from jugador where Id_Equipo = '$e'",$conexion);
$m1="";
$m2="";
$i=0;
while($row = mysql_fetch_array($result))
{
$m1=$m1.$row[2]."**";
$m2=$m2.$row[0]."**";
$i++;
}
mysql_close($conexion);
$r="&n1=$m1 &n2=$m2 &cont=$i";
echo $r;
exit();
?>

en flash manejo n1 que lleva la cadena con los registros recogidos, n2 los identificadores de cada registro y cont el numero de registros encontrados

Por luinuxnetsoft

10 de clabLevel



 

msie
Citar            
MensajeEscrito el 03 Sep 2005 01:59 am

Código :

 echo $r; 


cambiala por

Código :

 echo utf8_encode($r); 

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 03 Sep 2005 02:05 am
y en flash con el split no le muevo nada?
o tengo que descodificar en flash?

[email protected]

Por luinuxnetsoft

10 de clabLevel



 

msie
Citar            
MensajeEscrito el 03 Sep 2005 02:09 am
nop :P

aunque eso nombres de variables que creas en el php no corresponden con los que manejas en actionscript :crap:

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 03 Sep 2005 02:20 am
no te preocupes, el nombre de las variables es lo de menos, cambie los nombres solo para mostrarlos en el foro, deja checo haber que pasa, gracias compañero.

Y si no es mucho pedir echame la mano con lo de llevar vaiables de una pelicula a otra :)

Por luinuxnetsoft

10 de clabLevel



 

msie
Citar            
MensajeEscrito el 14 Oct 2007 07:01 pm

Maikel escribió:


codigo actionscript:

Código :

var x_variable:LoadVars = new LoadVars();
x_variable.load("http://localhost/split.php");

x_variable.onLoad = cargar;

function cargar (exito:Boolean){
    if (exito){
          for (i=0;this["nombrevariable"+i]!=undefined;i++){
            trace(this["nombrevariable"+i]);
         }
    } else {
       trace("error al cargar script externo");
    }
}


Porque asi tendria mas control de los datos que recibo de php, con diferentes nombre variables y cada uno con un valor asignado :P

saludos :D


Hola Maikel, he encontrado este codigo tuyo, algo antiguo, y te agradecería me echaras una mano.
Te comento, del script lo q necesito es poder recuperar los datos que tu pones en this["nombrevariable"+i] fuera de esta funcion.

Lo que estoy heciendo es modificar un script de cristalab para una geleria de fotos sin xml, lo estoy intentado adaptar para que me recupere las fotos de la bbdd con los nombres que yo le pongo y las carpetas donde estan.

Mi codigo PHP es:

Código :

      $cadena1= "SELECT f_nombre, f_fecha FROM fiestas WHERE f_id=".$_POST["codigo"];
      $des1=@mysql_query($cadena1) or
         die("<CENTER><H3>No se han podido recuperar el nombre. <P> $cadena1<p>Error: ". mysql_errno()." .- ".mysql_error()." <p>Contacte con Vitovi.com.</H3></CENTER>"); 
      $datos1=mysql_fetch_array($des1);
      echo "&nombre=".utf8_encode($datos1["f_nombre"])."&fecha=".utf8_encode($datos1["f_fecha"]);

      $fotos = Array();
      $descripcion = Array();
      $cadena2= "SELECT ff_foto, ff_descripcion FROM fiestafotos WHERE ff_fiesta=".$_POST["codigo"];
      $des2=@mysql_query($cadena2) or
         die("<CENTER><H3>No se han podido recuperar las fotos. <P> $cadena2<p>Error: ". mysql_errno()." .- ".mysql_error()." <p>Contacte con Vitovi.com.</H3></CENTER>"); 
      echo "&totalfotos=".mysql_num_rows($des2);
      $i=1;
      while ($datos2=mysql_fetch_array($des2)) {
         echo "&foto".$i."=".$datos2["ff_foto"]."&descripcion".$i."=".utf8_encode($datos2["ff_descripcion"]);
         $i++;
      }


Que me genera algo asi :

Código :

&nombre=Fiesta Santa Teresa&fecha=2007-10-19&totalfotos=3&foto1=10_1.jpg&descripcion1=Prueba2&foto2=10_2.jpg&descripcion2=Prueba 3&foto3=10_3.jpg&descripcion3=fffiiifff

Lo de Santa Teresa es por el Ron me estaba tomando una copa de 1796... el ultimo q me quedaba de cuando estuve en Venezuela, nif, nif pero bueno volviendo al trabajo,

El codigo as es:

Código :

form_lv.onLoad = function(success:Boolean) {
   if (success) {
      titulo.text = form_lv.nombre;
      if (form_lv.fotosde == "fiestas") {
         titulo.text += "  "+form_lv.fecha;
      }
//Estas dos lineas es para ver que llegan los datos
      prueba.text=form_lv.foto1;
      prueba.text=form_lv.descripcion1;
//      prueba.text+="\n"+form_lv.descripcion.split(".:.");
   } else {
      titulo.text = "Error en la lectura";
      titulo.text += " "+_level0.codigo+"  "+_level0.fotosde;
   }
};
//luego viene mucho código para definir la galería y donde tengo el fallo:

imagenes_lv.dirurl = form_lv.fotosde+"/form_lv.foto"+i+".jpg";
//form_lv.fotosde --> directorio donde estan las fotos

como pongo el nombre de la foto??? Se q todas las fotos se llaman fotoX, donde X es un numero de 1 a form_lv.totalfotos

Una ayudita...[/code]

Por vitogq

45 de clabLevel



Genero:Masculino  

Granada Spain

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.