Comunidad de diseño web y desarrollo en internet online

Llenar un combobox en flex con php y mysql

Citar            
MensajeEscrito el 04 Feb 2011 07:37 pm
Hola chavos estoy atorado!!

Alguien me ayuda a salir de esto...

Quiero llenar un combobox con php y mysql

ya logre jalar los datos a mi php pero no logro hacer el enlace con flex

tengo dos php's

este con nombre cargar_combo.php

Código PHP :

<?php

include("funciones.php");
$pais_sel = cargar_combo("pai_pais","PAI_PK","PAI_ISO3","PAI_NOMBRE");

?>
 

y el otro con nombre funciones.php

Código PHP :

<?php

function cargar_combo($tabla,$value,$opt1,$opt3){
$enlace = mysql_connect("localhost", "root", "pass") or die("No pudo conectarse : " . mysql_error());

    mysql_select_db("flex") or die("No pudo seleccionarse la BD.");



    $sql = "select * from ".$tabla;
    $res = mysql_query($sql) or die (mysql_error());
    echo "<select name='$tabla' class='botones'>";
    while($fila = mysql_fetch_assoc($res)){
        echo "<option value='$fila[$value]'>$fila[$opt1] - $fila[$opt2]</option>";

    }
    echo "</select>";


             mysql_close($enlace);
}
?>



Adjunto mi base de datos para que la prueben

Código MySQL :


SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */;
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */;
/*!40101 SET @[email protected]@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Base de datos: `flex`
--

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `pai_pais`
--

CREATE TABLE IF NOT EXISTS `pai_pais` (
  `PAI_PK` int(11) NOT NULL AUTO_INCREMENT,
  `PAI_ISONUM` smallint(6) DEFAULT NULL,
  `PAI_ISO2` char(2) DEFAULT NULL,
  `PAI_ISO3` char(3) DEFAULT NULL,
  `PAI_NOMBRE` varchar(80) DEFAULT NULL,
  PRIMARY KEY (`PAI_PK`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=241 ;

--
-- Volcar la base de datos para la tabla `pai_pais`
--

INSERT INTO `pai_pais` (`PAI_PK`, `PAI_ISONUM`, `PAI_ISO2`, `PAI_ISO3`, `PAI_NOMBRE`) VALUES
(1, 4, 'AF', 'AFG', 'Afganistán'),
(2, 248, 'AX', 'ALA', 'Islas Gland'),
(3, 8, 'AL', 'ALB', 'Albania'),
(4, 276, 'DE', 'DEU', 'Alemania'),
(5, 20, 'AD', 'AND', 'Andorra'),
(6, 24, 'AO', 'AGO', 'Angola'),
(7, 660, 'AI', 'AIA', 'Anguilla'),
(8, 10, 'AQ', 'ATA', 'Antártida'),
(238, 262, 'DJ', 'DJI', 'Yibuti'),
(239, 894, 'ZM', 'ZMB', 'Zambia'),
(240, 716, 'ZW', 'ZWE', 'Zimbabue');




Me gustaria que alguien me ayude a jalar esta base de datos... a un combo box mostrando el nombre del pais


en flex tengo esto

Código Flex :

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2007/09/19/converting-xml-to-objects-using-the-flex-httpservice-mxml-tag/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white"
        creationComplete="serv.send();" viewSourceURL="srcview/index.html">

    <mx:Script>
        <![CDATA[
            import mx.rpc.events.FaultEvent;
            import mx.rpc.events.ResultEvent;
            import mx.collections.*;

            private function serv_result(evt:ResultEvent):void {
                var resultObj:Object = evt.result;
                /* Assign the values... */
                form2.dataProvider = resultObj.album.name;

              
            }

            private function serv_fault(evt:FaultEvent):void {
                /* Show the error label. */
                error.text += evt.fault.faultString;
                error.visible = true;
                /* Hide the form. */
           
            }
        ]]>
    </mx:Script>

    <mx:HTTPService id="serv"
            url="http://localhost/combo/cargar_combo.php"
            resultFormat="object"
            result="serv_result(event);"
            fault="serv_fault(event);" />


    <mx:Label id="error"
           color="red"
            fontSize="36"
            fontWeight="bold"
            visible="false"
            includeInLayout="{error.visible}"/>


      <mx:ComboBox id="form2" />
            
       
  

</mx:Application>



Espero la ayuda de algun cristalero pro

Por juramy

Claber

217 de clabLevel

2 tutoriales

 

Programador

firefox
Citar            
MensajeEscrito el 04 Feb 2011 07:43 pm
se me olvido comentarles

en la linea 18 del codigo de flex en la funcion serv_result:

Código Flex :

  private function serv_result(evt:ResultEvent):void { 
                var resultObj:Object = evt.result; 
                /* Assign the values... */ 
                form2.dataProvider = resultObj.album.name; 
 
               
            } 


en resultObj mandaba a llamar un texto desde la carpeta src de mi codigo PARA COMPROVAR MI FLEX y SI funciona con ese txt


Código XML :

<?xml version="1.0" encoding="utf-8"?>
<album>
   <name>One</name>
   <name>dos</name>
   <name>tres</name>
