Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Einbinden einer Klasse

Einklappen

Neue Werbung 2019

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

  • PHP Einbinden einer Klasse

    Servus...

    vorab schon mal ganz herzlichen Dank an Eure Zeit und Hilfe. Ich bin ein Neuling in Sachen PHP und bitte hier etwas um Nachsicht. Ich habe es schon mit Google versucht, bin aber da nicht fündig geworden.
    Oder doch fündig - habe die Tipps dort ausprobiert. Aber durch Unwissen vielleicht auch falsch ausprobiert.

    Gegeben ist
    Betriebssystem Windows
    MAMP
    PHP Version 7.2

    Ich habe unter MAMP ja das Verzeichnis htdocs, hier kann ich doch meine PHP Dateien einfügen und testen.

    Es existiert eine test.php Seite, welche ich mit localhost/test.php aufrufe

    PHP-Code:
     <?php     echo "Hallo";     ?>
    Funktioniert!
    Sobald ich jedoch versuche - laut Anleitung des Programmierers - eine Klasse einzubinden, erscheint das Hallo natürlich nicht mehr, da die Zeile davor den Fatalen Error wirft (nehme ich an).

    PHP-Code:
     <?php     require_once "excel_reader2.php";    echo "Hallo";     ?>

    Die entsprechende Klassen Datei ist im gleichen Ordner, sprich in htdocs.
    Ist das der falsche Ort?

    Danke Euch schonmal.












  • #2
    Naja, Fehlermeldung lesen und die Ursache beheben?

    Kommentar


    • #3
      Wie du Fehlermeldungen anzeigen lassen kannst findest du hier:

      https://php-de.github.io/jumpto/faq/#debugging

      Kommentar


      • #4
        Lies dir auch die Anleitung durch zu dieser Klasse bzw. Datei.

        Kommentar


        • #5
          hellbringer
          Erst mal richtiges Debugging kennen als reiner Anfänger. Da aber hier ja kaum wisst, welche Dateien das sind und welche Dinge da im Hintergrund ablaufen - war das auch gar nicht die Frage von mir. Die einzige Frage die ich hatte, ob das so richtig ist, dass man PHP Klassen einfach ins gleiche Verzeichnis schieben kann und dann aus der Basis Start PHP diese dann einfach direkt importieren kann. Wenn die Klasse im gleichen Verzeichnis ist also einfach mit "meineKlasse.php" oder wenn die Klasse im Ordner "darüber" ist einfach mit "/ordner/meineKlasse.php" - oder ob in PHP Klassen in spezielle Ordner / Orte müssen?

          Genauso die Frage - darf die Klasse direkt im htdocs Ordner von MAMP sein?
          Und die Frage stimmt denn meine Codezeile zum Einbinden der Klasse? Sind das Hochkomma oder Anführungszeichen. Vielleicht habe ich ja beim Einbinden der Klasse einen Syntaxfehler gemacht.

          Mir ging es nur darum - passt der Ablageort der Klasse unter MAMP und htdocs?
          Habe ich in der Codezeile des Einbinden was falsch gemacht?

          Wenn Ihr sagt - das passt alles so, ist schon ok so - dann weiß ich selber, dass was in der Klasse selber nicht stimmt.

          jonas3344
          Danke für den hilfreichen Link, habe ich gleich mal angepasst.

          protestix
          Die Dokumentation sagt nicht viel - also was das ablegen der Klasse angeht, wohin damit. Da scheiterte es ja bereits bei mir.


          Der Verfasser der Klasse hat ein Beispiel ZIP, welches seine Klasse enthält, eine Excel Datei und eine Beispiel PHP Datei für den Zugriff.
          https://code.google.com/archive/p/php-excel-reader/


          Es gibt vom Entwickler die Klassen Datei
          excel_reader2.php

          Es gibt eine Hauptdatei, welche aufgerufen wird
          example.php

          Und die Excel Datei, welche mit Hilfe der Klasse ausgewertet werden soll
          example.xls

          Alle 3 Dateien befinden sich bei mir im htdocs Verzeichnis.
          Ich habe die example.php Datei um den Debugging Bereich selber erweitert.
          PHP-Code:

          <?php

          error_reporting
          (-1);
          ini_set('display_errors'true);

          require_once 
          'excel_reader2.php';
          $data = new Spreadsheet_Excel_Reader("example.xls");

          ?>
          <html>
          <head>
          <style>
          table.excel {
           border-style:ridge;
           border-width:1;
           border-collapse:collapse;
           font-family:sans-serif;
           font-size:12px;
          }
          table.excel thead th, table.excel tbody th {
           background:#CCCCCC;
           border-style:ridge;
           border-width:1;
           text-align: center;
           vertical-align:bottom;
          }
          table.excel tbody th {
           text-align:center;
           width:20px;
          }
          table.excel tbody td {
           vertical-align:bottom;
          }
          table.excel tbody td {
              padding: 0 3px;
           border: 1px solid #EEEEEE;
          }
          </style>
          </head>

          <body>
          <?php echo $data->dump(true,true); ?>
          </body>
          </html>

          Wenn ich nun die example.php im Browser starte kommt es zu folgender Fehlermeldung:
          Parse error
          : syntax error, unexpected 'new' (T_NEW) in
          C:\MAMP\htdocs\excel_reader2.php
          on line
          916
          Wenn ich nun in die Klassendatei
          excel_reader2.php Line 916 schaue:
          PHP-Code:
           function Spreadsheet_Excel_Reader($file='',$store_extended_info=true,$outputEncoding='') {
            
          $this->_ole =& new OLERead();
            
          $this->setUTFEncoder('iconv');
            if (
          $outputEncoding != '') {
             
          $this->setOutputEncoding($outputEncoding);
            }
            for (
          $i=1$i<245$i++) {
             
          $name strtolower(( (($i-1)/26>=1)?chr(($i-1)/26+64):'') . chr(($i-1)%26+65));
             
          $this->colnames[$name] = $i;
             
          $this->colindexes[$i] = $name;
            }
            
          $this->store_extended_info $store_extended_info;
            if (
          $file!="") {
             
          $this->read($file);
            }
           } 

          Die Zeile 916 ist dabei diese:
          PHP-Code:
          $this->_ole =& new OLERead(); 


          Ich habe die 3 Beispieldateien ja direkt herunter geladen und nicht verändert, so dass diese ja eigentlich funktionieren sollten.
          Wo könnte ich da jetzt anfangen mit den Schrauben zu drehen?

          Kommentar


          • #6
            Du hast alles richtig eingebunden. Das Ding ist von 2009. Also quasi aus dem letzten PHP-Jahrtausend.

            https://github.com/nuovo/spreadsheet-reader

            Da hats eine etwas aktuellere Version. Vielleicht läuft die. Aber wir können Dir nicht Fremdcode flicken hier.

            Kommentar


            • #7
              Warum verwendet man überhaupt sowas steinzeitliches statt dem aktuellen PhpSpreadsheet?

              Kommentar

              Lädt...
              X