Ankündigung

Einklappen
Keine Ankündigung bisher.

Navigation durch Formular

Einklappen

Neue Werbung 2019

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

  • Navigation durch Formular

    Hallo!
    Ich versuche ein Formular zu erstellen und hierfür eine Navigation ähnlich eines Breadcrumb anzulegen.
    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             
                
    $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>
    Ich versuche das mit einer Variablen 'Step' zu lösen.
    Vom ersten zum zweiten Step funktioniert es auch prima, aber dann nicht mehr...
    Könnt Ihr mir weiter helfen? Wo könnte mein Fehler liegen?


  • #2
    Musst du wirklich ein Konzept wie eine Breadcrumb-Navigation in einem Affenformular und ohne jede Spur von Objekt-orientierter Programmierung implementieren?

    Dadurch entsteht ein sehr lange und auf mich total abschreckender Wust aus HTML und PHP und verschiedenen Aspekten der Logik, die gar nichts miteinander zu tun haben. Durch alles muss ich mich erst durchlesen um überhaupt zu finden wo sich die Breadcrum-Navi befindet. Dazu habe ich keine Lust.

    Daher rate ich dir dringend: Da das hier scheinbar über eine Einstiegs-App hinausgeht - separation of concerns! Also Trennung von "Anliegen". Zum Beispeil HTML von PHP. Zum Biepsiel eine eigene Klasse für die Breadcrumb-Navigation.

    Kommentar


    • #3
      PHP-Code:
      $navigation = array(
              
      'Startdatum' => 1,
              
      'Startzeit' => 2,
              
      'Dauer' => 3,
              
      'Speichername' => 4
          
      );

      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>'
      Das ist der Code, der die Navigation betrifft

      Kommentar

      Lädt...
      X