Foros del Web » Programando para Internet » PHP »

¿Como mostrar el numero de resultados de una consulta a un XML condicionada?

Estas en el tema de ¿Como mostrar el numero de resultados de una consulta a un XML condicionada? en el foro de PHP en Foros del Web. Buen dia, sucede que solicito una consulta a un XML por medio de Php de la siguiente forma: Código PHP: <?php             $library  = new  SimpleXMLElement ...
  #1 (permalink)  
Antiguo 16/04/2012, 17:28
 
Fecha de Ingreso: septiembre-2010
Mensajes: 66
Antigüedad: 14 años, 2 meses
Puntos: 2
¿Como mostrar el numero de resultados de una consulta a un XML condicionada?

Buen dia, sucede que solicito una consulta a un XML por medio de Php de la siguiente forma:

Código PHP:
<?php       
    
$library 
= new SimpleXMLElement('library.xml'nulltrue); 

foreach( 
$library->mensaje as $mensaje){ $mensaje->titulo }  

?>
y el archivo xml tiene la siguiente forma:


Código PHP:
<?xml version="1.0" encoding="ISO-8859-1"?> 

<mensajes> 

<mensaje> 
    
    <titulo>Rock</titulo> 
     
  </mensaje>


<mensaje> 
    
    <titulo>Latin</titulo> 
     
  </mensaje>


<mensaje> 
    
    <titulo>Rock</titulo> 
     
  </mensaje>

Yo solicito el numero de resultados por medio del siguinete php

Código PHP:
<?php echo count($library->mensaje);?>

y me muestra 3, que es efectivamente el numero de <mensaje> en el XML.

Pero lo que yo quiero es que me muestre el numero de resultados si $mensaje->titulo == Rock es decir 2, he tratado de la siguiente forma pero no he podido:

Código PHP:
<?php echo count($library->mensaje)

{

if (
$mensaje->titulo == Rock)

}

;
?>
Muchas gracias.
  #2 (permalink)  
Antiguo 16/04/2012, 18:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: ¿Como mostrar el numero de resultados de una consulta a un XML condicionad

Es imposible hacer lo que quieres usando count, tienes que dentro de tu foreach() poner una variable que sea la que se incremente e incrementar la variable en cada vuelta de tu foreach y al final la imprimes.

Saludos.
  #3 (permalink)  
Antiguo 16/04/2012, 18:12
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: ¿Como mostrar el numero de resultados de una consulta a un XML condicionad

Podrías hacer algo así:

Código PHP:
Ver original
  1. <?php
  2. $library = new SimpleXMLElement('test.xml', null, true);
  3. echo count($library->xpath('//titulo[text() = "Rock"]')); //2

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #4 (permalink)  
Antiguo 16/04/2012, 18:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: ¿Como mostrar el numero de resultados de una consulta a un XML condicionad

Cierto con un xpath lo puedes hacer directamente
  #5 (permalink)  
Antiguo 16/04/2012, 19:41
 
Fecha de Ingreso: septiembre-2010
Mensajes: 66
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: ¿Como mostrar el numero de resultados de una consulta a un XML condicionad

Buen dia, muchas gracias a ambos por responder, si me sirvio

Código PHP:
<?php
$library 
= new SimpleXMLElement('test.xml'nulltrue);
echo 
count($library->xpath('//titulo[text() = "Rock"]')); //2
Pero no me reconoce una variable de la URL que introduzco de la siguiente manera

Código PHP:
echo count($library->xpath('//titulo[text() = $_GET["genero"]]')); //2 
Muchas gracias.
  #6 (permalink)  
Antiguo 16/04/2012, 20:55
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 21 años, 3 meses
Puntos: 105
Respuesta: ¿Como mostrar el numero de resultados de una consulta a un XML condicionad

Holas,

No seria asi?:

Código PHP:
Ver original
  1. echo count($library->xpath('//titulo[text() = "'.$_GET["genero"].'"]')); //2

