Comunidad de diseño web y desarrollo en internet online

MOSTRAR DATOS DE MYSQL POR MEDIO DE PHP Y XML

Citar            
MensajeEscrito el 08 Jul 2009 08:27 pm

MOSTRAR DATOS DE MYSQL POR MEDIO DE PHP Y XML



Estoy intentando hacer una aplicacion que me muestre los datos que residen en una base de datos mysql.
He recogido las filas de mysql por medio de mysql_fetch_array sacando asi $row['combre columna']
y seguidamente cada una de ellas la e agregado a un atributo en xml para pasar las variables a flash de esta manera..
$xml = "<agenda>
<nombre id=' ".$row['id']." ' mensaje=' ".$row['mensaje']." '>
</nombre>
</agenda>

he hecho (echo) en php y las filas me las devuelve bien (7 filas que tengo) por medio de un bucle while,el problema esta
que cuando llegan esas variables a flash solo aparece la ultima fila,como si me machacara la variable..
He probado hacerlo con un array pero no e dado con ello..
Lo que intento sacar es una aplicacion con flash que pueda recorrer las filas que hay en la bb.dd una por una por medio de botones hecho en flash..

Si alguien tiene una idea de como hacerlo o de darme una pista se lo agradeceria
gracias de ante mano.

Por locks13

25 de clabLevel



 

msie8
Citar            
MensajeEscrito el 09 Jul 2009 01:13 pm
Lo que debe cargar Flash es un XML, algo así como:

myXML.load("algun.php")

Donde algun.php es el archivo que imprime tus datos como 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 09 Jul 2009 01:20 pm
si si Solisarg

y asi lo tengo
creo un nuevo objeto xml
lo cargo con load onLoad etc
y luego accedo a los nodos de xml,hasta ahi perfecto,todo funciona bien

pero el tema es que muestro la variable en un campo de texto dinamico de esta forma

campodin_txt.text = id;

pero claro esa variable porta una columna entera con X filas y solo me muestra la ultima fila recibida

gracias por tu atencion y tu tiempo

Por locks13

25 de clabLevel



 

msie8
Citar            
MensajeEscrito el 09 Jul 2009 01:21 pm
Estás parseando mal el 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 09 Jul 2009 01:27 pm
y como crees q deberia hacerlo?

esa variable porta todas las filas de esa columna





gracias un saludo

Por locks13

25 de clabLevel



 

msie8
Citar            
MensajeEscrito el 09 Jul 2009 01:28 pm
Pon el code relevante de como lo estás haciendo

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 Jul 2009 01:36 pm
//Aqui el php con el que creo el xml y saco los datos de la bb.dd

Código :

<?php

$link = mysql_connect('localhost','root','contrasenia')or die('no pudo conectar');

if ($link) {
   $bd = mysql_select_db('basedatos',$link);
   
   if ($bd) {
   $sqla = "select * from datos";
  

   $query = mysql_query($sqla,$link) or die(mysql_error());
   
   $total = mysql_num_rows($query);
  
 if ($total> 0) {

         while($row = mysql_fetch_array($query)){


$xml = "<?xml version='1.0' encoding='utf-8'?><agenda><nodo id='".$row['id']."' mensaje=' ".$row['mensaje']." '></nodo></agenda>";

$nombre = "archivo.xml";
$open = fopen($nombre,"w+");
         fwrite($open,$xml);
         fclose($open);
        
    }      
 }
}
}
?>



// y este codigo para FLASHHH
/////////////////////////////////

Código ActionScript :

System.useCodepage = true;

var xml = new XML();
xml.ignoreWhite = true;
xml.load("archivo.xml");
//se activa y llama a la funcion cargar datos
xml.onLoad = ordenarXml;

function ordenarXml(){
   var indice:Number;
   indice = 0;
    cargarDatos(indice);
}
//recoge las variables del xml
   function cargarDatos(_indice) { 
          id = xml.firstChild.childNodes[_indice].attributes.id;
 mensaje = xml.firstChild.childNodes[_indice].attributes.mensaje;

//muestra las variables en el campo de texto dinamico
   iddin_txt.text = id;
   mensdin_txt.text = mensaje;
   }



espero que te sirva
gracias por tu ayuda jorge

Por locks13

25 de clabLevel



 

msie8
Citar            
MensajeEscrito el 09 Jul 2009 01:50 pm
yo no entiendo mucho de esto,estoy aprendiendo
pero lo que quiero hacer es recoger esas filas de la base de datos y ir recorriendolas por medio de un boton.

