Comunidad de diseño web y desarrollo en internet online

Buscar en base de datos y mostrar resultado en AS2

Citar            
MensajeEscrito el 16 Mar 2011 01:09 pm
Saludos a todos:
Hace tiempo que no escribo por aca, ruego mil disculpas por eso.
Mi problema es el siguiente: estoy creando una pagina en la que debe llevar un buscador de datos. Estos datos se encuentran en una base de datos MySQL. La lista total de los datos la pude hacer, el problema es que trato de pasar una variable de busqueda a PHP para que haga la consulta, pero no logro mostrarla en flash. No se si me explico, les dejo los codigos para ver si esta un poco mas claro, aunque es medio desprolijo:

El codigo en flash es este:

Código ActionScript :

var xml:XML = new XML();
var numClips:Number;
var cadaRes:Array;
var cadaMar:Array;
var dirY:Number = resulta_mc._y;
var i:Number;

var envio_lv:LoadVars = new LoadVars();
var recibe_lv:LoadVars = new LoadVars();
buscar_mc.onPress = function() {
   envio_lv.busca = busca_txt.text;
   envio_lv.sendAndLoad("bus_prod_local.php",envio_lv,"POST");
};
envio_lv.onLoad = function(correcto) {
   if (correcto != undefined) {
      xml.ignoreWhite = true;
      xml.onLoad = alCargar;
      xml.load("bus_prod_local.php");
   } else {
      busca_txt.text = "No enviado";
   }
};

function alCargar() {
   numClips = xml.firstChild.childNodes.length;
   //trace(numClips);
   cadaRes = new Array(numClips);
   cadaMar = new Array(numClips);
   Duplica();
}
function Duplica() {
   for (i=0; i<numClips; i++) {
      clips = resulta_mc.duplicateMovieClip("d", this.getNextHighestDepth());
      clips._y = (clips._height+5)*i+dirY;
      cadaRes[i] = xml.firstChild.childNodes[i].childNodes[0].attributes.id;
      cadaMar[i] = xml.firstChild.childNodes[i].childNodes[1].attributes.marca;
      clips.datos_txt.text = cadaRes[i];
      clips.marca_txt.text = cadaMar[i];

   }
}


Como se puede ver, necesito presentar los datos en formato XML, asi hice la salida desde PHP. Lo hago asi por comodidad propia porque ya he leido varias veces xml's desde flash y me resulta mas sencillo duplicar los clips que mostraran los resultados de la busqueda, ademas habia leido por ahi que para la transmision de mucha cantidad de datos era el formato mas adecuado.
Aqui esta el PHP que se encarga de este trabajo:

Código PHP :

<?PHP
   $link = mysql_connect("localhost","root","");
         mysql_select_db("ngh");
   
   $busca_php = $_POST["busca"];
   $sql = "SELECT * FROM TMP_Productos WHERE id_productos='$busca_php'";
      
   $res = mysql_query($sql);
   $num = mysql_num_rows($res);
?>

<?PHP
   if ($num > 0){
      echo "<?xml version='1.0' encoding='UTF-8'?>\n";
      echo "<datos>\n";
      while ($rows = mysql_fetch_assoc($res)) {
         echo "<productos>\n";
         echo "<producto id='".$rows['id_productos']."'/>\n";
         echo "<producto marca='".$rows['nombre_marca_comercial']."'/>\n";
         echo "</productos>\n";
      }
      echo "</datos>\n";
   }
   mysql_close($link);
?>


La base de datos que tengo de ejemplo consta solo de dos campos y unos 20 registros. Por mas que he buscado no logro hacer que la variable desde flash se pase a PHP. No tengo idea que esta mal en el codigo.
Les ruego, si pueden, tomarse unos minutos para revisarlo para ver si pueden ayudarme con este codigo. Espero se haya entendido lo que quiero hacer, sino por favor no dejen de preguntarme las dudas.
El xml funciona con un listado completo con AS2, el php tambien pero por separado. Juntos.... no quieren.....
Muchisimas gracias
STARLANCER