Saludos
__________________
.: Gildus :.
  #7 (permalink)  
Antiguo 17/04/2012, 09:22
 
Fecha de Ingreso: septiembre-2010
Mensajes: 66
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: ¿Como mostrar el numero de resultados de una consulta a un XML condicionad

Muchas gracias gildus, si me sirvió como usted dijo.
  #8 (permalink)  
Antiguo 17/04/2012, 14:17
 
Fecha de Ingreso: septiembre-2010
Mensajes: 66
Antigüedad: 14 años, 2 meses
Puntos: 2
Pregunta ¿como limitar los resultados de una consulta condicionada a un XML?

Buen día, sucede que que solicito una consulta condicionada a un XML por medio de php de la siguiente forma:

Código PHP:
<?php      
   
$library 
= new SimpleXMLElement('library.xml'nulltrue);

foreach( 
$library->mensaje as $mensaje){

 if (
$mensaje->genero == "Rock"

{
$mensaje->titulo}

}

?>
Y efectivamente me muestra los resultados de los titulos cuando el genero es Rock, pero lo que quiero es limitar el numero de resultados a 20, he tratado lo siguiente:

Código PHP:
<?php      
   
$library 
= new SimpleXMLElement('library.xml'nulltrue);

$i 1; foreach( $library->mensaje as $mensaje){

 if( 
$i == 20 ) break;
 
$i++;

 if (
$mensaje->genero == "Rock"

{
$mensaje->titulo}

}

?>
El problema es que me muestra los resultados de los titulos cuando el genero es igual a Rock, pero dentro de las 20 primeras consultas, es decir que si en esas primeras 20 consultas solo hay 5 de Rock, entonces solo me muestra esas 5, siendo que yo quiero que me muestre 20 en total de Rock.

Muchas gracias.
  #9 (permalink)  
Antiguo 17/04/2012, 14:23
 
Fecha de Ingreso: abril-2008
Mensajes: 613
Antigüedad: 16 años, 7 meses
Puntos: 22
Respuesta: ¿como limitar los resultados de una consulta condicionada a un XML?

Hola,
Entiendo que solo quieres mostrar 20 de "rock". Sería así:

$library = new SimpleXMLElement('library.xml', null, true);

$i = 0;
foreach( $library->mensaje as $mensaje){

if ($mensaje->genero == "Rock") {
$i++;
$mensaje->titulo;
}

if( $i == 20 ) break;

}

Es más o menos lo mismo pero la distribución importa:)

Saludos
__________________
Compartir es vivir
www.programador-php.com
  #10 (permalink)  
Antiguo 17/04/2012, 14:51
 
Fecha de Ingreso: septiembre-2010
Mensajes: 66
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: ¿como limitar los resultados de una consulta condicionada a un XML?

Que tal exangel, me sirvio de maravilla, era lo que estaba buscado, en PHP el orden de los factores si altera el producto , aunque me arroja solo 19 resultados, entonces me toco cambiarlo a:

Código PHP:
if( $i == 21 ) break; 
de resto de maravilla y nuevamente gracias.
  #11 (permalink)  
Antiguo 17/04/2012, 17:00
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: ¿como limitar los resultados de una consulta condicionada a un XML?

Funciona pero no es la mejor forma de hacerlo, prefiero xpath para estas cosas para no tener que cargar todo el XML que es mucho más lento:

Código PHP:
Ver original
  1. $res = $library->xpath('(//titulo[text() = "Rock"])[position() <= 20]');

titulos Rock y limita a 20.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #12 (permalink)  
Antiguo 17/04/2012, 18:15
 
Fecha de Ingreso: septiembre-2010
Mensajes: 66
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: ¿como limitar los resultados de una consulta condicionada a un XML?

Que tal andresdzphp, trate de probar lo que comento pero me muestra Array, lo intente de la siguiente manera:

Código PHP:
<?PHP

$library 
simplexml_load_file("library.xml");

$res $library->xpath('(//titulo[text() = "Rock"])[position() <= 20]');

echo 
$res;

?>
Muchas gracias.
  #13 (permalink)  
Antiguo 17/04/2012, 18:46
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: ¿como limitar los resultados de una consulta condicionada a un XML?

Obviamente porque es un array de los 20 mensajes y lo tienes que recorrer con un foreach.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #14 (permalink)  
Antiguo 17/04/2012, 20:06
 
Fecha de Ingreso: septiembre-2010
Mensajes: 66
Antigüedad: 14 años, 2 meses
Puntos: 2
Pregunta ¿Como mostrar los resultados de una consulta a un XML que no sea desde el inicio?

Buen día, sucede que solicito una consulta condicionada a un XML por medio de PHP de la siguiente manera:

Código PHP:
<?php     

$i 
0;  
    
$library = new SimpleXMLElement('library.xml'nulltrue); 

foreach( 
$library->mensaje as $mensaje){ 

 if (
$mensaje->genero == "Rock")  {

$i++;

$mensaje->titulo



if( 
$i == 21 ) break;



?>
Lo anterior me muestra los 20 primeros títulos cuando el genero es "Rock", mi pregunta es como mostrar los siguientes 20 titulos, es decir que la consulta me muestre los resultados solo del 20 al 40 y no del 1 al 20.

Muchas gracias.
  #15 (permalink)  
Antiguo 17/04/2012, 23:03
 
Fecha de Ingreso: septiembre-2010
Mensajes: 66
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: ¿como limitar los resultados de una consulta condicionada a un XML?

Que tal andresdzphp, si me funciono pero lo probe de la siguiente manera:

Código PHP:
<?PHP

$library 
simplexml_load_file("library.xml");

$res $library->xpath('(//genero[text() = "Rock"])[position() <= 20]');

foreach (
$res as $art)
{
    
echo 
$art;

}

?>
Ya que si lo pruebo como usted dijo, no hay ningun valor donde el titulo sea igual a Rock. Ahora mi problema es como mostrar la variable titulo, ya que echo $art me muestra es la variable genero.

Muchas gracias.
  #16 (permalink)  
Antiguo 19/04/2012, 14:40
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: ¿Como mostrar el numero de resultados de una consulta a un XML condicionad

Disculpa por no responder rápido pero realmente no tenía tiempo...

Si entre mensaje tienes titulo y genero, podrías hacer algo así:

Código PHP:
Ver original
  1. <?php
  2. $library = new SimpleXMLElement('test.xml', null, true);
  3. $ti = $library->xpath('(//mensaje[genero="Rock"]/titulo)[position() <= 20]');
  4.  
  5. foreach ($ti as $t) {
  6.     echo $t . '<br />';
  7. }

Mostraría los títulos de los primeros 20 mensajes del genero Rock.

Ahora si lo que quieres es un condicional que te muestre del 20 al 40, puedes hacer algo así:

Código PHP:
Ver original
  1. <?php
  2. $library = new SimpleXMLElement('test.xml', null, true);
  3. $ti = $library->xpath('(//mensaje[genero="Rock"]/titulo)[(position() >= 20)  and (position() <= 40)]');
  4.  
  5. foreach ($ti as $t) {
  6.     echo $t . '<br />';
  7. }

Espero que te sirva, saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #17 (permalink)  
Antiguo 19/04/2012, 15:36
 
Fecha de Ingreso: abril-2008
Mensajes: 613
Antigüedad: 16 años, 7 meses
Puntos: 22
Respuesta: ¿Como mostrar el numero de resultados de una consulta a un XML condicionad

Hola,
No conocía el método XPATH, gracias por la aclaración.

saludos
__________________
Compartir es vivir
www.programador-php.com

Etiquetas: condicionada, limitar, numero, resultados, 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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 06:46.