Ankündigung

Einklappen
Keine Ankündigung bisher.

Ausgabe einer Funktion in andere Datei übergeben

Einklappen

Neue Werbung 2019

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

  • Ausgabe einer Funktion in andere Datei übergeben

    Hallo Leute, ich steh heute voll auf dem Schlauch. Ich möchte folgendes machen, hänge aber zur Zeit. Ich hab in einer Klasse eine Funktion, und würde das Ergebnis gerne in einer anderen Datei ersichtlich machen.

    Ich hab eine Datei "main.php" und in dieser hab ich die Funktion und möchte in der Datei "output/uebersicht.php" das Ergebnis zeigen, welches ich jetzt zur Zeit in der Funktion zeige.
    PHP-Code:
    function element($kategorien) {

            foreach (
    $kategorien as $key => $val) {
                
    $key;
            }

            if (
    $key != 0) {
                
    $kategorie 'WHERE b.Kategorie_ID = '.$key;
            } else {
                
    $kategorie '';
            }

            
    $row_data_elemente $this->db->resultset($this->db->query('SELECT  a.Element_ID, b.Bezeichnung, a.Name, a.Organe, a.Wirkung, a.Anwendung '
                    
    'FROM tbl_element a '
                    
    'INNER JOIN tbl_kategorie b ON b.Kategorie_ID = a.Kategorie_ID '.$kategorie));

            echo 
    '<div class="uebersicht">';
            echo 
    '<table><tr>';
            echo 
    '<th>Element</th>';
            echo 
    '<th>Name</th>';
            echo 
    '<th>Wirkung</th>';
            echo 
    '<th>Organe</th>';
            echo 
    '<th>Anwendung</th>';
            echo 
    '<th>Bearbeiten</th>';
            echo 
    '</tr>';

            foreach (
    $row_data_elemente as $row_element) {

                
    $bezeichnung $row_element['Bezeichnung'];
                
    $name $row_element['Name'];
                
    $wirkung $row_element['Wirkung'];
                
    $anwendung str_replace(',',',<br />',$row_element['Anwendung']);
                
    $organe str_replace(',',',<br />',$row_element['Organe']);
                
    $id $row_element['Element_ID'];

                echo 
    '<tr>';
                echo 
    '<td>'.$bezeichnung.'</td>';
                echo 
    '<td>'.$name.'</td>';
                echo 
    '<td>'.$wirkung.'</td>';
                echo 
    '<td>'.$organe.'</td>';
                echo 
    '<td>'.$anwendung.'</td>';
                echo 
    '<td><input class="btn_submit" type="submit" name="action_b['.$id.']" value="Bearbeiten" />';
                echo 
    '</tr>';            
            }
            echo 
    '</table></div>';        
        } 
    Ich weiss jetzt leider wirklich nicht, wie ich die Funktion vorbereiten soll und wie ich das Ergebnis, welches hier mit echo dargestellt wird, in die Datei "output/uebersicht.php" bekomme. Bitte um Hilfe

  • #2
    In welcher Beziehung stehen diese beiden Scripte? Holst du uebersicht.php per include in die main.php?

    Unabhängig von diesen Fragen sollten Funktionen/Methoden echo vermeiden und einen Wert als Rückgabe liefern (Hier einen String).
    Und du must dafür sorgen, das du in deiner uebersicht.php ein Objekt deiner Klasse verfügbar hast.

    Kommentar


    • #3
      Jetzt hab ich mal eine Beziehung zur uebersicht.php via include in main.php hergestellt.

      Unabhängig von diesen Fragen sollten Funktionen/Methoden echo vermeiden und einen Wert als Rückgabe liefern (Hier einen String).
      Genau das möchte ich erreichen.

      Leider weiss ich nicht wie und wie ich dann in der uebersicht.php an die Daten ran komme, ich möchte die foreach-Schleife in der uebersicht.php haben.

      Kommentar


      • #4
        Ich hab nun auch in der uebersicht.php ein Objekt meiner Klasse verfügbar gemacht. Nur wie komm ich jetzt an die Daten?

        Kommentar


        • #5
          PHP-Code:
          class Main {
              function 
          element() {
                  
          // html zusammenstellen
                  
          return $html;
               }
          }

          // Datei uebersicht.php
          include('main.php');
          $main = new Main();
          echo 
          $main->element(); 

          Kommentar


          • #6
            Zitat von m-werk Beitrag anzeigen
            Jetzt hab ich mal eine Beziehung zur uebersicht.php via include in main.php hergestellt.
            Ob das sinnvoll ist kannst nur du entscheiden. Meinerseits war das eine Frage, keine Forderung!

            Wenn du das Objekt verfügbar hast, kannst dort auch deine Methode aufrufen. Doch ob das alles so passt, kann ich nicht einschätzen.
            Du solltest etwas mehr auf das Problem reduzierten Code zeigen.



            Kommentar


            • #7
              Ok, das heißt, danstelle von echo in der function element soll ich $html nehmen welches ich mit jeder neuen Zeile mit $html .= erweitere oder?

              Kommentar


              • #8
                Wenn es darum geht:

                Zitat von jspit
                Unabhängig von diesen Fragen sollten Funktionen/Methoden echo vermeiden und einen Wert als Rückgabe liefern (Hier einen String).
                Ja.
                The string "()()" is not palindrom but the String "())(" is.

                Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                PHP.de Wissenssammlung | Kein Support per PN

                Kommentar


                • #9
                  hmm, aber schöner wäre doch, wenn der ganze html Teil in die uebersicht.php kommt, so dass in der main.php nur die funktion steht. Das heißt, in der Funkton sollte eigentlich nur der SELECT stehen und die Foreach-Schleife in der uebersicht.php.

                  oder?

                  Was ich auch nicht ganz verstehe, warum ich auf meine main.php mit include nicht zugreifen kann.

                  Die Datei "uebersicht.php" befindet sich in einem Unterordner (output). Wenn ich "include('../main.php'); eingebe, kommt folgende Meldung:
                  Warning: include(../main.php): failed to open stream: No such file or directory

                  Ok, das mit dem Include hab ich gelöst.

                  Kommentar


                  • #10
                    -> Includes niemals ohne __DIR__
                    PHP-Code:
                    require __DIR__.'../main.php'
                    so ok?
                    The string "()()" is not palindrom but the String "())(" is.

                    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                    PHP.de Wissenssammlung | Kein Support per PN

                    Kommentar


                    • #11
                      Ja, so hatte ich es gelöst

                      Kommentar


                      • #12
                        So nun hab ich es wie folgt gelöst:
                        In der Main.php hab ich die funkton stehen:
                        PHP-Code:
                        function elements($kategorien) {

                                foreach (
                        $kategorien as $key => $val) {
                                    
                        $key;
                                }

                                if (
                        $key != 0) {
                                    
                        $kategorie 'WHERE b.Kategorie_ID = '.$key;
                                } else {
                                    
                        $kategorie '';
                                }

                                
                        $row_data_elemente $this->db->resultset($this->db->query('SELECT  a.Element_ID, b.Bezeichnung, a.Name, a.Organe, a.Wirkung, a.Anwendung '
                                        
                        'FROM tbl_element a '
                                        
                        'INNER JOIN tbl_kategorie b ON b.Kategorie_ID = a.Kategorie_ID '.$kategorie));

                                
                        $html $row_data_elemente;

                                return 
                        $html;        
                            } 
                        Und in meiner Index.php (hat sich aus gewissen gründen jetzt geändert!) hab ich folgendes stehen:
                        PHP-Code:
                        echo '<div class="uebersicht">';
                            echo 
                        '<table><tr>';
                            echo 
                        '<th>Element</th>';
                            echo 
                        '<th>Name</th>';
                            echo 
                        '<th>Wirkung</th>';
                            echo 
                        '<th>Organe</th>';
                            echo 
                        '<th>Anwendung</th>';
                            echo 
                        '<th>Bearbeiten</th>';
                            echo 
                        '</tr>';

                            foreach (
                        $element->elements($data['action']) as $row_element) {
                                
                        $bezeichnung $row_element['Bezeichnung'];
                                
                        $name $row_element['Name'];
                                
                        $wirkung $row_element['Wirkung'];
                                
                        $anwendung str_replace(',',',<br />',$row_element['Anwendung']);
                                
                        $organe str_replace(',',',<br />',$row_element['Organe']);
                                
                        $id $row_element['Element_ID'];

                                echo 
                        '<tr>';
                                echo 
                        '<td>'.$bezeichnung.'</td>';
                                echo 
                        '<td>'.$name.'</td>';
                                echo 
                        '<td>'.$wirkung.'</td>';
                                echo 
                        '<td>'.$organe.'</td>';
                                echo 
                        '<td>'.$anwendung.'</td>';
                                echo 
                        '<td><input class="btn_submit" type="submit" name="action_b['.$id.']" value="Bearbeiten" />';
                                echo 
                        '</tr>';
                            }
                            echo 
                        '</tr></table></div>'
                        Somit hab ich die Ausgabe von der Funktion getrennt.

                        Kommentar

                        Lädt...
                        X