Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Xml php

Estas en el tema de Xml php en el foro de PHP en Foros del Web. Buenos días, un cordial saludo, acudo a ustedes por ayuda tengo este XML: <?xml version='1.0' encoding='UTF-8' ?> <logros> <juego liga='NBA' > <equipo1 nombre='Chicago Bulls' referencia='701' ...
  #1 (permalink)  
Antiguo 29/12/2014, 09:21
 
Fecha de Ingreso: diciembre-2014
Mensajes: 69
Antigüedad: 9 años, 3 meses
Puntos: 2
Xml php

Buenos días, un cordial saludo, acudo a ustedes por ayuda tengo este XML:
<?xml version='1.0' encoding='UTF-8' ?>
<logros>
<juego liga='NBA' >
<equipo1 nombre='Chicago Bulls' referencia='701' ml='0' rl='-5.5 -110' ab='194 -115' srl='0 0' pml='0' prl='-2.5 -105' pab='0 0'/>
<equipo2 nombre='Indiana Pacers' referencia='702' ml='0' rl='5.5 -110' ab='194 -115' srl='0 0' pml='0' prl='2.5 -105' pab='0 0'/>
</juego>
<juego liga='NBA' >
<equipo1 nombre='Milwaukee Bucks' referencia='703' ml='0' rl='3 -119' ab='196.5 -115' srl='0 0' pml='0' prl='1.5 -105' pab='0 0'/>
<equipo2 nombre='Charlotte Hornets' referencia='704' ml='0' rl='-3 -102' ab='196.5 -115' srl='0 0' pml='0' prl='-1.5 -105' pab='0 0'/>
</juego>
<juego liga='NBA' >
<equipo1 nombre='Orlando Magics' referencia='705' ml='0' rl='0 0' ab='0 0' srl='0 0' pml='0' prl='0 0' pab='0 0'/>
<equipo2 nombre='Miami Heat' referencia='706' ml='0' rl='0 0' ab='0 0' srl='0 0' pml='0' prl='0 0' pab='0 0'/>
</juego>
<juego liga='NBA' >
<equipo1 nombre='Sacramento Kings' referencia='707' ml='0' rl='1.5 -110' ab='204.5 -115' srl='0 0' pml='0' prl='0 100' pab='0 0'/>
<equipo2 nombre='Brooklyn Nets' referencia='708' ml='0' rl='-1.5 -110' ab='204.5 -115' srl='0 0' pml='0' prl='0 -110' pab='0 0'/>
</juego>
<juego liga='NBA' >
<equipo1 nombre='Washington Wizards' referencia='709' ml='0' rl='4 -110' ab='198 -115' srl='0 0' pml='0' prl='2 -110' pab='0 0'/>
<equipo2 nombre='Houston Rockets' referencia='710' ml='0' rl='-4 -110' ab='198 -115' srl='0 0' pml='0' prl='-2 100' pab='0 0'/>
</juego>
<juego liga='NBA' >
<equipo1 nombre='Utah Jazz' referencia='711' ml='0' rl='12 -110' ab='203.5 -115' srl='0 0' pml='0' prl='7 -105' pab='0 0'/>
<equipo2 nombre='LA Clippers' referencia='712' ml='0' rl='-12 -110' ab='203.5 -115' srl='0 0' pml='0' prl='-7 -105' pab='0 0'/>
</juego>
</logros>


y me gustaria con php leerlo y crear una trabla que me permita colocar los equipos de la siguiente manera:


Equipo1 con su nombre y elementos
Equipo2 con su nombre y elementos

obviamente es un array por lo que utilizado foreach pero no logro hacer lo que quiero, adjunto el codigo que he hecho a ver si me pueden ayudar.