Por starlancer

59 de clabLevel



 

msie
Citar            
MensajeEscrito el 16 Mar 2011 02:10 pm
Dos cosas te diría:

- Usa un solo echo en el PHP al final, acumula todo enun string, olvidate de \n y ponlo todo de corrido, a menos que quieras por algún motivo un XML "human readable"
- Construye un objeto XML con el string que recibes, Flash no interpreta que ese String largo sea un XML, incluso aunque le pongas los headers
- Traza lo que recibes en la función alCargar, lo puedes ver directamente dentro de Flash si usas una ruta absoluta al PHP

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Mar 2011 07:38 pm
Te ruego disculpes mi ignorancia, por favor. No entiendo mucho lo que me dices.
El tema del porque el xml lo arme asi, es mas por lectura mia que por otra cosa, me parece mas comodo para mi nada mas. De todas maneras, para probar quite los demas echos y solo deje el de "productos".
Te decia, no te entiendo mucho a la hora de trazar la funcion "alCargar", que me pone [type function]. La traza la hice desde dentro de la funcion, no se si debo hacerlo en otro lado. Si trazo la variable "recibir_lv", por ejemplo, aparecen los datos, con varios simbolos esos si, pero aparentemente estan los datos.
Y otra cosa que no te entendia es el tema de armar el xml partiendo de los datos que devuelve el string. Si pudieras explicarme un poco mas al respecto, te estaria profundamente agradecido.
Respecto a la ruta absoluta al php, te entendi perfecto y es mas comodo, no me habia dado cuenta de ello.

Muchisimas gracias
STARLANCER

Por starlancer

59 de clabLevel



 

msie
Citar            
MensajeEscrito el 16 Mar 2011 08:10 pm
Ok, acumular en un string en PHP sería

Código PHP :

$str = "";
$str.="<?xml version='1.0' encoding='UTF-8'?>"; 
      $str.="<datos>"; 
      while ($rows = mysql_fetch_assoc($res)) { 
         $str.="<productos>"; 
         $str.="<producto id='".$rows['id_productos']."'/>"; 
         $str.="<producto marca='".$rows['nombre_marca_comercial']."'/>"; 
         $str.="</productos>"; 
      } 
      $str.="</datos>"; 
      echo $str;


En cuanto a construir un objeto XML, en realidad lo que veo es que no necesitas el LoadVars, haz simplemente:

xml.load("bus_prod_local.php?key=busca_txt.text");

En PHP lo recibes por GET y te evitas la doble carga, que en realidad es por lo que se pierden los datos

$busca_php = $_GET["busca"];

Luego een la funcion alCargar trazas el XMl a ver si ha llegado

trace(xml)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Mar 2011 02:52 am
Gracias de nuevo.
Desde flash, el trace me sale este error:

<br /><b>Notice</b>: Undefined index: busca in <b>C:\wamp\www\Sitio 2011\bus_prod_local.php</b> on line <b>5</b><br /><br /><b>Notice</b>: Undefined variable: str in <b>C:\wamp\www\Sitio 2011\bus_prod_local.php</b> on line <b>26</b><br />

Las variables estan definidas e intente de ir paso a paso lo que me explicas. Al menos me aparecio algo ahora, ¿no?.
Espero puedas seguir ayudandome.

Muchas gracias

STARLANCER

Por starlancer

59 de clabLevel



 

msie
Citar            
MensajeEscrito el 17 Mar 2011 10:43 am
Arriba del PHP agrega esta línea para evitar notice:

error_reporting(E_ALL ^ E_NOTICE);

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Mar 2011 12:25 pm
Ya agregue para quitar el error. El primer error fue mio de todos modos, me olvide de agregar la variable al final de la direccion al archivo php desde flash.
Bueno, de cualquier manera, el trace ahora me devuelve vacio, no me muestra nada.
Nuevamente, gracias por seguir ayudandome.

STARLANCER

Por starlancer

59 de clabLevel



 