pero el problema es q al mostrarlo en un campo de texto,si mi variable contiene 7 filas solo me muestra el ultimo mensaje(ultima fila).
Pra empezar me gustaria poderlo ver como en flash..cuando hacemos ECHO por medio de while y nos muestra desde la primera fila hasta la ultima.

Deberia hacer como en php?
con un while o if??
para sacar cada una de las filas ??

Graciass

Por locks13

25 de clabLevel



 

msie8
Citar            
MensajeEscrito el 09 Jul 2009 01:52 pm
Según entiendo, esto:

id = xml.firstChild.childNodes[_indice].attributes.id;

Apunta a la propiedad id de una de las ramas, es decir un solo número, si tienes 7, deberías usar un loop (la propiedad length de childNodes te lo indica) ... algo así

Código ActionScript :

...
xml.onLoad = muestraDatos; 
 function muestraDatos() {  
          var cant:Number = xml.firstChild.childNodes.length
          for(var i:Number =0; i<cant; i++) {
             id = xml.firstChild.childNodes[i].attributes.id; 
              mensaje = xml.firstChild.childNodes[i].attributes.mensaje; 
             trace("Id: "+id+" Mensaje "+mensaje)
   } 


Luego no hace falta que el PHP escriba un archivo, de hecho está repitiendo el encabezado cada vez, si abres edl XML generado lo verás, cámbialo así:

Código :

 $query = mysql_query($sqla,$link) or die(mysql_error());
   $total = mysql_num_rows($query);
 if ($total> 0) {
        echo "<?xml version='1.0' encoding='utf-8'?><agenda>";
         while($row = mysql_fetch_array($query)) echo "<nodo id='".$row['id']."' mensaje=' ".$row['mensaje']." '></nodo>";
        echo "</agenda>";
}


Puedes abrir directamente el PHP en el navegador para ver la salida. Luego lo cargas directamente, usando ruta absoluta para que puedas ver los trace dentro de Flash:

xml.load("http://localhost/script.php");

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos



Ultima edición por solisarg el 09 Jul 2009 02:50 pm, editado 2 veces

Argentina

firefox
Citar            
MensajeEscrito el 09 Jul 2009 01:54 pm
ok muchas graciass

voy a probar esto
luego te cuento un saludo

Por locks13

25 de clabLevel



 

msie8
Citar            
MensajeEscrito el 09 Jul 2009 02:45 pm
no me sale como tu dicesss

he puesto todo como me dices...

a la variable del lopp (i) la e inicializado me daba error


function cargarDatos(_indice) {
var i = 0;
var cant:Number = xml.firstChild.childNodes.length;
for( i:Number; i<cant; i++) {
id = xml.firstChild.childNodes[_indice].attributes.id;
chiste = xml.firstChild.childNodes[_indice].attributes.mensaje;
trace("Id: "+id+" mensaje "+mensaje);
}

aun asi ahora mismo en la salida me devuelve 3 filas.es el 1 mensaje repetido 3 veces

cuando cambie en el php lo que me dijistes,observe como tenia el xml y el fallo estaba ahi
me pasaba solamente el ultimo mensaje...

pero no se donde estoy fallando

gracias por tu ayuda

Por locks13

25 de clabLevel



 

msie8
Citar            
MensajeEscrito el 09 Jul 2009 02:51 pm
Vale, he puesto un poco rápido lo de muestraDatos()
He editado mi POST anterior, revisalo y revisa tu función

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 Jul 2009 03:07 pm
van apareciendo...pero solo me saca 3 mensajes y hay 7 en total
lo q tengo hecho en php..

//codigo php

<?php

$link = mysql_connect('localhost','root','')or die('no pudo conectar');

if ($link) {
$bd = mysql_select_db('basedatos',$link);

if ($bd) {
$sqla = "select * from datos";


$query = mysql_query($sqla,$link) or die(mysql_error());

$total = mysql_num_rows($query);

if ($total> 0) {
echo "<?xml version='1.0' encoding='utf-8'?><agenda>";

while($row = mysql_fetch_array($query)) echo "<nodo id='".$row['id']."' mensaje='".$row['mensaje']."'></nodo>";
echo "</agenda>";

}

}
}
?>


//CODIGO ACTION SCRIPT




System.useCodepage = true;

var xml = new XML();
xml.ignoreWhite = true;
xml.load("http://localhost/eje.php");
//se activa y llama a la funcion cargar datos
xml.onLoad = ordenarXml;

function ordenarXml(){
var indice:Number;
indice = 0;
cargarDatos(indice);
}
//recoge las variables del xml
function cargarDatos(_indice) {

var cant:Number = xml.firstChild.childNodes.length
for(var i:Number=0; i<cant; i++) {
id = xml.firstChild.childNodes[i].attributes.id;
chiste = xml.firstChild.childNodes[i].attributes.mensajechiste;
trace("Id: "+id+" mensaje "+mensaje);
}

//muestra las variables en el campo de texto dinamico
iddin_txt.text = id;
mensdin_txt.text = mensaje;
}





ASI ES COMO LO TENGO
pero solo me devuelve 3 fialas de 7 q hay

gracias jorge por todo

Por locks13

25 de clabLevel



 

msie8
Citar            
MensajeEscrito el 09 Jul 2009 03:11 pm
Pasar por ordenarXml no es necesario en absoluto, ya que ignora el parámetro indices.
Luego si solo muestra 3 de 7, es probable que el XML tenga algún error que haga que la propiedad childNodes.length se lea incorrecta, abre el php directamente en el; navegador y chequea que el XML se vea correctamente

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 Jul 2009 05:05 pm
no doy con ello.
este es el error que me da la pagina php en el navegador

No se puede mostrar la página XML
No se puede ver la entrada XML con la hoja de estilo XSL.
Se encontró un carácter no válido en el contenido del texto



puede ser por que el contenido del mensaje lleve interrogaciones o caracteres especiales??
Este es el codigo php q tengo.

<?php

$link = mysql_connect('localhost','root','')or die('no pudo conectar');

if ($link) {
$bd = mysql_select_db('chistexuly',$link);

if ($bd) {
$sqla = "select * from datos";


$query = mysql_query($sqla,$link) or die(mysql_error());

$total = mysql_num_rows($query);

if ($total> 0) {

echo "<?xml version='1.0' encoding='utf-8'?><agenda>";

while($row = mysql_fetch_array($query))
echo "<nodo id='".$row['id']."' chiste='".$row['chiste']."'></nodo>";
echo "</agenda>";
}

}
}
?>

gracis por tu tiempo y tu ayuda

Por locks13

25 de clabLevel



 

msie8
Citar            
MensajeEscrito el 09 Jul 2009 05:14 pm
Exacto ... si usas IE para visualizarlo te muestra donde está el error

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 Jul 2009 05:19 pm
lo uso
pero no entiendo a que se refiere..
como no sean los datos de las filas q contienen caracteres especiales
no se de que puede ser


esta forma que mas dejado de mostrar el xml en vez de crearlo la desconozco,
por eso mismo estoy dando golpes de ciego.

me dice el error q te dicho
pero no me indica donde exactamente
me muestra algo de codigo xml to cambiado..patas arriba

probare a cambiar los nodos de lugar en el while..

lo q tambien me extraña es que tu me has pasado el codigo del while sin llaves..
si le pongo las llaves mucho peor,solo pasa una fila

siento la guerra que te estoy dando..
es de agradecer lo que haces
un saludo

Por locks13

25 de clabLevel



 

msie8
Citar            
MensajeEscrito el 09 Jul 2009 05:21 pm
Es un caracter especial en ese nodo ... revisa el nodo 4, quita cualquier caracter sospechoso, cárgalo de nuevo y así sucesivamente hasta que descubras cual es el caraçter y te deje de dar error (usualmente son signos de puntuación o acentos)

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 Jul 2009 05:24 pm
debe ser por que la sintaxis del codigo lo veo bien
por mas vueltas que le doy mejor lo veo

estoy en ello quitando caracteres que tenga la base de datos.


por que la cabecera del xml no sera no??

he leido problemas respecto a utf-8 por eso lo digo
o un problema de mysql de cotejamiento..

gracias jorge un abrazo

Por locks13

25 de clabLevel



 

msie8
Citar            
MensajeEscrito el 09 Jul 2009 05:38 pm
pues si.

son los acentoss y las ñ me parece que tambien





Ahora mirare por ahi haber si encuentro una manera de poder crear un boton y ir pasando mensaje por mensaje,
creo que lo mas dificl ya esta hecho

un saludo
y gracias por tu ayuda jorge.

Por locks13

25 de clabLevel



 

msie8

 

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