<table>
<tr>
<td style="width: 200px">Equipo</td>
<td style="width: 200px">Referencia</td>
<td style="width: 200px">Money Line</td>
<td style="width: 200px">Run Line</td>
<td style="width: 200px">A/B</td>
</tr>
</table>
<?php
$objDOM = new DOMDocument();
$objDOM->load("http://ws1.incasports.com/reporte/logrosdeporte.php?liga=nba");
echo $objDOM->saveXML();
$dataNodes = $objDOM->getElementsByTagName("equipo1");
foreach( $dataNodes as $node )
{
$name = $node->getAttribute("nombre");
$ref = $node->getAttribute("referencia");
$ml = $node->getAttribute("ml");
$rl = $node->getAttribute("rl");
$ab = $node->getAttribute("ab");
echo "<table style=height: 200px>";
echo "<tr>";
echo "<td style=width:200px></td>";
echo "<td style=width:200px></td>";
echo "<td style=width:200px></td>";
echo "<td style=width:200px></td>";
echo "<td style=width:200px></td>";
echo "</tr>";
echo "<tr>";
echo "<td style=height: 5px>$name</td>";
echo "<td>$ref</td>";
echo "<td>$ml</td>";
echo "<td>$rl</td>";
echo "<td>$ab</td>";
echo "</tr>";
echo "</table>";
}
?>

De ante mano muchas gracias por su ayuda
  #2 (permalink)  
Antiguo 29/12/2014, 10:05
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 10 meses
Puntos: 127
Respuesta: Xml php

Hola
Pase por aqui y quise ayudarte:
Código PHP:
<?
$objDOM 
= new DOMDocument();
$objDOM->load("http://ws1.incasports.com/reporte/logrosdeporte.php?liga=nba");
$equi=$dataNodes $objDOM->getElementsByTagName("juego");
foreach( 
$equi as $node ){
  foreach( 
$node->childNodes as $nod ){
    
$nobre_equipo=$nod->tagName;
    
$numero_de_equipo=substr($nod->tagName,6);
    if(!
in_array($numero_de_equipo$equipos) && $nobre_equipo!=NULL){
      
$equipos[]=$numero_de_equipo;
    }
  }
}
foreach(
$equipos as $num){
$dataNodes $objDOM->getElementsByTagName("equipo".$num);?>
<table >
<tr>
<td style="width: 200px">Equipo <?=$num?></td>
<td style="width: 200px">Referencia</td>
<td style="width: 200px">Money Line</td>
<td style="width: 200px">Run Line</td>
<td style="width: 200px">A/B</td>
</tr>
<?
  
foreach( $dataNodes as $node ){
  
$name $node->getAttribute("nombre");
  
$ref $node->getAttribute("referencia");
  
$ml $node->getAttribute("ml");
  
$rl $node->getAttribute("rl");
  
$ab $node->getAttribute("ab");?>
  <tr>
  <td style=height: 5px><?=$name?></td>
  <td><?=$ref?></td>
  <td><?=$ml?></td>
  <td><?=$rl?></td>
  <td><?=$ab?></td>
  </tr>
  <? }?>
</table>
<br><br>
<? }?>
esa es la Solucion
aqui puedes ver como queda: http://creaelicita.cl/ayuda/foro_1117035.php
  #3 (permalink)  
Antiguo 29/12/2014, 10:54
 
Fecha de Ingreso: diciembre-2014
Mensajes: 69
Antigüedad: 9 años, 3 meses
Puntos: 2
Respuesta: Xml php

Muchas gracias por tu respuesta, realmente estoy muy agradecido, aunque trate de correr el código y no me sirve, mi intencion es mezclar los equipos por ejemplo:
Chicago Bulls 701 -215 -5 -110 194 -115
Indiana Pacers 702 180 5 -110 194 -115

osea el primer nombre del equipo 1 vs el primer nombre del equipo 2
luego el segundo del equipo 1 vs el segundo del equipo 2
y asi sucesivamente

de todos modos muy agradecido..

Última edición por grossbergsteven; 29/12/2014 a las 11:44
  #4 (permalink)  
Antiguo 29/12/2014, 11:54
 
Fecha de Ingreso: septiembre-2013
Mensajes: 125
Antigüedad: 10 años, 6 meses
Puntos: 3
Yo no lo haria de esa manera, yo extraeria toda la pagina y la guardaria en una funcion y despues obtendria los valores que estan dentro de las etiquetas y despues lo guardaria en la db

Última edición por Strings; 29/12/2014 a las 12:09
  #5 (permalink)  
Antiguo 29/12/2014, 14:04
 
Fecha de Ingreso: diciembre-2014
Mensajes: 69
Antigüedad: 9 años, 3 meses
Puntos: 2
Respuesta: Xml php