</album>

Por juramy

Claber

217 de clabLevel

2 tutoriales

 

Programador

firefox
Citar            
MensajeEscrito el 04 Feb 2011 08:06 pm
No se si lo notaste ... pero la función cargar_combo escribe un combo en HTML, pero en el serv_result haces esto:

form2.dataProvider = resultObj.album.name;

En principio esto no tiene sentido, el PHP debería escribir pares de nombre/valor, deberías crear un ArrayCollection con eso, luego crear el dataProvider

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Feb 2011 11:34 pm
el array lo creo en el php ?? o en flex???

con respecto a la linea:
form2.dataProvider = resultObj.album.name;

era para provar si funcionaba con un texto plano


si me ayudan a resolverlo juro que hago el tuto de como llenar un combobox con php y mysql jeje

bueno e modificado el php segun yo ya esta bien... y asi deberia de funcionar:

Código PHP :

<?php

function cargar_combo($tabla,$value,$opt1,$opt2){
$enlace = mysql_connect("localhost", "root", "mysql") or die("No pudo conectarse : " . mysql_error());

    mysql_select_db("flex") or die("No pudo seleccionarse la BD.");

    $sql = "select * from ".$tabla;
    $res = mysql_query($sql) or die (mysql_error());
    echo "<select name='$tabla' class='botones'>";
    while($fila = mysql_fetch_assoc($res))
{
      echo "<user><option value='$fila[$value]'>$fila[$opt1] - $fila[$opt2]</option></user>";

    }
    $opciones = $opciones + "</select>";
   echo $opciones;

             mysql_close($enlace);
}
?>


y flex me quedo asi

Código Flex :

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" verticalAlign="middle" backgroundColor="white"
        creationComplete="serv.send();" viewSourceURL="srcview/index.html">

    <mx:Script>
        <![CDATA[
           
           import mx.utils.ArrayUtil;
            import mx.rpc.events.FaultEvent;
            import mx.rpc.events.ResultEvent;
            import mx.collections.*;

            private function serv_result(evt:ResultEvent):void {
                var resultObj:Object = evt.result;
                /* Asignar valores... */
                form2.dataProvider = evt.result;
             
            }

            private function serv_fault(evt:FaultEvent):void {
                /* Mostrar error en el label. */
                error.text += evt.fault.faultString;
                error.visible = true;
                /* esconder el error */         
            }
        ]]>
    </mx:Script>

    <mx:HTTPService id="serv" url="http://localhost/combo/funciones.php" resultFormat="object" 
        result="serv_result(event);" fault="serv_fault(event);" >
            <mx:request xmlns="">   
           <user>{form2.selectedItem}</user>                              
          </mx:request>
    </mx:HTTPService>
    
    <mx:Label id="error" color="red" fontSize="36" fontWeight="bold" visible="false" includeInLayout="{error.visible}"/>
  
               <mx:ComboBox id="form2" width="150" x="338" y="48"/>
               <mx:ArrayCollection id="arreglo" source="{ArrayUtil.toArray(serv.lastResult)}"/>

</mx:Application>


En verdad sera mi dios el que resuelva esto

Por juramy

Claber

217 de clabLevel

2 tutoriales

 

Programador

firefox
Citar            
MensajeEscrito el 05 Feb 2011 08:52 am
Lo mejor en esto casos es convertir todo a objecto , en tu caso has un objeto pais
supongamos que tiene pais un nombre propio

<combobox:miComboPais width="121"
styleName="elementoPais"
height="100%"
prompt="Sleccciona un Pais..."
id="cboxPasi"
dataProvider="{model.pais}"
labelField="nombre"
close="{model.obtenerCiudades((this.cboxPais.selectedItem as Pais))}"/>

Por consiguiente tu modelo debe estar asociado a arraycollecion que se recupera desde el lado del servidor , algo muy importante utiliza un frk para desarrollar

como swiz u otro

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Feb 2011 11:47 am

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 09 Feb 2011 12:11 am
ya me quedo.... XD ahora como los relaciono!!! cuando escoja pais el otro combobox se recargue y muestre los estados del pais seleccionado??...

mi cerebro se deshidrato, necesito ayuda en lo que recupero unas cuantas neuronas quedaron muy debiles despues de 2 días de desvelo.... pondre el tuto aunk no me sirvio mucho la ayuda que me dio solisgarm y xcom pero la intencion vale =) les agradesco

Por juramy

Claber

217 de clabLevel

2 tutoriales

 

Programador

firefox
Citar            
MensajeEscrito el 09 Feb 2011 12:22 am
Tampoco servirá mucho lo que te siga diciendo ... mejor que te ayude alguien con mas claridad ;)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 09 Feb 2011 05:11 pm
tranki bro... me ayudaste a analizar mis php's realmente esperaba un poco mas de empuje pero si quedo mira hice el tuto como lo prometi

http://foros.cristalab.com/tutorial-como-llenar-2-combobox-usando-flex-php-y-mysql-en-3-pasos-t94973/


saludos =)

Por juramy

Claber

217 de clabLevel

2 tutoriales

 

Programador

firefox

   Página 1 de 1

 

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