msie
Citar            
MensajeEscrito el 17 Mar 2011 02:02 pm
Antes de agregar "error_reporting" el error que mostraba desde el trace era este:

<br /><b>Notice</b>: Undefined variable: str in <b>C:\wamp\www\Sitio 2011\bus_prod_local.php</b> on line <b>28</b><br />

Anteriormente me habia equivocado yo. Al agregar el "error_reporting" como decia antes no me devuelve nada, solo vacio.

Gracias de nuevo
STARLANCER

Por starlancer

59 de clabLevel



 

msie
Citar            
MensajeEscrito el 17 Mar 2011 02:16 pm
Ok, ahora instálate Charles http://www.charlesproxy.com que te permitirá ver todo el tráfico del back-end y eventualmente capturar errores

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Mar 2011 05:25 pm
Ya instale Charles, interesante programa, no lo conocia. ¿Que debo hacer con el ahora?. Lo que recorri muestra en la pestaña "Overview" muestra datos de lo que seria la conexion y que fue completa. Por ejemplo en url dice "http://localhost/Sitio%202011/bus_prod_local.php?busca=busca_txt.text". En "Request" dice" busca busca_txt.text y haciendo doble click en este ultimo vuelve a decir lo mismo en una nueva ventana. Y en "Response" esta en blando, solo dos numeros de linea a la izquierda, 1 y 2, nada mas.
No se bien como se ultiliza este programa pero imagino que eso serian los datos importantes, ¿no?.

STARLANCER

Por starlancer

59 de clabLevel



 

msie
Citar            
MensajeEscrito el 17 Mar 2011 05:27 pm
En Request debería mostrarte el XML que produce el PHP, es decir no está imprimiendo nada. O no captura bien el parámetro, o tienes un problema en el echo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Mar 2011 05:49 pm
La unica diferencia que encuentro es que si quito el "error_reporting" en Response me muestra el error, o sea este:
<br />
<b>Notice</b>: Undefined variable: str in <b>C:\wamp\www\Sitio 2011\bus_prod_local.php</b> on line <b>28</b><br />

Esta como no definida la vatiable str de php. Pero en Request sigue saliendo busca busca_txt.text.
Del xml ni noticias.....
Desde flash pareceria que sale todo bien. Pero evidentemente falta algo, pero no se que pueda ser.

STARLANCER

Por starlancer

59 de clabLevel



 

msie
Citar            
MensajeEscrito el 17 Mar 2011 06:01 pm
Me parece que no captura el parametro, porque le agregue al echo una variable para igualarla al $str, de esta forma: echo "&resulta=".$str; y sin embargo me sale solo el mensaje "&resulta=" pero sin nada al lado. ¿Es posible que desde flash salga vacia la variable?.

STARLANCER

Por starlancer

59 de clabLevel



 

msie
Citar            
MensajeEscrito el 17 Mar 2011 06:43 pm
Mirando el request, estás pasando un string en vez del valor, fue un tipo de lo que te pasé, tiene que ser así:

xml.load("bus_prod_local.php?key="busca_txt.text);

Luego el PHP lo captura así:

$str = $_GET["key"];

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Mar 2011 02:37 am
Me di cuenta del error justo antes de entrar a ver el post. Estaba escribiendo "busca_txt.text" dentro de las comillas de lo que seria la direccion del php. Ya lo saque y ahora funciona de maravillas.
Faltan las palabras a veces por la ayuda que brindan en este foro, solo puedo decir mil gracias por la ayuda, especialemte a vos Jorge ( si estas en Argentina) o a ti ( si no lo estas..jajaja).

Puedo decir una vez mas, problema solucionado. Lastima que no tenga los conocimientos de ustedes como para colaborar tambien, pero al menos espero que el codigo que esta aca le sirva a otro y aprenda lo que aprendo yo.

Muchisimas gracias nuevamente y nos estaremos viendo en mi proximo problema, o sea, pronto....

STARLANCER

Por starlancer

59 de clabLevel



 

msie

 

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