Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Funktion in externer PHP aufrufen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Funktion in externer PHP aufrufen

    Hallo!
    Ich habe ein Skript, in dem ich dem Output immer bestimmte Sachen anhänge
    PHP-Code:
    $output .= ( ($params['step']<2) ? include 'DatePicker.php' '</br>'); 
    Nun möchte ich allerdings eine Funktion in einer externen PHP aufrufen.
    Mir ist bewusst, dass ich das wie folgt machen kann:
    PHP-Code:
    if ($params['step']==2) {
     include (
    'startzeit');
     
    zeit($datum);

    Aber wie übergebe ich die lange Version meinem Output?
    Bzw kann ich in der Kurzschreibweise die Funktion aufrufen?


  • #2
    Eventuell, indem du mit ob_start() und ob_end_clean() arbeitest?

    Kommentar


    • #3
      Verzichte besser auf echo in Funktionen und liefere das Ergebnis als string. Dann kannst du das Ergebnis einfach an dein $output anfügen:
      PHP-Code:
      $output .=  zeit($datum); 
      PHP-Klassen auf github

      Kommentar


      • #4
        Zitat von monolith Beitrag anzeigen
        Eventuell, indem du mit ob_start() und ob_end_clean() arbeitest?
        Wie funktioniert das?

        Kommentar


        • #5
          Zitat von jspit Beitrag anzeigen
          Verzichte besser auf echo in Funktionen und liefere das Ergebnis als string. Dann kannst du das Ergebnis einfach an dein $output anfügen:
          PHP-Code:
          $output .=  zeit($datum); 
          Ich wüsste nicht, wie ich die php umschreiben sollte.
          PHP-Code:
          <?php
          function zeit($datum){
              
              if( isset( 
          $datum ) && $datum!='no date') {
              
                  
          //Unterordner für ausgewähltes Datum auslesen
                  //ZUM TESTEN
                  //$directory="test_archive/temporary/20140111/radar";
                   
                  
          $directory="test_archive/temporary/".$datum."/radar";
                  
          $unterordner scandir($directory); //Ordner auslesen
                  //print_r($unterordner);

                  
          $Zeiten = array(); 
                  foreach (
          $unterordner as $stunden) { // Ausgabeschleife
                      
          if ($stunden != "." && $stunden != ".."){
                          
          $Zeiten[]=$stunden;
                      }
                      
          sort($Zeiten);
                  };

                  
          //Drop-Down-Menü
                  
          $x count($Zeiten);
                  
          //echo"<select onChange=\"window.location='Datum_auslesen.php?startzeit='+this.value\">";
                  
          echo "<form method='post' action=\"\" >";
                  echo 
          "<select name='zeit' onchange='this.form.submit()'>";
                  
          //echo "<select onChange=setCookie('startzeit', this.value)>";
                  
          echo"<option value=null SELECTED><-- Startzeit wählen --></option>";
                  for (
          $i=$i<$x$i++){
                      echo 
          "<option value='$i'>$Zeiten[$i]</option>"
                  }
                  echo
          "</select>"
                  echo
          "<input name='datum' type='hidden' value='" .$datum."'>";
                  
          //echo"<input type='submit' value='Startzeit festlegen'>";
                  
          echo"</form>";    
              }else{
                  echo 
          'Kein Datum gesetzt.';
              }
          }
              
          ?>

          Kommentar


          • #6
            Zitat von Tinipieps Beitrag anzeigen
            Ich wüsste nicht, wie ich die php umschreiben sollte.
            PHP-Code:
            <?php
            function zeit($datum){

                    
            $output "<form method='post' action=\"\" >";
                    
            $output .=  "<select name='zeit' onchange='this.form.submit()'>";
                            return 
            $ouput;
            }
                
            ?>

            Kommentar


            • #7
              Ansatz geändert und externe Funktionen weg gelassen

              Es geht mir am Ende darum, dass ich ein halbwegs funktionierendes einfaches Beispiel
              PHP-Code:
              <!-- Das PHP-Skript beginnt  - dieser Code muss in die HTML-Datei eingebunden werden-->
              <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                     "http://www.w3.org/TR/html4/loose.dtd">
              <html>
                  <head>
                      <title>Daten auswählen</title>
                      <link rel="stylesheet" type="text/css" href="wetterlage.css">
                      
                      <!--<script language=javascript>
                          function submitForm() {
                              document.forms["params"].submit();
                          }
                      </script>-->
                  </head>
              <body onload="javascript:inputfeld.focus()">

                  <?php
                  $output 
              '<form name="params" action="" method="post">';

                  
              $navigation = array(
                      
              'Startdatum' => 1,
                      
              'Startzeit' => 2,
                      
              'Dauer' => 3,
                      
              'Speichername' => 4
                  
              );

                  
              //scheinbar muss die Abfrage geändert werden, da bei Klick auf Breadcrumb kein Formular abgesendet wird...
                  //bzw irgendwas scheint nicht zu funktionieren mit der Übergabe des Steps
                  
              if( isset( $_POST['data'] ) ) {
                      
              $params json_decode($_POST['data'], true);
                      
                      switch (
              $params['step']){
                          case 
              1:
                              if( isset( 
              $_POST['date'] ) && $_POST['date']!='no date') {
                                  ++
              $params['step'] ;
                                  
              $params['datum'] = $_POST['date'];
                                  echo 
              '<!-- Navigation --> <div> <ul id="nav">';
                                  
              $take $params['step'];
                                  
              $i 0;
                                  foreach (
              $navigation as $text => $s){            
                                      echo 
              '<li><a href="Parameter2.php?step='.$s.'"'.($s==$take ' class="active"' '').' <!--onclick="submitForm()"--> >'.$text.' festlegen </a></li>';            
                                  }
                                  echo 
              '</ul></div>';
                                  
              $output .= 'Datum gesetzt: '$params['datum'];
                              }
                              break;
                          case 
              2:
                              if (isset( 
              $_POST['time'] ) && $_POST['time']!=' no time'){
                                  ++
              $params['step'];
                                  
              $params['zeit'] = $_POST['time'];
                              echo 
              '<!-- Navigation --> <div> <ul id="nav">';
                                  
              $take $params['step'];
                                  
              $i 0;
                                  foreach (
              $navigation as $text => $s){            
                                      echo 
              '<li><a href="Parameter2.php?step='.$s.'"'.($s==$take ' class="active"' '').' <!--onclick="submitForm()"--> >'.$text.' festlegen </a></li>';            
                                  }
                                  echo 
              '</ul></div>';
                                  
              $output .= 'Datum gesetzt: '$params['datum'];
                                  
              $output .= '</br>Startzeit gesetzt: '$params['zeit'] .' Uhr';
                              }
                              break;    
                          case 
              3:
                              if (isset( 
              $_POST['term'] ) && $_POST['term']!=' no term'){
                                  ++
              $params['step'];
                                  
              $params['dauer'] = $_POST['term'];
                              echo 
              '<!-- Navigation --> <div> <ul id="nav">';
                                  
              $take $params['step'];
                                  
              $i 0;
                                  foreach (
              $navigation as $text => $s){            
                                      echo 
              '<li><a href="Parameter2.php?step='.$s.'"'.($s==$take ' class="active"' '').' <!--onclick="submitForm()"--> >'.$text.' festlegen </a></li>';            
                                  }
                                  echo 
              '</ul></div>';
                                  
              $output .= 'Datum gesetzt: '$params['datum'];
                                  
              $output .= '</br>Startzeit gesetzt: '$params['zeit'] .' Uhr';
                                  
              $output .= '</br>Dauer gesetzt: '$params['dauer'] .' Tage';
                              }
                              break;    
                          case 
              4:
                              if (isset( 
              $_POST['name'] ) && $_POST['name']!=' no name'){
                                  ++
              $params['step'];
                                  
              $params['name'] = $_POST['name'];
                              echo 
              '<!-- Navigation --> <div> <ul id="nav">';
                                  
              $take $params['step'];
                                  
              $i 0;
                                  foreach (
              $navigation as $text => $s){            
                                      echo 
              '<li><a href="Parameter2.php?step='.$s.'"'.($s==$take ' class="active"' '').' <!--onclick="submitForm()"--> >'.$text.' festelegen </a></li>';            
                                  }
                                  echo 
              '</ul></div>';
                                  
              $output .= 'Datum gesetzt: '$params['datum'];
                                  
              $output .= '</br>Startzeit gesetzt: '$params['zeit'] .' Uhr';
                                  
              $output .= '</br>Dauer gesetzt: '$params['dauer'] .' Tage';
                                  
              $output .= '</br>Name gesetzt: '$params['name'];
                              }                
                              break;
                      }

                  } else {
                      
              $params = array(    'datum' => 'no date',
                                          
              'zeit' => 'no time',
                                          
              'dauer' => 'no term',
                                          
              'name' => 'no name',
                                          
              'step' => 1,
                                          
              'auswahl' => true
                      
              );
                      
                      if (isset( 
              $_REQUEST['step'])  && $_REQUEST['step'] > $params['step']) {
                              echo 
              'Die Aktion ist nicht erlaubt!';    
                      }
                      
                      echo 
              '<!-- Navigation --> <div> <ul id="nav">';
                      
              $take $params['step'];
                      
              $i 0;
                      foreach (
              $navigation as $text => $s){            
                          echo 
              '<li><a href="Parameter2.php?step='.$s.'"'.($s==$take ' class="active"' '').' <!--onclick="submitForm()"--> >'.$text.' festlegen </a></li>';            
                      }
                      echo 
              '</ul></div>';
                  }
                  
                  
              $output .= ( ($params['step']<2) ? '<h1>Legen Sie nun das Startdatum fest.</h1><input name="date" type="text" value="' $params['datum'] . '" autofocus>' '</br>');
                  
              $output .= ( ($params['step']==2) ? '<h1>Legen Sie nun die Startzeit fest.</h1><input name="time" type="text" value="' $params['zeit'] . '" autofocus>' '</br>');
                  
              $output .= ( ($params['step']==3) ? '<h1>Legen Sie nun die Dauer fest.</h1><input name="term" type="text" value="' $params['dauer'] . '" autofocus>' '</br>');
                  
              $output .= ( ($params['step']==4) ? '<h1>Legen Sie nun den Namen fest.</h1><input name="name" type="text" value="' $params['name'] . '" autofocus>' '</br>');
                  
              $output .= '<input name="data" type="hidden" value=\'' json_encode($params) . '\'>';
                  if (
              $params['step']<5) {
                      
              $output .= '<input type="submit" value="Nächster Schritt"><br/>';
                      
              $output .= 'Step:' $params['step'] . '<br/>';
                  }
                  
              $output .= '</form>';

                  echo 
              $output;  
                  
              ?>
              </body>
              </html>
              in ein komplexeres Beispiel umändern will.
              Hierbei soll im ersten Step ein DatePicker aufgerufen werden. Der Wert soll dem zweiten Step übergeben werden, der dann die Startzeitauswahl beinhaltet usw.
              PHP-Code:
              <!-- Das PHP-Skript beginnt  - dieser Code muss in die HTML-Datei eingebunden werden-->
              <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                     "http://www.w3.org/TR/html4/loose.dtd">
              <html>
              <head>
              <title>Wetterlage archivieren</title>
              </head>
              <body onload="javascript:inputfeld.focus()">
              <!--CSS einbinden-->
              <link rel="stylesheet" type="text/css" href="/styles/wetterlagenarchiv.css"> 

              <?php
                  $output 
              '<form name="params" action="" method="post">';

                  
              $navigation = array(
                      
              'Startdatum' => 1,
                      
              'Startzeit' => 2,
                      
              'Dauer' => 3,
                      
              'Speichername' => 4
                  
              );

                  echo 
              '<h1>Bitte wählen Sie, welche Daten Sie im Archiv ablegen wollen.</h1>';

                  
              //scheinbar muss die Abfrage geändert werden, da bei Klick auf Breadcrumb kein Formular abgesendet wird...
                  //bzw irgendwas scheint nicht zu funktionieren mit der Übergabe des Steps
                  
              if( isset( $_POST['data'] ) ) {
                      
              $params json_decode($_POST['data'], true);
                      
                      switch (
              $params['step']){
                          case 
              1:
                              if( isset( 
              $_POST['date'] ) && $_POST['date']!='no date') {
                                  ++
              $params['step'] ;
                                  
              $params['datum'] = $_POST['date'];
                                  echo 
              '<!-- Navigation --> <div> <ul id="nav">';
                                  
              $take $params['step'];
                                  
              $i 0;
                                  foreach (
              $navigation as $text => $s){            
                                      echo 
              '<li><a href="archivieren.php?step='.$s.'"'.($s==$take ' class="active"' '').'>'.$text.' festlegen </a></li>';            
                                  }
                                  echo 
              '</ul></div>';
                                  
              $date date_format(date_create($params['datum']), 'd.m.Y');
                                  
              $output .= 'Datum gesetzt: '$date;
                                  
              $output .= '</br>Sie befinden sich bei Step: '.$params['step'];
                                  
                              }
                              break;
                          case 
              2:
                              if (isset( 
              $_POST['zeit'] ) && $_POST['zeit']!=' no time'){
                                  ++
              $params['step'];
                                  
              $params['zeit'] = $_POST['time'];
                              echo 
              '<!-- Navigation --> <div> <ul id="nav">';
                                  
              $take $params['step'];
                                  
              $i 0;
                                  foreach (
              $navigation as $text => $s){            
                                      echo 
              '<li><a href="archivieren.php?step='.$s.'"'.($s==$take ' class="active"' '').' <!--onclick="submitForm()"--> >'.$text.' festlegen </a></li>';            
                                  }
                                  echo 
              '</ul></div>';
                                  
              $date date_format(date_create($params['datum']), 'd.m.Y');
                                  
              $output .= 'Datum gesetzt: '$date;
                                  
              $output .= '</br>Startzeit gesetzt: '$params['zeit'] .' Uhr';
                              }
                              break;
                          case 
              3:
                              
                              break;
                      }
                  }else{
                      
              $params = array(    'datum' => 'no date',
                                          
              'zeit' => 'no time',
                                          
              'dauer' => 'no term',
                                          
              'name' => 'no name',
                                          
              'step' => 1,
                                          
              'auswahl' => true
                      
              );
                      
                      echo 
              '<!-- Navigation --> <div> <ul id="nav">';
                      
              $take $params['step'];
                      
              $i 0;
                      foreach (
              $navigation as $text => $s){            
                          echo 
              '<li><a href="archivieren?step='.$s.'"'.($s==$take ' class="active"' '').'>'.$text.' festlegen </a></li>';            
                      }
                      echo 
              '</ul></div>';
                  }
                  
              $output .= ( ($params['step']<2) ? datePicker() : '</br>');
                  
              $output .= ( ($params['step']==2) ? zeit($params['datum']) : '</br>');
                  
              $output .= '<input name="data" type="hidden" value=\'' json_encode($params) . '\'>';
                  
              $output .= '</form>';

                  echo 
              $output;
                  
                  function 
              datePicker() {
                      
              //Create the form
                      
              echo "<FORM ACTION=".$_SERVER['PHP_SELF']." METHOD=POST>"
                      echo 
              "<SELECT name='date' >
                              <OPTION>Startdatum waehlen</OPTION>"


                      
              $dir="test_archive/temporary";
                      
              $alledateien scandir($dir); //Ordner auslesen
                       
                      
              $dates = array(); 


                      foreach (
              $alledateien as $datei) { // Ausgabeschleife
                           
              if ($datei != "." && $datei != ".."){
                              
              $date date_format(date_create($datei), 'd.m.Y');
                              echo 
              "<OPTION value='".$datei."'>".$date."</OPTION>"
                           }
                      };

                      echo 
              "</SELECT>";
                      echo 
              "<P>";
                      echo 
              "<INPUT TYPE='SUBMIT' NAME='Submit' VALUE='Startdatum festlegen'>";
                  }
                  
                  function 
              zeit($datum){
                  
                      if( isset( 
              $datum ) && $datum!='no date') {
                      
                          
              //Unterordner für ausgewähltes Datum auslesen
                          //ZUM TESTEN
                          //$directory="test_archive/temporary/20140111/radar";
                           
                          
              $directory="test_archive/temporary/".$datum."/radar";
                          
              $unterordner scandir($directory); //Ordner auslesen
                          //print_r($unterordner);

                          
              $Zeiten = array(); 
                          foreach (
              $unterordner as $stunden) { // Ausgabeschleife
                              
              if ($stunden != "." && $stunden != ".."){
                                  
              $Zeiten[]=$stunden;
                              }
                              
              sort($Zeiten);
                          };

                          
              //Drop-Down-Menü
                          
              $x count($Zeiten);
                          
              //echo"<select onChange=\"window.location='Datum_auslesen.php?startzeit='+this.value\">";
                          
              echo "<form method='post' action=\"\" >";
                          echo 
              "<select name='zeit' onchange='this.form.submit()'>";
                          
              //echo "<select onChange=setCookie('startzeit', this.value)>";
                          
              echo"<option value=null SELECTED><-- Startzeit wählen --></option>";
                          for (
              $i=$i<$x$i++){
                              echo 
              "<option value='$i'>$Zeiten[$i]</option>"
                          }
                          echo
              "</select>"
                          echo
              "<input name='datum' type='hidden' value='" .$datum."'>";
                          
              //echo"<input type='submit' value='Startzeit festlegen'>";
                          
              echo"</form>";    
                      }else{
                          echo 
              'Kein Datum gesetzt.';
                      }
                  } 
              ?>
              </body>
              </html>
              Evtl ist mein Ansatz ja komplett falsch!?
              Allerdings funktioniert der Code beim Wechsel von Step 1 zu Step 2. Nur nach Step 2 kommt wieder automatisch Step 1.
              Ich finde halt meinen Fehler nicht.
              Hab es jetzt mit "internen" Funktionen probiert, statt mit externen PHP-Dateien.
              Aber, gleiches Problem

              Kommentar


              • #8
                Zitat von moma Beitrag anzeigen
                PHP-Code:
                <?php
                function zeit($datum){

                        
                $output "<form method='post' action=\"\" >";
                        
                $output .=  "<select name='zeit' onchange='this.form.submit()'>";
                                return 
                $ouput;
                }
                    
                ?>
                AH...
                Da hab ich wohl mal kurz den Kopf ausgeschaltet
                Na ja, habe es ja aber bereits anders gelöst...
                Und bin ja direkt auf das nächste Problem gestossen

                Kommentar

                Lädt...
                X