Ankündigung

Einklappen
Keine Ankündigung bisher.

Selektieren in while-Schleife mit Textdatei

Einklappen

Neue Werbung 2019

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

  • Selektieren in while-Schleife mit Textdatei

    Guten Morgen,
    folgendes Anliegen:
    Ich lasse aus einer Textdatei ein Dropdown-Menü erstellen, was soweit auch klappt. Darüberhinaus möchte ich aber, dass der per POST übermittelte Wert selektiert wird, woran ich trotz intensiver Suche (jede Lösung arbeitet mit einer Datenbank, ich lese aber aus einer .txt aus <.<) und Testerei allerdings scheiterte.

    Folgende Lösungsansätze habe ich in einem kleinen Probescript versucht:
    PHP-Code:
    <?php
    function readoptions($readfile) {
        
    $ausgabe $_POST['buchstabe'];
        
    $openfile fopen($readfile"r");
        while (!
    feof($openfile) ) {
            
    $line_of_text fgets($openfile);
            
    $selected = ($ausgabe == $line_of_text) ? ' selected="selected"' '';
            echo 
    '<option '.$selected.'>'$line_of_text '</option>';
        }
        
    fclose($openfile);
        return 
    $options;
    }
    ?>

    <form method="post" action="">
    Buchstabe: <select name="buchstabe">
    <option>Auswahl treffen</option>
    <?= readoptions('aufbau.txt'); ?>
    </select>
    <input type="submit" name="sendpost" value="absenden">
    </form>

    <?php
    if(isset($_POST['sendpost'])) {
    echo 
    $_POST['buchstabe'];
    }
    ?>
    PHP-Code:
    <?php
    function readoptions($readfile) {
        
    $ausgabe $_POST['buchstabe'];
        
    $openfile fopen($readfile"r");
        while (!
    feof($openfile) ) {
            
    $line_of_text fgets($openfile);
            if(
    $ausgabe==$line_of_text) {
                echo 
    '<option selected>'$line_of_text '</option>';
            }
            else {
                echo 
    '<option>'$line_of_text '</option>';
            }
        }
        
    fclose($openfile);
        return 
    $options;
    }
    ?>

    <form method="post" action="">
    Buchstabe: <select name="buchstabe">
    <option>Auswahl treffen</option>
    <?= readoptions('aufbau.txt'); ?>
    </select>
    <input type="submit" name="sendpost" value="absenden">
    </form>

    <?php
    if(isset($_POST['sendpost'])) {
    echo 
    $_POST['buchstabe'];
    }
    ?>
    In beiden Fällen versuche ich, bei Gleichheit zwischen "$ausgabe == $line_of_text" das Attribut "selected" hinzuzufügen. Der Denkfehler wird wahrscheinlich sein, dass "$line_of_text" innerhalb der if-Schleife permanent ändern, sodass in jedem Fall nur die letzte Zeile des Textdokuments auch selektiert werden kann. Nur wie gehe ich gegen diesen "Denkfehler" vor, hat da wer einen Anstoß?


  • #2
    PHP-Code:
     <?php
      
    function readoptions($readfile$ausgabe
      {
        
    $data file($readfile);
        
        foreach (
    $data as $line)
        {
            
    $line_of_text trim($line);
            
    $selected = ($ausgabe == $line_of_text) ? ' selected="selected"' '';
            echo 
    '<option ' $selected.'>' $line_of_text '</option>';
        }
      }

      
    $buchstabe = isset($_POST['buchstabe']) ? $_POST['buchstabe'] : "";
    ?>

    <form method="post" action="">
      Buchstabe: 
      <select name="buchstabe">
       <option>Auswahl treffen</option>
    <?php readoptions('aufbau.txt'$buchstabe); ?>
      </select>
      <input type="submit" name="sendpost" value="absenden">
    </form>
    Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

    Kommentar

    Lädt...
    X