Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    82

    ripetere lo script più volte

    Ciao ragazzi.

    All'interno di una pagina php il cui codice è il seguente:

    codice:
    <?php
    
    class xItem {
      var $xTitle;
      var $xLink;
      var $xDescription;
    }
    
    $sTitle = "";
    $sLink = "";
    $sDescription = "";
    $arItems = array();
    $itemCount = 0;
    
    $uFile = "rss2.0.xml";
    $bDesc = true;
    $uFont = "Verdana, Arial, Helvetica, sans-serif";
    $uFontSize = "2";
    
    function startElement($parser, $name, $attrs) {
      global $curTag;
    
      $curTag .= "^$name";
    
    }
    
    function endElement($parser, $name) {
      global $curTag;
    
      $caret_pos = strrpos($curTag,'^');
    
      $curTag = substr($curTag,0,$caret_pos);
    
    }
    
    function characterData($parser, $data) { 
      global $curTag; 
      global $sTitle, $sLink, $sDescription;  
      $titleKey = "^RSS^CHANNEL^TITLE";
      $linkKey = "^RSS^CHANNEL^LINK";
      $descKey = "^RSS^CHANNEL^DESCRIPTION";
      if ($curTag == $titleKey) {
        $sTitle = $data;
      }
      elseif ($curTag == $linkKey) {
        $sLink = $data;
      }
      elseif ($curTag == $descKey) {
        $sDescription = $data;
      }
    
      global $arItems, $itemCount;
      $itemTitleKey = "^RSS^CHANNEL^ITEM^TITLE";
      $itemLinkKey = "^RSS^CHANNEL^ITEM^LINK";
      $itemDescKey = "^RSS^CHANNEL^ITEM^DESCRIPTION";
    
      if ($curTag == $itemTitleKey) {
        $arItems[$itemCount] = new xItem();     
        $arItems[$itemCount]->xTitle = $data;
    		//------- added by badaze
        $arItems[$itemCount]->xLink = "";
    		$arItems[$itemCount]->xDescription = "";
      }
      elseif ($curTag == $itemLinkKey) {
        $arItems[$itemCount]->xLink = $data;
    		//------- added by badaze		
        $arItems[$itemCount]->xTitle       = "";
    		$arItems[$itemCount]->xDescription = "";		
      }
      elseif ($curTag == $itemDescKey) {
        $arItems[$itemCount]->xDescription = $data;
    		//------- added by badaze		
        $arItems[$itemCount]->xTitle = "";		
        $arItems[$itemCount]->xLink  = "";		
        $itemCount++;
      }
    }
    
    $xml_parser = xml_parser_create();
    xml_set_element_handler($xml_parser, "startElement", "endElement");
      xml_set_character_data_handler($xml_pars
    er, "characterData");
    if (!($fp = fopen($uFile,"r"))) {
      die ("could not open RSS for 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);
    //--------- added by badaze : creo l'uscita HTML senza visualizzarla
    ob_start() ?>
    <table width="100" border="0" cellspacing="0" cellpadding="0"> 
     <tr> <td class="news"> 
     <?php 
      for ($i=0;$i<count($arItems);$i++) { 
       $txItem = $arItems[$i]; 
    	 if ($txItem->xLink != "") {?> 
    	  <font face = "<?php echo($uFont); ?>" size = "<?php echo($uFontSize); ?>">
    	   <a class="base" href = "<?php echo($txItem->xLink); ?>"><?php 
    		  echo($txItem->xTitle); ?> 
    		 </a> 
    		</font><?php 
    	 } // if ($txItem->xLink != "")	
    	 if ($bDesc) { ?> 
    	  <font face = "<?php echo($uFont); ?>" size = "<?php echo($uFontSize); ?>">
    	   <?php echo ($txItem->xDescription); ?>
    		</font><?php 
    	 } echo ("
    "); 
    	} // for ($i=0;$i<count($arItems);$i++) ?> 
    	 </td> 
    	</tr> 
    </table><?php 
     
     $marquee = ob_get_contents();
     ob_end_clean();
    ?>
    <html>
    <head>
    <title><?php echo ($sTitle); ?></title>
    <meta name = "description" content = "<?php echo ($sDescription); ?>">
    <link href="foglio.css" rel="stylesheet" type="text/css">
    
    <style type="text/css">
    <!--
    .hidden {position:absolute;left:-10000;top:-1000}
    -->
    </style>
    
    
    </head>
    <body bgcolor = "#FFFFFF">
    
    <textarea id="htext" class="hidden"><? print $marquee ?></textarea>
    <script language="JavaScript1.2">
    
    /*
    Cross browser Marquee II- © Dynamic Drive (www.dynamicdrive.com)
    For full source code, 100's more DHTML scripts, and TOS, visit http://www.dynamicdrive.com
    Credit MUST stay intact
    */
    
    //Specify the marquee's width (in pixels)
    var marqueewidth="200px"
    //Specify the marquee's height
    var marqueeheight="150px"
    //Specify the marquee's marquee speed (larger is faster 1-10)
    var marqueespeed=2
    //Pause marquee onMousever (0=no. 1=yes)?
    var pauseit=1
    
    //Specify the marquee's content
    //Keep all content on ONE line, and backslash any single quotations (ie: that's great):
    
    //-------- added by badaze : assegno il codice HTML alla variabile marquee
    var marqueecontent=document.getElementById('htext').value;
    
    ////NO NEED TO EDIT BELOW THIS LINE////////////
    
    marqueespeed=(document.all)? marqueespeed : Math.max(1, marqueespeed-1) //slow speed down by 1 for NS
    var copyspeed=marqueespeed
    var pausespeed=(pauseit==0)? copyspeed: 0
    var iedom=document.all||document.getElementById
    var actualheight=''
    var cross_marquee, ns_marquee
    
    function populate(){
    if (iedom){
    cross_marquee=document.getElementById? document.getElementById("iemarquee") : document.all.iemarquee
    cross_marquee.style.top=parseInt(marqueeheight)+8+"px"
    cross_marquee.innerHTML=marqueecontent
    actualheight=cross_marquee.offsetHeight
    }
    else if (document.layers){
    ns_marquee=document.ns_marquee.document.ns_marquee2
    ns_marquee.top=parseInt(marqueeheight)+8
    ns_marquee.document.write(marqueecontent)
    ns_marquee.document.close()
    actualheight=ns_marquee.document.height
    }
    lefttime=setInterval("scrollmarquee()",20)
    }
    window.onload=populate
    
    function scrollmarquee(){
    
    if (iedom){
    if (parseInt(cross_marquee.style.top)>(actualheight*(-1)+8))
    cross_marquee.style.top=parseInt(cross_marquee.style.top)-copyspeed+"px"
    else
    cross_marquee.style.top=parseInt(marqueeheight)+8+"px"
    }
    else if (document.layers){
    if (ns_marquee.top>(actualheight*(-1)+8))
    ns_marquee.top-=copyspeed
    else
    ns_marquee.top=parseInt(marqueeheight)+8
    }
    }
    
    if (iedom||document.layers){
    with (document){
    if (iedom){
    write('<div style="  position:relative;width:'+marqueewidth+'
     ;height:'+marqueeheight+';overflow:hidde
    n" onMouseover="copyspeed=pausespeed" onMouseout="copyspeed=marqueespeed">')
    write('<div id="iemarquee" style="  position:absolute;left:0px;top:0px;width
    :100%;">')
    write('</div></div>')
    }
    else if (document.layers){
    write('<ilayer width='+marqueewidth+' height='+marqueeheight+' name="ns_marquee">')
    write('<layer name="ns_marquee2" width='+marqueewidth+' height='+marqueeheight+' left=0 top=0 onMouseover="copyspeed=pausespeed" onMouseout="copyspeed=marqueespeed"></layer>')
    write('</ilayer>')
    }
    }
    }
    </script>
    
    </body>
    </html>
    c'è uno script php che esegue il parsing di un file xml esterno (sono notizie in tempo reale) e poi un dhtml che fa scorrere il risultato del parsing tipo marquee verticale.

    Ora mettiamo che voglia ripetere la stessa procedura all'interno della medesima pagina, cambiando il percorso del file xml, in modo da poter inserire un altro blocco di news differenti da un'altro sito, che replicare il codice rinominando tutte le variabili? O c'è un via alternativa?

  2. #2
    ok quanti file xml hai da prendere?
    lo vuoi fare ogni tot secondi oppure in maniera casuale all'apertura?

    nel primo caso mettiamo un contatore e con un if prendi il file che vuoi.

    nel secondo caso dobbiamo creare un lista e far prendere in maniera random i dati, se hai un db dove metti i file meglio ancora.

    ciaooo

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    82
    Intanto grazie.

    Sicuramente mi sono espresso male.

    Io devo ripetere l'operazione ma la devo duplicare non devo visualizzare uno a caso.

    Quindi devo visualizzarli tutti simultaneamente i file rss all'apertura della pagina e per questo mi serviranno 4 uscite html credo

    Mi servirano 4 file rss diversi (1 per ogni categoria di news).

  4. #4
    Originariamente inviato da luchett
    Intanto grazie.

    Sicuramente mi sono espresso male.

    Io devo ripetere l'operazione ma la devo duplicare non devo visualizzare uno a caso.

    Quindi devo visualizzarli tutti simultaneamente i file rss all'apertura della pagina e per questo mi serviranno 4 uscite html credo

    Mi servirano 4 file rss diversi (1 per ogni categoria di news).
    se hai più file decisamente è più semplice.
    Ripeti esattamente quello che hai fatto per il primo, addirittura se hai file che si chiamano allo stesso modo, potresti creare un while che ti fa da solo la procedura.

    es.
    01file.xml
    02file.xml
    03file.xml

    potresti fare un if con un contatore che legge i file fino a che ne trova. quindi fai un if con fopen, se trova il file lo legge ecc...


    Il tuo problema immagino è che tu hai un file solo??
    Se hai un file solo non saprei come aiutarti.

    ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    82
    Si sono file diversi o meglio collegamenti a file esterni diversi.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.