Bueno cualquier ayuda es bienvenida
  #6 (permalink)  
Antiguo 29/12/2014, 14:19
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 10 meses
Puntos: 127
Respuesta: Xml php

entonces esto es lo que buscas
creaelicita.cl/ayuda/foro_1117035.php

hice una pequeña modificacion al codigo asi que ahora es lo que pides; (no se si lo entiendas pero es la solucion sin bases de datos );

Código PHP:
<?
$objDOM 
= new DOMDocument();
$objDOM->load("http://ws1.incasports.com/reporte/logrosdeporte.php?liga=nba");
$equi=$dataNodes $objDOM->getElementsByTagName("juego");
foreach( 
$equi as $node ){
  foreach( 
$node->childNodes as $nod ){
    
$nobre_equipo=$nod->tagName;
    
$numero_de_equipo=substr($nod->tagName,6);
    if(!
in_array($numero_de_equipo$equipos) && $nobre_equipo!=NULL){
      
$equipos[]=$numero_de_equipo;
    }
  }
}
foreach(
$equipos as $num){
$dataNodes $objDOM->getElementsByTagName("equipo".$num);
     foreach( 
$dataNodes as $node ){
      
$name $node->getAttribute("nombre");
      
$ref $node->getAttribute("referencia");
      
$ml $node->getAttribute("ml");
      
$rl $node->getAttribute("rl");
      
$ab $node->getAttribute("ab");
      
$data[]=array($name,$ref,$ml,$rl,$ab);
    }
$N_equipos[$num]=$data;
unset(
$data);
}



for(
$i=0$i<count($N_equipos[$equipos[0]]); $i++){
?>
<table border="1" cellpadding="0" cellspacing="0" >
<tr>
<td style="width: 200px">Equipo <?=$i+1?></td>
<td style="width: 200px">Referencia</td>
<td style="width: 200px">Money Line</td>
<td style="width: 200px">Run Line</td>
<td style="width: 200px">A/B</td>
</tr>
<?
$mostrar
[]=$N_equipos[$equipos[0]][$i];
$mostrar[]=$N_equipos[$equipos[1]][$i];
  foreach(
$mostrar as $node ){
  
$name $node[0];
  
$ref $node[1];
  
$ml $node[2];
  
$rl $node[3];
  
$ab $node[4];?>
  <tr>
  <td style="height: 5px"><?=$name?></td>
  <td><?=$ref?></td>
  <td><?=$ml?></td>
  <td><?=$rl?></td>
  <td><?=$ab?></td>
  </tr>
  <?
 
unset($mostrar);
  }
?>
</table>
<br><br>
<? }?>
  #7 (permalink)  
Antiguo 29/12/2014, 14:30
 
Fecha de Ingreso: diciembre-2014
Mensajes: 69
Antigüedad: 9 años, 3 meses
Puntos: 2
Respuesta: Xml php

De verdad te estoy muy agradecido enlinea777 también soy cristiano y aprecio tu ayuda muchisimo, pero creo que no me explique bien, lo quee necesito es que quede como esta en el xml ahi un ejemplo

http://incasports.com:8080/play/listLogroReport.do?idDeporte=6&titulo=Basketball

osea necesito colocar el foreach por juego
  #8 (permalink)  
Antiguo 30/12/2014, 08:22
 
Fecha de Ingreso: diciembre-2014
Mensajes: 69
Antigüedad: 9 años, 3 meses
Puntos: 2
Respuesta: Xml php

Por favor ayuda a un alma caritativa yo arme este pero no me da completo el segundo equipo

