Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP function via Include einbinden.

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

  • PHP function via Include einbinden.

    Ich habe eine Reihe von eigenen Funktionen in einem PHP Skript eingebaut. Nun möchte ich diese Funktionen herauslösen und in einzelnen Dateien ablegen um sie wieder zu verwenden und den Code bei den aufrufenden Skripten übersichtlicher zu halten. Ich habe versucht die PHP Funktion 'include` zu verwenden. Leider wird nur der Inhalt der Datei ausgegeben und nicht ausgeführt. Als Funktion steht sie im Skript nicht zur Verfügung. Wenn ich sie händisch in die Datei hineinkopiere funktioniert alles. Vermultich habe ich "include" nicht so richtig begriffen. Daher meine Frage, wie kann man so etwas machen? Oder wo liegt der Fehler?

    Ausschnitt aus dem Skript:
    PHP-Code:
    <?php
    ...
    ## Beginn Function
    include("f_ausgabe_saldo.php");
    include(
    "f_ausgabe_kaeufe.php");
    ...
    include(
    "f_mysql_connect.php");
    ## Ende Function
    ...
    if(
    $_POST['auswahl']=="kaeufe")
    {
    mysql_connect($conn);
    ausgabe_kaeufe($conn);
    mysqli_close($conn);
    }
    ...
    Die Beispielhafte Funktion:
    PHP-Code:
    function ausgabe_kaeufe($conn)
    {
    #<h1> FINANZDEPOT AUSGABE KAEUFE </h1>
    $sql "SELECT * FROM kaeufe";
    $result mysqli_query($conn$sql);
    #
    if (mysqli_num_rows($result) > 0) {
    // output data of each row
    echo "Innerhalb ausgabe_kaeufe!","<br>";
    # echo "<h1>";
    echo "<table>";
    echo 
    "<tr>";
    echo 
    "<td>","AssetID";
    echo 
    "<td>","Wertpapiername";
    echo 
    "<td>","ISIN";
    echo 
    "<td>","Kaufdatum";
    echo 
    "<td>","Stueckzahl";
    echo 
    "<td>","Kaufkurs";
    echo 
    "<td>","Status";
    echo 
    "<tr>";
    # echo "</h1>";
    while($row mysqli_fetch_assoc($result))
    {
    echo 
    "<tr>";
    echo 
    "<td>",$row["AssetID"];
    echo 
    "<td>",$row["wertpapiername"];
    echo 
    "<td>",$row["isin"];
    echo 
    "<td>",$row["datumkauf"];
    echo 
    "<td>",$row["stueckzahl"];
    echo 
    "<td>",number_format($row["kaufkurs"],2,",","."),"&#8364";
    echo 
    "<td>",$row["status"];
    echo 
    "<tr>";
    }
    echo 
    "</table>";
    }
    else
    {
    echo 
    "0 results";
    }

    Datenbank Öffnen ebenfalls als Funktion:

    PHP-Code:
    function mysql_connect($conn)
    {
    ## Konnekt Datenbank
    $servername "localhost";
    $username "www-data";
    $password "--------------";
    $dbname "finanzdepot";
    $charset "utf8";
    $conn mysqli_connect($servername$username$password$dbname);
    if (!
    $conn) {
    die(
    "Connection failed: " mysqli_connect_error());
    }
    if (!
    mysqli_set_charset($conn$charset)) {
    echo 
    "set_charset failed ".mysqli_error($conn);
    }



  • #2
    Bitte nutze die PHP Tags, du findest diese auch als Schalter in der Leiste des Editors.

    Kommentar


    • #3
      @protestix: Vielen lieben netten Dank für den tollen Tipp. Ich habe sogleich den Text angepasst. Ich finde es echt toll worauf hier so alles geachtet wird. Da fühle ich mich doch in diesem Forum mit meinen Problemen besonders gut aufgehoben.

      Kommentar


      • #4
        Ich vermisse bei deinen Dateien mit den Funktionen das öffnende PHP-Tag
        PHP-Code:
        <?php
        Am Ende der PHP-Dateien solltest du das schließende PHP-Tag ruhig weglassen.
        PHP-Klassen auf github

        Kommentar


        • #5
          Include ist keine Funktion sondern Sprachbestandteil.

          Die Reihenfolge ist schon mal falsch.
          PHP-Code:
          include("f_ausgabe_saldo.php");
          include(
          "f_ausgabe_kaeufe.php");
          ...
          include(
          "f_mysql_connect.php"); 
          Du musst ja erst mal eine Verbindung zur DB haben bevor du anfängst mit der DB zu kommunizieren.
          Daher
          PHP-Code:
          include 'f_mysql_connect.php';
          include 
          'f_ausgabe_saldo.php';
          include 
          'f_ausgabe_kaeufe.php';
          ... 
          Die Datei f_mysql_connect.php könnte dann so aussehen
          PHP-Code:
          ## Verbindung mit DBMS
          $servername "localhost";
          $username "www-data";
          $password "--------------";
          $dbname "finanzdepot";

          $conn mysqli_connect($servername$username$password$dbname);

          if ( !
          mysqli_set_charset($conn"utf8") ) {
              die(
          "Leider ist ein Fehler aufgetreten. Bitte kommen sie später wieder.");
              
          // Mail an Webmaster

          Hier also keine Funktion.
          Generell sollten Funktionen auch immer etwas zurückgeben (siehe Return) aber niemals gleichzeitig Ausgaben mit echo vornehmen.

          f_ausgabe_kaeufe.php muss also auch keine Funktion beinhalten.
          Wenn du schon Teile der Datei auslagerst, dann solltest du unbedingt das EVA-Prinzip einhalten, heisst, dass Ausgaben erst ganz am Schluss erfolgen.

          SELECT * bitte nicht schreiben. Führe immer alle Spalten auf die die auch ausgeben lassen möchtest, alles andere sind nur wieder unnötige Fehlerquellen.

          PHP-Code:
          echo "<td>","AssetID"
          Da das wohl eine Überschrift einer Tabelle sein soll nimmt da th statt td, siehe https://wiki.selfhtml.org/wiki/HTML/..._einer_Tabelle



          Kommentar


          • #6
            Hallo ich habe die Tipps ausprobiert und bin auch voran gekommen. Ich kann jetzt eine PHP "function" in eine Datei auslagern und diese über "include" wieder einbinden und an verschiedenen Stellen im Programm aufrufen. Der Tipp einfach Codesequenzen (nicht als function) auszulagern und dann über "include" einzubinden führte mich nicht weiter, weil ich diese Codeschnipsel an verschiedenen Stellen des Programms benötige. Es wird ja ausdrücklich empfohlen die Includeanweisungen ganz an den Anfang zu stellen. Ich habe meine Functions brav mit Returnwerten versehen und und Syntax, wie hier empfohlen angepasst. Ganz vielen herzlichen Dank für die Tipps. Man muss schon etwas umdenken wenn man PHP lernen möchte. Ich habe vor Jahrzehnten mit Assembler, Fortran
            und C aufgehört mit Programmieren. Nun fange ich wegen eines Privatprojektes wieder an.

            P.S. Im Rahmen der Functions hat sich einer weitere Frage ergeben, für die ich ein neues Thema eröffne da sie nicht mehr in die ursprüngliche Fragestellung hier passt.

            Kommentar


            • #7
              Es wird ja ausdrücklich empfohlen die Includeanweisungen ganz an den Anfang zu stellen.
              Das ist zwar eine gute Vorgehensweise aber nicht der Weisheit letzter Schluss.
              Natürlich kannst du überall in deinem Code include Anweisungen setzen, macht man zum Beispiel am Schluss wenn ein Template hinzu geladen werden soll, da würde es auch wenig Sinn machen es an den Anfang zu setzten. Wenn du zudem mehrere Dateien per include einbindest musst du die Reihenfolge wie in jedem anderen Programmablauf auch, befolgen.

              Kommentar

              Lädt...
              X