Fatal error: Cannot redeclare startelement()

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fatal error: Cannot redeclare startelement()

    Hallo!

    Ich habe ein Problem mit diesem Script:

    PHP Code:
    <?php
    error_reporting
    (E_ALL);
        include(
    'config.inc');
        
    $dbconn mysql_connect($mysql_host$mysql_user$mysql_pass);
        
    mysql_select_db($mysql_db);


        
    $XMLEntities = array(
        
    '&' => '&',
        
    '&lt;'  => '<',
        
    '&gt;'  => '>',
        
    '&apos;' => '\'',
        
    '&quot;' => '"'
        
    );
        
    $noteam=0// Var für Fallabfrage PLAYER_HAS_NO_TEAM


        // Leermachen

        
    $sql_soldner_table "TRUNCATE Table Server";
        
    $result_soldner_table mysql_query($sql_soldner_table) or die(mysql_error());
        
    $sql_soldner_table "TRUNCATE Table Teams";
        
    $result_soldner_table mysql_query($sql_soldner_table) or die(mysql_error());
        
    $sql_soldner_table "TRUNCATE Table Players";
        
    $result_soldner_table mysql_query($sql_soldner_table) or die(mysql_error());

        function 
    startElement(&$parser, &$element_name, &$element_attribute)
        {
        global 
    $XMLEntities$idout$noteam;



        
    $element_name strtolower($element_name); # Element in Kleinbuchstaben
        
    $felder = array();
        
    $werte = array();




        foreach (
    $element_attribute as $Key => $Value)
            {
                
    $felder[] = $Key;   # Attributnamen in Array
                
    $werte[] = strtr(trim($Value), $XMLEntities);


            }



                if(
    $element_name == "game")
                 {
                    
    $feld_str implode(', '$felder);
                    
    $wert_str "'" implode("', '"$werte) . "'"
                    
    $sql_soldner_table "INSERT INTO Server ($feld_str) VALUES ($wert_str)";
                    
    $result_soldner_table mysql_query($sql_soldner_table) or die(mysql_error());

                 }

                if(
    $element_name == "team")
                {
                    
    $noteam++;
                    
    $feld_str implode(', '$felder); 
                    
    $wert_str "'" implode("', '"$werte) . "'"
                    
    $sql_team_table "INSERT INTO Teams ($feld_str) VALUES ($wert_str)";
                    
    $result_team_table mysql_query($sql_team_table) or die(mysql_error());
                    
    $idout $werte[2];
                }

                    if(
    $element_name == "player")
                    {
                    
    $feld_str implode(', '$felder); #
                    
    $wert_str "'" implode("', '"$werte) . "'";
                     
    $sql_player_table "INSERT INTO Players ($feld_str) VALUES ($wert_str)";
                    
    $result_player_table mysql_query($sql_player_table) or die(mysql_error());

                        if(
    $noteam != 0)
                        {
                            
    $sql_player_table "UPDATE Players SET TEAM = '$idout' WHERE TEAM = '0'";
                            
    $result_player_table mysql_query($sql_player_table) or die(mysql_error());
                            
    $log mysql_affected_rows();
                            
    $log++;
                        }
                        else
                        {
                            
    $sql_player_table "UPDATE Players SET TEAM = '0' WHERE TEAM = '0'";
                            
    $result_player_table mysql_query($sql_player_table) or die(mysql_error());
                        }
                    }

    //Nächste Zeile ist der can't redaclare Fehler
    /* Zeile 91 */    
    }

        function 
    endElement($parser$element_name)
        {
        global 
    $idout,$noteam;

    $element_name strtolower($element_name);
            if(
    $element_name == "team")
                {
                
    $noteam--;


                }
        }

        
    $parser xml_parser_create('');
        
    xml_set_element_handler($parser"startElement""endElement");
    //nachste Zeile kommt die Warnung
    /* Zeile 109 */    
    foreach($xmlFile as $elem)
        {
            
    xml_parse($parser$elem);
        }

        
    xml_parser_free($parser);


    ?>
    Es kommen diese Fehler:
    Kopievontest.xml
    Warning: Invalid argument supplied for foreach() in D:\xampp\htdocs\MightyStats\process.inc on line 128
    test.xml
    Fatal error: Cannot redeclare startelement() (previously declared in D:\xampp\htdocs\MightyStats\process.inc:42) in D:\xampp\htdocs\MightyStats\process.inc on line 108
    Er scheint bei den beiden Dateien 2 verschiedene probleme zu haben, obwohl sie exakt den gleichen Inhalt haben.
    Kann mir jemand weiterhelfen?

    Danke schon im Vorraus!

    cu
    robertthronhill
    Last edited by robertthronhill; 15-02-2005, 17:39.

  • #2
    Invalid argument supplied for foreach()
    http://de2.php.net/foreach

    Cannot redeclare startelement() (previously declared in D:\xampp\htdocs\MightyStats\process.inc:42)
    Das passiert, wenn Du zweimal eine Funktion gleichen Namens definieren willst.

    Comment


    • #3
      http://www.php-resource.de/forum/sho...threadid=50454 lesen, verstehen und befolgen, bitte.

      was sind das für zeilen?

      was ist an den fehlermeldungen nicht klar, da steht's doch?

      Comment


      • #4
        PHP Code:
        '&apos;' => ''', 
        escapen!
        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.

        Comment


        • #5
          Shurakai, kann das forum gewesen sein

          Comment


          • #6
            Erstmal danke für die Hilfe.

            Aufgrund des Links, den ich von pekka bekommen habe scheint es, dass $xmlfile kein Array ist. Kann mir jemand sagen, wie ich daraus ein Array mache?

            @pekka: Es ist klar, dass das passiert wenn ich versuche eine Funkion mit gleichem Namen nochmals zu deklarieren, aber in der Zeile ist nur eine } zu finden.

            @Shurakai: Um sowas zu finden muss man wirklich Adleraugen haben. Im Script und im geposteten Source ist es aber drin. Trotzdem danke!

            cu
            robertthronhill

            Comment


            • #7
              wo wird $XMLfile denn initialisiert, gesetzt o.ä.?
              Beantworte nie Threads mit mehr als 15 followups...
              Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

              Comment


              • #8
                Original geschrieben von robertthronhill
                ...Um sowas zu finden muss man wirklich Adleraugen haben....
                ÄhhH? Nein, es ist erste was mir aufgefallen ist... die textfarben beim Code sind nämlich nich zu Spaß da!
                Die Musikreview Seite

                hi, i'm a signature virus. copy me into your signature to help me spread.

                Comment


                • #9
                  Ich bin dumm. Ich hab an dem Script rumgeschraubt, das $xmlFile initialisiert und dabei aus versehen $xmlFile rausgelöscht. Jetzt bekomme ich die Warnung nichtmehr. Nur noch den Fatal Error, obwohl die Funktion garnicht 2 mal unter gleichem Namen vorkommt.

                  Kann mir jemand helfen?

                  Danke!

                  cu
                  robertthronhill

                  Comment


                  • #10
                    Die Datei durch das Backup ersetzen und dann etwas überlegter an die Sache herangehen?
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Comment


                    • #11
                      Es funktioniert ja jetzt, bis auf diesen schweren Fehler, obwohl ich an dieser Funktion nichts verändert habe.

                      cu
                      robertthronhill

                      Comment


                      • #12
                        schau doch mal in die datei D:\xampp\htdocs\MightyStats\process.inc in zeile 42
                        und dann in zeile 108
                        Beantworte nie Threads mit mehr als 15 followups...
                        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                        Comment


                        • #13
                          Zeile 42: Anfang der Funktion
                          Zeile 108: nur eine geschlossene geschweifte Klammer }

                          Genau das ist das, was mich so wundert. In Zeile 108 ist nichts außer dieser Klammer. Ich habe sie testweise entfernt, dann kam die Fehlermeldung unexpected $end.

                          Ich habe den Source jetzt verändert, es sind jetzt weniger Zeilen.

                          PHP Code:
                          <?php
                          error_reporting
                          (E_ALL);
                              include(
                          'config.inc');
                              
                          $dbconn mysql_connect($mysql_host$mysql_user$mysql_pass);
                              
                          mysql_select_db($mysql_db);


                              
                          $XMLEntities = array(
                              
                          '&' => '&',
                              
                          '&lt;'  => '<',
                              
                          '&gt;'  => '>',
                              
                          //'&apos;' => '\'',
                              
                          '&quot;' => '"'
                              
                          );
                              
                          $noteam=0// Var für Fallabfrage PLAYER_HAS_NO_TEAM


                              // Leermachen

                              
                          $sql_player_table "TRUNCATE Table Players";
                              
                          $result_player_table mysql_query($sql_player_table) or die(mysql_error());

                          /* Zeile 23 */    function startElement(&$parser, &$element_name, &$element_attribute)
                              {
                              global 
                          $XMLEntities$idout$noteam;



                              
                          $element_name strtolower($element_name); # Element in Kleinbuchstaben
                              
                          $felder = array();
                              
                          $werte = array();




                              foreach (
                          $element_attribute as $Key => $Value)
                                  {
                                      
                          $felder[] = $Key;   # Attributnamen in Array
                                      
                          $werte[] = strtr(trim($Value), $XMLEntities);


                                  }

                                          if(
                          $element_name == "player")
                                          {
                                          
                          $feld_str implode(', '$felder);
                                          
                          $wert_str "'" implode("', '"$werte) . "'";
                                           
                          $sql_player_table "INSERT INTO players ($feld_str) VALUES ($wert_str)";
                                          
                          $result_player_table mysql_query($sql_player_table) or die(mysql_error());

                                              if(
                          $noteam != 0)
                                              {
                                                  
                          $sql_player_table "UPDATE players SET TEAM = '$idout' WHERE TEAM = '0'";
                                                  
                          $result_player_table mysql_query($sql_player_table) or die(mysql_error());
                                                  
                          $log mysql_affected_rows();
                                                  
                          $log++;
                                              }
                                              else
                                              {
                                                  
                          $sql_player_table "UPDATE Players SET TEAM = '0' WHERE TEAM = '0'";
                                                  
                          $result_player_table mysql_query($sql_player_table) or die(mysql_error());
                                              }
                                          }

                          //Nächste Zeile ist der can't redaclare Fehler
                          /* Zeile 66 */    
                          }

                              function 
                          endElement($parser$element_name)
                              {
                              global 
                          $idout,$noteam;

                          $element_name strtolower($element_name);
                                  if(
                          $element_name == "team")
                                      {
                                      
                          $noteam--;


                                      }
                              }

                              
                          $parser xml_parser_create('');
                              
                          xml_set_element_handler($parser"startElement""endElement");
                              foreach(
                          $xmlFile as $elem)
                              {
                                  
                          xml_parse($parser$elem);
                              }

                              
                          xml_parser_free($parser);


                          ?>
                          Der Fehler tritt jetzt in Zeile 66 auf (genau die gleiche Stelle). Die Punkte sind wie immer im Source markiert.

                          cu
                          robertthronhill
                          Last edited by robertthronhill; 16-02-2005, 15:53.

                          Comment


                          • #14
                            *push*

                            Comment


                            • #15
                              Original geschrieben von robertthronhill
                              *push*
                              gewöhne dir bitte ganz fix ab, schon nach so kurzer zeit zu drängeln, sonst *push*e ich dich nämlich ...
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Comment

                              Working...
                              X