<table>
<tr>
<td style="width: 200px">Equipo</td>
<td style="width: 200px">Referencia</td>
<td style="width: 200px">Money Line</td>
<td style="width: 200px">Run Line</td>
<td style="width: 200px">A/B</td>
</tr>
</table>
<?php
$objDOM = new DOMDocument();
$objDOM->load("http://ws1.incasports.com/reporte/logrosdeporte.php?liga=nba");
echo $objDOM->saveXML();
$objDOM2 = new DOMDocument();
$objDOM2->load("http://ws1.incasports.com/reporte/logrosdeporte.php?liga=nba");
echo $objDOM2->saveXML();
$dataNodes = $objDOM->getElementsByTagName("equipo1");
$dataNodes2 = $objDOM2->getElementsByTagName("equipo2");
foreach( $dataNodes as $node ){
$name = $node->getAttribute("nombre");
foreach( $dataNodes2 as $node2 );
$name2 = $node2->getAttribute("nombre");

{

}
echo "<table style=height: 200px>";
echo "<tr>";
echo "<td style=width:200px></td>";
echo "</tr>";
echo "<tr>";
echo "<td>$name</td>";
echo "</tr>";
echo "<tr>";
echo "<td>$name2</td>";
echo "</tr>";
echo "</table>";
}
?>
  #9 (permalink)  
Antiguo 30/12/2014, 08:26
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 10 meses
Puntos: 127
Respuesta: Xml php

Pues solo hay que modificar un poco el codigo:

http://creaelicita.cl/ayuda/foro_1117035_v2.php

Código PHP:
<?
$objDOM 
= new DOMDocument();
$objDOM->load("http://ws1.incasports.com/reporte/logrosdeporte.php?liga=nba");
$equi=$dataNodes $objDOM->getElementsByTagName("juego");
foreach( 
$equi as $node ){
  foreach( 
$node->childNodes as $nod ){
    
$nobre_equipo=$nod->tagName;
    
$numero_de_equipo=substr($nod->tagName,6);
    if(!
in_array($numero_de_equipo$equipos) && $nobre_equipo!=NULL){
      
$equipos[]=$numero_de_equipo;
    }
  }
}
foreach(
$equipos as $num){
$dataNodes $objDOM->getElementsByTagName("equipo".$num);
     foreach( 
$dataNodes as $node ){
      
$name $node->getAttribute("nombre");
      
$ref $node->getAttribute("referencia");
      
$ml $node->getAttribute("ml");
      
$rl $node->getAttribute("rl");
      
$ab $node->getAttribute("ab");
      
$data[]=array($name,$ref,$ml,$rl,$ab);
    }
$N_equipos[$num]=$data;
unset(
$data);
}

?>
<table border="1" cellpadding="0" cellspacing="0" >
<tr>
<td style="width: 200px">Equipo </td>
<td style="width: 200px">Referencia</td>
<td style="width: 200px">Money Line</td>
<td style="width: 200px">Run Line</td>
<td style="width: 200px">A/B</td>
</tr>
<?
for($i=0$i<count($N_equipos[$equipos[0]]); $i++){
$mostrar[]=$N_equipos[$equipos[0]][$i];
$mostrar[]=$N_equipos[$equipos[1]][$i];
  foreach(
$mostrar as $node ){
  
$name $node[0];
  
$ref $node[1];
  
$ml $node[2];
  
$rl $node[3];
  
$ab $node[4];?>
  <tr>
  <td style="height: 5px"><?=$name?></td>
  <td><?=$ref?></td>
  <td><?=$ml?></td>
  <td><?=$rl?></td>
  <td><?=$ab?></td>
  </tr>
  <?
 
unset($mostrar);
  }
?>

<? }?>
</table>
mira, yo veo que esta igual:
  #10 (permalink)  
Antiguo 30/12/2014, 08:50
 
Fecha de Ingreso: diciembre-2014
Mensajes: 69
Antigüedad: 9 años, 3 meses
Puntos: 2
Respuesta: Xml php

Excelente ahora si, una ultima consulta, que posibilidad hay de que en las altas y bajas $ab en vez de mostrar valores .5 muestre 1/2? y con esto cierro este tema y obviamente muy agradecido, que Dios te multiplique en salud y felicidad
  #11 (permalink)  
Antiguo 30/12/2014, 08:56
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 10 meses
Puntos: 127
Respuesta: Xml php

aqui otro ejemplo aun mas simple.

