Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/07/2009, 11:26
gesking
 
Fecha de Ingreso: diciembre-2006
Mensajes: 294
Antigüedad: 17 años, 5 meses
Puntos: 2
Mostrar X cantidad de noticias

Hola, he realizado un código php que lo que hace es leer un RSS de un diario (el codigo XML) y utilizo los datos del mismo para mostrarlos en mi pagina web.
Esto es para tener noticias actualizadas constantemente sin tener que cambiarlas yo mismo.

El problema es el siguiente: La pagina hay veces que tiene 7 noticias, otras 10... 15... etc... es depende del dia. Entonces lo que hice fue calcularle el total de las noticias y la llame $total. Pero solo quiero mostrar las 3 ultimas noticias, es decir, solo mostrar las 3 primeras que aparecen. Y ahi esta el problema.... Digo que de todas no muestre ninguna solo 3, pero me muestra las 3 ultimas y necesito que me muestre las 3 primeras.....

Aca les dejo el codigo:
Código PHP:
set_time_limit(0);

$file = "http://www.ambito.com/rss/noticias.asp?S=Economía";

$rss_channel = array();
$currently_writing = "";
$main = "";

function startElement($parser, $name, $attrs) {
       global $rss_channel, $currently_writing, $main;
       switch($name) {
           case "RSS":
           case "RDF:RDF":
           case "ITEMS":
               $currently_writing = "";
               break;
           case "CHANNEL":
               $main = "CHANNEL";
               break;
           case "IMAGE":
               $main = "IMAGE";
               $rss_channel["IMAGE"] = array();
               break;
           case "ITEM":
               $main = "ITEMS";
               break;
           default:
               $currently_writing = $name;
               break;
       }
}

function endElement($parser, $name) {
       global $rss_channel, $currently_writing, $item_counter;
       $currently_writing = "";
       if ($name == "ITEM") {
           $item_counter++;
       }
}

function characterData($parser, $data) {
    global $rss_channel, $currently_writing, $main, $item_counter;
    if ($currently_writing != "") {
        switch($main) {
            case "CHANNEL":
                if (isset($rss_channel[$currently_writing])) {
                    $rss_channel[$currently_writing] .= $data;
                } else {
                    $rss_channel[$currently_writing] = $data;
                }
                break;
            case "IMAGE":
                if (isset($rss_channel[$main][$currently_writing])) {
                    $rss_channel[$main][$currently_writing] .= $data;
                } else {
                    $rss_channel[$main][$currently_writing] = $data;
                }
                break;
            case "ITEMS":
                if (isset($rss_channel[$main][$item_counter][$currently_writing])) {
                    $rss_channel[$main][$item_counter][$currently_writing] .= $data;
                } else {
                    $rss_channel[$main][$item_counter][$currently_writing] = $data;
                }
                break;
        }
    }
}

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($file, "r"))) {
    die("could not open XML input");
}

while ($data = fread($fp, 4096)) {
    if (!xml_parse($xml_parser, $data, feof($fp))) {
        die(sprintf("XML error: %s at line %d",
                    xml_error_string(xml_get_error_code($xml_parser)),
                    xml_get_current_line_number($xml_parser)));
    }
}
xml_parser_free($xml_parser);

$total = count($rss_channel["ITEMS"]);
$item_counter = $total-3;

if (isset($rss_channel["ITEMS"])) {
    if (count($rss_channel["ITEMS"]) > 0) {
        for($i = $item_counter;$i < count($rss_channel["ITEMS"]);$i++) {

$titulo = $rss_channel["ITEMS"][$i]["TITLE"];
$descripcion = $rss_channel["ITEMS"][$i]["DESCRIPTION"];
$fecha = $rss_channel["ITEMS"][$i]["PUBDATE"];
$link = $rss_channel["ITEMS"][$i]["LINK"];

$titulo = nl2br($titulo);
$titulo = str_replace('á','&aacute;',$titulo);
$titulo = str_replace('é','&eacute;',$titulo);
$titulo = str_replace('í','&iacute;',$titulo);
$titulo = str_replace('ó','&oacute;',$titulo);
$titulo = str_replace('ú','&uacute;',$titulo);
$titulo = str_replace('Á','&Aacute;',$titulo);
$titulo = str_replace('É','&Eacute;',$titulo);
$titulo = str_replace('Í','&Iacute;',$titulo);
$titulo = str_replace('Ó','&Oacute;',$titulo);
$titulo = str_replace('Ú','&Uacute;',$titulo);
$titulo = str_replace('ñ','&ntilde',$titulo);
$titulo = str_replace('Ñ','&Ntilde',$titulo);

$descripcion = nl2br($descripcion);
$descripcion = str_replace('á','&aacute;',$descripcion);
$descripcion = str_replace('é','&eacute;',$descripcion);
$descripcion = str_replace('í','&iacute;',$descripcion);
$descripcion = str_replace('ó','&oacute;',$descripcion);
$descripcion = str_replace('ú','&uacute;',$descripcion);
$descripcion = str_replace('Á','&Aacute;',$descripcion);
$descripcion = str_replace('É','&Eacute;',$descripcion);
$descripcion = str_replace('Í','&Iacute;',$descripcion);
$descripcion = str_replace('Ó','&Oacute;',$descripcion);
$descripcion = str_replace('Ú','&Uacute;',$descripcion);
$descripcion = str_replace('ñ','&ntilde',$descripcion);
$descripcion = str_replace('Ñ','&Ntilde',$descripcion);

$fecha = nl2br($fecha);
$fecha = str_replace('Mon','Lunes',$fecha);
$fecha = str_replace('Tue','Martes',$fecha);
$fecha = str_replace('Wed','Miercoles',$fecha);
$fecha = str_replace('Thu','Jueves',$fecha);
$fecha = str_replace('Fri','Viernes',$fecha);
$fecha = str_replace('Sat','Sabado',$fecha);
$fecha = str_replace('Sun','Domingo',$fecha);
$fecha = str_replace('-0300','',$fecha);

            if (isset($rss_channel["ITEMS"][$i]["LINK"])) { ?>
            
            <div id="titulo_con_link" align="justify">
            <a href="
<?=$link;?>
            " target="_bank" id="link">
<?=$titulo;?>
            </a>
            </div>

<? } else { ?>

            <div id="titulo_sin_link" align="justify">
<?=$titulo;?>
            </div>

<? ?>

             <div id="fecha" align="right">
<?=$fecha?>
             </div>

             <div id="noticia" align="justify">
<?=$descripcion;?>
             </div>

             <div id="linea"><img src="imagenes/linea.jpg" width="4" height="5"></div>


<? }
    } else {
        print (
"Error de lectura");
    }
}
Gracias