sc_ ohne includen?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • sc_ ohne includen?

    hi leute,

    ich hab da mal ne frage*g*

    ich habe 3 php dateien:

    shoutcast.php, shoutcastduke.php und index.php

    hier mein Problem:

    es geht darum daten aus einem shoutcast server wieder zu geben,
    eigentlich kein großes ding, wenn die shoutcastduke und shoutcast nicht 100% indetisch wären!

    Das was ich will:

    Das beide onlinestatusse angezeigt werden.

    Das nen bissel zu veranschaulichen:

    shoutcast.php
    PHP-Code:
    <?php

    class xml2Array {
        var 
    $arrOutput = array();
        var 
    $resParser;
        var 
    $strXmlData;

        function 
    parse($strInputXML)
        {
            
    $this->resParser xml_parser_create ();

            
    xml_set_object($this->resParser$this);

            
    xml_set_element_handler($this->resParser"tagOpen"
    "tagClosed");

            
    xml_set_character_data_handler($this->resParser"tagData");



            
    $this->strXmlData xml_parse($this->resParser
    $strInputXML);
            if (!
    $this->strXmlData
    {
                die(
    sprintf("XML error: %s at line %d",

                        
    xml_error_string(xml_get_error_code($this->resParser)),

                        
    xml_get_current_line_number($this->resParser)));

            } 

            
    xml_parser_free($this->resParser);


            return 
    $this->arrOutput;
        } 
        function 
    tagOpen($parser$name$attrs)
        {
            
    $tag = array("name" => $name"attrs" => $attrs);

            
    array_push($this->arrOutput$tag);

        } 

        function 
    tagData($parser$tagData)
        {
            if (
    trim($tagData)) {
                if (isset(
    $this->arrOutput[count($this->arrOutput)-1]['tagData']))
     {
                    
    $this->arrOutput[count($this->arrOutput)-1]
    [
    'tagData'] .
    $tagData;
                } else {
                    
    $this->arrOutput[count($this->arrOutput)-1]
    [
    'tagData'] =
     
    $tagData;
                } 
            } 
        } 

        function 
    tagClosed($parser$name)
        {
    ...................................
    .............................................................
    ..............................
    das spar ich mir jetzt mal

    function sc_infobox()
    {
        
    $stats get_sc_stats();
        if (
    $stats == FALSE)
            return;

        
    begin_table(TRUE);

        
    ?>
      <colgroup>
        <col width="50%" />
        <col width="50%" />
      </colgroup>
      <tr class="bottom">
        <td colspan="2" 
    width="50%" class="bottom">
    <a name="radiopls"></a>
    <span class="normalfont"><
    center><img src="<?=$GLOBALS
    ["PIC_BASE_URL"]?>radio.png" 
    width="16" height="16" alt="" s
    tyle="vertical-align: 
    middle;"> <b><?=htmlspecialchars(
    $GLOBALS["RADIOTITLE"])?></b>
    </center>
    </span></td> 
      </tr>
      <tr>
        <td class="bottom" 
    align="center"><span class="normalfont">
    <center><img src="<?=$GLOBALS["PIC_BASE_URL"]?>
    radiolisten.png" 
    width="16" height="16" alt="" style="
    vertical-align: middle;"> <a href="http://<?=$GLOBALS
    ["SC_HOSTNAME"] . ":" 
    $GLOBALS["SC_PORT"]?>/listen.pls">
    Stream anh&ouml;ren</a></center></span>
    </td>
        <td class="bottom" align="center">
    <span class="normalfont"><center>
    <img src="<?=$GLOBALS["PIC_BASE_URL"]?>
    radioplaylist.png" width="16" 
    height="16" alt="" style="vertical-align: middle;">
     <a href="#radiopls" onclick="var
     myDiv=document.getElementById('playlist');myDiv.style.display=

    'block';">Letzte 10 Songs anzeigen</a></center></span></td>

      </tr>



    <tr>
        <td class="bottom" style="vertical-align:top;text-align:left;"
     colspan="2">

          <center><?php

        
    if ($stats["streamstatus"] == 1) {

            echo 
    "<center><table><tr><td valign=\"middle\">

    <img src=\"" 
    $GLOBALS["PIC_BASE_URL"] . "button_online2.gif\"
     
    width=\"15\" height=\"15\" alt=\"Online\" style=\"vertical-align:
     middle;\"></td>"
    ;

            echo 
    "<td valign=\"middle\" 
    style=\"font-size:120%;font-weight:bold;\">

    On Air</td>"
    ;
            echo 
    "<td valign=\"middle\"><img src=\"" .
     
    $GLOBALS["PIC_BASE_URL"] . "button_online2.gif\" width=\"15\" 
    height=\"15\" alt=\"Online\" style=\"vertical-align: 
    middle;\"></td></tr></table></center>"
    ;


            echo 
    "<br><table><tr><td valign=\"top\"><img src=\"" .
     
    $GLOBALS["PIC_BASE_URL"] . "

    viewmag16.png\" width=\"16\" height=\"16\" alt=\"\" 
    style=\"vertical-align:
     
    middle;\"></td>"
    ;


            echo 
    "<td valign=\"top\"><b><center>"
     
    htmlspecialchars($stats["servertitle"]) . "

    </center></b><br><br>"
    ;
            
    printf("Aktuell <b>%d</b> Zuhörer von maximal 
    <b>%d</b> möglichen, der Rekord liegt bei <b>%d</b>"
    $stats["currentlisteners"], 
    $stats
    ["maxlisteners"], $stats["peaklisteners"]);


            
    ?>

            </center>

                    <br><br><center><b>

    Momentan l&auml;uft:</b></center><br>

                    <center><table>

                      <tr>

                        <td valign="middle"><img 
    src="<?=$GLOBALS["PIC_BASE_URL"]?>song.png" width="16" 
    height="16" alt=""></td>

                        <td 
    style="vertical-align:middle;text-align:left;">
    <?=htmlspecialchars($stats["songtitle"])?> @<?=$stats["bitrate"]
    ?> kbps</td>

                      </tr>

                    </table>
    </center>
                    
                    <br><center><b>U
    nsere Zuh&ouml;rer von der Seite:</b></center><br>
                    <center><?php
            
    // Zuhörer
            
    $ipaddrs = array();
            for (
    $I=0$I count($stats[
    "listeners"]); $I++) {
                
    $ip gethostbyname($stats
    ["listeners"]
    [
    $I]["hostname"]);
                
    $ipaddrs[] = sqlesc($ip);
            }
            
    $res mysql_query("SELECT DISTINCT(`ip`),`id`,`username`,`class`,
    `donor`,`
    warned`,`added`,`enabled` FROM `
    users` WHERE `ip` IN ("
    .implode(","$ipaddrs).") GROUP BY `ip` ORDER BY `class` DESC,`username` 
    ASC"
    );
            
    $activeusers "";
            while (@
    $arr mysql_fetch_assoc
    ($res))
            {
                if (
    $activeusers$activeusers .= "
    ,\n"
    ;
                
    //$arr["username"] = "<font class=".get_class_color($arr["class"]).">" . 
    $arr["username"] . "</font>";
                
    $activeusers .= "<a href=userdetails
    .php?id=" 
    $arr["id"] . "><b>" $arr["username"] . "</b></a>";          
                
    $activeusers .= "&nbsp;".get_user_i
    cons
    ($arr);
            }
            
            if (
    $activeusers != "")
     {
                echo 
    $activeusers;
            } else {
                echo (
    '<center>Akt
    uell sind keine 
    Tracker-Mitglieder unter den
     Zuhörern.</center>'
    );
            }
            
    ?>
            </center>
            </td></tr></table> 
            <?php
        
    } else {
            echo 
    "<center><table><tr><t
    d valign=\"middle\"><img src=\"" 
    $GLOBALS["PIC_BASE_URL"]
     . 
    "button_offline2.gif\" width=\"15\" height=\"15\
    alt=\"\"></td><td valign=\"middle\"
     style=\"font-size:120%;font-weight:bold;

    "
    >Offline</td><td valign=\"middle\"><img src=\"" 
    $GLOBALS["PIC_BASE_URL"] . "button_offline2.gif\" width=\"15\"
     height=\"15\" alt=\"\"></td></tr></table></center>"
    ;

        }
        
        
    ?>

          <div id="playlist" style="display:none;width:100%;"><br>

          <?php
        begin_table
    (TRUE);
        echo 
    "<center><tr><td class=\"bottom\">&nbsp;</td><td class=\"bottom\"><b>Zeit</b></td><td 
    class=\"bottom\"><b>Song</b></td></tr></center>"
    ;

        for (
    $I 0$I count($stats["songhistory"]); $I++) {

            echo 
    "<tr><td class=\"bottom\" 
    style=\"vertical-aling:middle;text-a

    lign:center;\"><img src=\"" 
    $GLOBALS["PIC_BASE_URL"] . 
    "song.png\" width=\"16\" height=\"16\" alt=\"\"></td>";

    ap=\"nowrap\">" date("d.n.Y, G:i:s"$stats["songhistory"][$

    I]["playedat"]) . "</td>";
            echo 
    "<td class=\"bo
    ttom\" width=\"100%\">" 
    htmlspecialchars($stats["songhistory"][$I]["t
    itle"
    ]) . "</td></tr>\n";

        }
        
    end_table();

        
    ?>   
          </div>
        </td>
      </tr>
    <?php
        end_table
    ();


    function 
    sc_infoboxklein()
    {
        
    $stats get_sc_stats();
        if (
    $stats == FALSE)
            return;

        
    begin_table(TRUE);
        
    ?>
        
      <colgroup>
        <col width="50%" />
        <col width="50%" />
      </colgroup>
      <tr class="bottom">
        <td colspan="2" width="5
    0%" class="bottom">

         <center><?php

            
    if ($stats["streamstatus"] == 1
    {
            echo 
    "<center><table><
    tr><td valign=\"middle\"><img src=\"" 
    .
     
    $GLOBALS["PIC_BASE_URL"
    "button_online2.gif\" width=\"15\" height=\"15\" alt=\"Online\"
     style=\"vertical-align: middle

    ;\"></td>"
    ;
            echo 
    "<td valign=\"middle\" style=\"font-size:120%;fon

    t-weight:bold;\"><a href=\"http://85.214.54.57:
    8050/listen.pls\"style=\
    "
    text-decorationnone\"<font
               color=#00FF00>"
     

    htmlspecialchars($stats["servertitle"]) . " On Air</font>
    </a>
    </td>"
    ;

            echo 
    "<td valign
    =\"middle\"><img src=\"" 
    $GLOBALS["PIC_BASE_URL"] .
     
    "button_online2.gif\
    width=\"15\" height=\"15\" alt=\"Online\" style=\"vertical-align:
     middle;\"></td></tr></table></center>"
    ;

             } else {

            echo 
    "<center

    ><table><tr><td valign=\"middle\">

    <img src=\"" 
    $GLOBALS["PIC_BASE_URL"] . "button_offline2.gif\"
     width=\"15\" height=\"15\" alt=\"\">

    </td>
    <td valign=\"middle\" style=\"font-size:120
    %
    ;font-weight:bold;\">KaW Radio Offline</td>
    <td valign=\"middle\"><img src=\"" 
    .

     
    $GLOBALS["PIC_BASE_URL"] .
     
    "button_offline2.gif\" width=\"15\" height=\"15\"
     alt=\"\"></td></tr></table></center>"
    ;

        }
           
    end_table();
    }    
        
    ?>
    so, jetzt hab ich den function sc_infodukeboxklein() in gennant,
    und wollte sie jetzt auch per include in die index, aber dann kommt natürlich:

    Fatal error: Cannot redeclare class xml2array in
    /srv/www/vhosts/xxx.info/httpdocs/include/shoutcastduke.php on line 2

    dargestellt, werden sollten sie eigentlich nur mit

    sc_infoboxklein();
    und
    sc_infodukeboxklein();

    hab schon alle probiert, und jetzt zu meiner frage: geht das überhaubt?
    Zuletzt geändert von moinmoin666; 02.03.2007, 15:25.

  • #2
    Abgesehen davon, dass ich einen Mega-Horizontalbalken habe:
    http://www.php-fehlermeldungen.de/th...ot%20redeclare

    Dein Fehler liegt nicht an der Funktion selbst...
    [color=black] Important: alt bei <img> ist immer erforderlich · Strings richtig trennen/verbinden · Kiddie-Code hat keine Chance[/color]

    Kommentar


    • #3
      Regeln lesen und Code umbrechen bitte. Ich muss über 3 Monitore scrollen....
      Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
      var_dump(), print_r(), debug_backtrace und echo.
      Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
      Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
      Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

      Kommentar


      • #4
        Du scheinst die Deklaration der Klasse zweimal einzubinden. Was natürlich nicht geht (Poste mal den Anfang von shoutcastduke.php)

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          PHP-Code:
          <?php

          class xml2Array {
              var 
          $arrOutput = array();
              var 
          $resParser;
              var 
          $strXmlData;

              function 
          parse($strInputXML)
              {
                  
          $this->resParser xml_parser_create ();

                  
          xml_set_object($this->resParser$this);

                  
          xml_set_element_handler($this->resParser"tagOpen"
          "tagClosed");

                  
          xml_set_character_data_handler($this->resParser"tagData");


                  
          $this->strXmlData xml_parse($this->resParser$strInputXML);
                  if (!
          $this->strXmlData) {
                      die(
          sprintf("XML error: %s at line %d",
                              
          xml_error_string(xml_get_error_code($this->resParser)),

                              
          xml_get_current_line_number($this->resParser)));

                  } 

                  
          xml_parser_free($this->resParser);


                  return 
          $this->arrOutput;
              } 
              function 
          tagOpen($parser$name$attrs)
              {
                  
          $tag = array("name" => $name"attrs" => $attrs);

                  
          array_push($this->arrOutput$tag);
              } 

              function 
          tagData($parser$tagData)
              {
                  if (
          trim($tagData)) {
                      if (isset(
          $this->arrOutput[count($this->arrOutput)-1]['tagData']))
           {
                          
          $this->arrOutput[count($this->arrOutput)-1]['tagData'] .
          $tagData;
                      } else {
                          
          $this->arrOutput[count($this->arrOutput)-1]['tagData']
           = 
          $tagData;
                      } 
                  } 
              } 

              function 
          tagClosed($parser$name)
              {
                  
          $this->arrOutput[count($this->arrOutput)-2]['children'][] 
          $this->arrOutput[count($this->arrOutput)-1];

                  
          array_pop($this->arrOutput);

              } 
          }
          jaja, ist mir grad auch klar geworden, aber wie kann ich das denn machen, das es nicht so ist, da komm ich nicht druaf!
          Zuletzt geändert von moinmoin666; 02.03.2007, 15:26.

          Kommentar


          • #6
            jaja, ist mir grad auch klar geworden, aber wie kann ich das denn machen, das es nicht so ist, da komm ich nicht druaf!
            Indem du in shoutcastduke.php auf die erneute Deklaration der Klasse verzichtest.

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              jaein, das Problem ist, das es zwei shoutcast server sind!

              dies bedeutet: ich sill nicht die daten von dem einen auch bei der anzeige des anderen, deswegen muss ich das so machen! oder ich hab da waas falsch verstanden!

              immoment hab ich es so:

              index.php

              mit dem require_once("include/shoutcast.php");

              dann noch ne extra dukebox.php

              mit

              PHP-Code:
              <?




              require_once('include/shoutcastduke.php');


              require_once('include/all.php');

              session_start();

              ob_start();

              dbconn(false);

              loggedinorreturn();

              stdhead();
              ?>
              <?

              print("<table width=95% class=main border=0 cellspacing=0
               cellpadding=0><tr><td class=embedded>");
              ?>


                <?  
                  if ($GLOBALS["ENABLESHOUTCAST1"]) {
                      echo "<td valign=\"top\" width=\"100%\"";
                      sc_infobox();
              }
              ?>
               <table cellpadding="5" cellspacing="0" border="1"
               style="width:100%" class="bottom">
               <tr class="bottom" width="100%">
                <td colspan="0" width="100%">

              Kommentar


              • #8
                Dann bennen die Klasse in shoutcastduke.php um ! Bzw schaue zuerst wo du sie zum ersten Mal deklarierst und frage dich ob es wirklich sinnvoll ist in der selben Datei nochmals dieselbe Klasse (auch wenn sie nach der Umbenennung anders heissen mag) deklarieren zu wollen. Wieso zweimal die gleiche Klasse ?

                Gruss

                tobi
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  Bei sowas erzeugt man einfach ein zweites Objekt...
                  Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
                  var_dump(), print_r(), debug_backtrace und echo.
                  Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
                  Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
                  Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

                  Kommentar


                  • #10
                    @topicstarter
                    Kann es sein, dass du new suchst ?
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      immermal danke!

                      Kommentar

                      Lädt...
                      X