Código PHP:
<?
$xml 
simplexml_load_file("http://ws1.incasports.com/reporte/logrosdeporte.php?liga=nba");
$juegos=$xml->juego;
?>
<table border="1" cellpadding="0" cellspacing="0" >
<tr>
<td style="width: 200px">Equipo </td>
<td style="width: 200px">Referencia</td>
<td style="width: 200px">Money Line</td>
<td style="width: 200px">Run Line</td>
<td style="width: 200px">A/B</td>
</tr>
<?
foreach( $juegos as $node ){
    
$atrib_equi[]=$node->equipo1->attributes();
    
$atrib_equi[]=$node->equipo2->attributes();
    foreach(
$atrib_equi as $at){
    
?>
  <tr>
  <td style="height: 5px"><?=$at['nombre']?></td>
  <td><?=$at['referencia']?></td>
  <td><?=$at['ml']?></td>
  <td><?=$at['rl']?></td>
  <td><?=$at['ab']?></td>
  </tr>
  
        <? }
unset(
$atrib_equi);
}
?>
</table>
eso del ab no lo entendi muy bien, a que te refires?
  #12 (permalink)  
Antiguo 30/12/2014, 09:00
 
Fecha de Ingreso: diciembre-2014
Mensajes: 69
Antigüedad: 9 años, 3 meses
Puntos: 2
Respuesta: Xml php

el resultado de el xml en ab en algunas ocaciones da un numero con un .5 ejemplo Detroit 195.5 yo quiero mostrar 195 1/2 osea que donde exista un numero con punto cinco lo cambie al mismo numero pero con 1/2 de 195.5 a 195 1/2
  #13 (permalink)  
Antiguo 30/12/2014, 12:03
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 10 meses
Puntos: 127
Respuesta: Xml php

asi seria:
http://creaelicita.cl/ayuda/foro_1117035_v3.php

Código PHP:
<?
$xml 
simplexml_load_file("http://ws1.incasports.com/reporte/logrosdeporte.php?liga=nba");
$juegos=$xml->juego;
?>
<table border="1" cellpadding="0" cellspacing="0" >
<tr>
<td style="width: 200px">Equipo </td>
<td style="width: 200px">Referencia</td>
<td style="width: 200px">Money Line</td>
<td style="width: 200px">Run Line</td>
<td style="width: 200px">A/B</td>
</tr>
<?
foreach( $juegos as $node ){
    
$atrib_equi[]=$node->equipo1->attributes();
    
$atrib_equi[]=$node->equipo2->attributes();
    foreach(
$atrib_equi as $at){
    
?>
  <tr>
  <td style="height: 5px"><?=$at['nombre']?></td>
  <td><?=$at['referencia']?></td>
  <td><?=$at['ml']?></td>
  <td><?=$at['rl']?></td>
  <td><?=str_replace(".5"," 1/2",$at['ab'])?></td>
  </tr>
  
        <? }
unset(
$atrib_equi);
}
?>
</table>
  #14 (permalink)  
Antiguo 05/01/2015, 10:23
 
Fecha de Ingreso: diciembre-2014
Mensajes: 69
Antigüedad: 9 años, 3 meses
Puntos: 2
Respuesta: Xml php

Excelente muchas gracias por la ayuda, ya lo logre, ahora otra pregunta, como puedo hacer para que en la tabla cada equipo en pareja aparezca de un color? osea el row 1 y 2 color amarrilo y 3 y 4 rojo y así sucesivamente no se si me explico bien
  #15 (permalink)  
Antiguo 05/01/2015, 10:34
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 10 meses
Puntos: 127
Respuesta: Xml php

ASI:
Código PHP:
<?
$colores
=array('color1','color2','color3');

foreach( 
$juegos as $node ){


    
$atrib_equi[]=$node->equipo1->attributes();
    
$atrib_equi[]=$node->equipo2->attributes();
    foreach(
$atrib_equi as $at){
    
?>
  <tr>
  <td style="height: 5px; color: <?=current($colores);?>;"><?=$at['nombre']?></td>
  <td><?=$at['referencia']?></td>
  <td><?=$at['ml']?></td>
  <td><?=$at['rl']?></td>
  <td><?=str_replace(".5"," 1/2",$at['ab'])?></td>
  </tr>
  
        <?
next
($colores);
  #16 (permalink)  
Antiguo 05/01/2015, 11:32
 
Fecha de Ingreso: diciembre-2014
Mensajes: 69
Antigüedad: 9 años, 3 meses
Puntos: 2
Respuesta: Xml php

Tu sabes más que pescado salado gracias

Etiquetas: programacion, xml
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 04:54.