Ankündigung

Einklappen
Keine Ankündigung bisher.

Dropdown aus txt file vorwählen (selected)

Einklappen

Neue Werbung 2019

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

  • Dropdown aus txt file vorwählen (selected)

    Hallo Leute,

    ich bin momentan dabei ein webinterface für meinen Raspberry zu erstellen.
    folgendes funktioniert bereits.

    -index.php mit chromium auf pi im kiosk mode starten.
    -werte mit dropdown auswählen und per post in eine txt schreiben (transferdata.txt)
    - werte wieder auslesen und in text feldern anzeigen
    - werte wieder auslesen und checkboxen als selected anzeigen wenn der richtige wert in der txt steht.

    soweit so gut....

    jetzt meine Frage:

    ich möchte im dropdown die zahl als selected anzeigen die ich aus der txt lese , aber das kreige ich nicht hin.

    kann evt. jemand meinen code prüfen und mir einen lösungsansatz geben.

    der focus liegt hier auf $stunde1 = $ARR_rows[8]; als variable
    und im dropdown auf

    <option value="1" <?php Echo $sel;?>>1</option>

    hier nochmal der ganze code für die index.php:

    PHP-Code:
    <?php
    //Datei einlesen
    $STR_filecontent file_get_contents("transferdata.txt");
    $ARR_rows explode("\n"$STR_filecontent);

        
    $CH1 $ARR_rows[4]; //Schreibt den Wert aus Zeile 4 in CH1
        
    $CH2 $ARR_rows[5];
        
    $CH3 $ARR_rows[6];
        
    $CH4 $ARR_rows[7];
        
    $stunde1 $ARR_rows[8];
        

    if (
    $stunde1 == '1')
        {
            
    $sel "selected";
        }
        else
        {
        
    $sel "unselected";
        }
    if (
    $stunde1 == '2')
        {
            
    $sel "selected";
        }
        else
        {
        
    $sel "unselected";
        }
    if (
    $stunde1 == '3')
        {
            
    $sel "selected";
        }
        else
        {
        
    $sel "unselected";
        }
    readfile ('transferdata.txt');
    echo 
    $sel;
    ?>
    <html>
    <form method="post" action="writedata.php">
    Version 1.0

    <p>Grenzwert 1 in C <input name="gw1" type="text" size="3" maxlength="2" value=<?php Echo $ARR_rows[0];?> </p>
    <p>Grenzwert 2 in C <input name="gw2" type="text" size="3" maxlength="2" value=<?php Echo $ARR_rows[1];?> </p>
    <p>Grenzwert 3 in C <input name="gw3" type="text" size="3" maxlength="2" value=<?php Echo $ARR_rows[2];?> </p>
    <p>Grenzwert 4 in C <input name="gw4" type="text" size="3" maxlength="2" value=<?php Echo $ARR_rows[3];?> </p>
    <br>
    <br>
    <input type="checkbox" name="CH1" value="1"
        <?php if ($CH1 == '1') echo 'checked="checked"';?> /> Aktiviert<br>

    <input type="checkbox" name="CH2" value="2"
        <?php if ($CH2 == '2') echo 'checked="checked"';?> /> Aktiviert<br>

    <input type="checkbox" name="CH3" value="3"
        <?php if ($CH3 == '3') echo 'checked="checked"';?> /> Aktiviert<br>

    <input type="checkbox" name="CH4" value="4"
        <?php if ($CH4 == '4') echo 'checked="checked"';?> /> Aktiviert<br>
    <br>

    <p>Stunden <input name="stundenzeigen" size="3" maxlength="2" value=<?php Echo $ARR_rows[8];?> </p>

    <p>Stunde: <select name="stundenan">
    <option value="00"<?php Echo $sel;?>>00</option>
    <option value="1" <?php Echo $sel;?>>1</option>
    <option value="2" <?php Echo $sel;?>>2</option> 
    <option value="3" <?php Echo $sel;?>>3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
    <option value="13">13</option>
    <option value="14">14</option>
    <option value="15">15</option>
    <option value="16">16</option>
    <option value="17">17</option>
    <option value="18">18</option>
    <option value="19">19</option>
    <option value="20">20</option>
    <option value="21">21</option>
    <option value="22">22</option>
    <option value="23">23</option>
    </select>
    <br>
    <p>Minuten: <select name="minutenan">
    <option value="00">00</option>
    <option value="5">5</option>
    <option value="10">10</option>
    <option value="15">15</option>
    <option value="20">20</option>
    <option value="25">25</option>
    <option value="30">30</option>
    <option value="35">35</option>
    <option value="40">40</option>
    <option value="45">45</option>
    <option value="50">50</option>
    <option value="55">55</option>
    </select>
    <br>
    <br>
    <br>
    <br>
    <input type="submit" name="Button" onClick="history.go(0)" value="Abschicken">
    <br>
    <INPUT TYPE="button" onClick="history.go(0)" VALUE="Refresh"> 
    <br>
    </form>

    Vielen Dank.


  • #2
    PHP-Code:
    if ($stunde1 == '1')
        {
            
    $sel "selected";
        }
        else
        {
        
    $sel "unselected";
        }
    if (
    $stunde1 == '2')
        {
            
    $sel "selected";
        }
        else
        {
        
    $sel "unselected";
        }
    if (
    $stunde1 == '3')
        {
            
    $sel "selected";
        }
        else
        {
        
    $sel "unselected";
        } 
    Damit setzt du die Variable immer wieder neu, selbst wenn sie am Anfang auf selected gesetzt wird, würde an Ende unselected rauskommen.

    Ich denke für dich würde sich eine Schleife anbieten

    PHP-Code:
    // Durchläuft die Stunden 0 bis 23
    for($aktuelleStunde 0$aktuelleStunde 24$aktuelleStunde++){

        
    // prüft ob der Zähler des aktuellen Durchlaufs mit dem Wert aus der Datei übereinstimmt
        // falls ja, wird selected gesetzt
        
    $sel $aktuelleStunde === $stunde1 'selected' null;

        
    // Ausgabe
        
    echo '<option value="'.$aktuelleStunde.'" '.$sel.' >'.$aktuelleStunde.'</option> ';

    Relax, you're doing fine.
    RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

    Kommentar


    • #3
      Danke für die schnelle Antwort aber ich verstehe sie nicht ganz...
      Was meinst du mit // Durchläuft die Stunden 0 bis 23

      und wo lese ich die txt datei aus?
      Sorry bin halt noch Anfänger...

      Kommentar


      • #4
        Scheint recht kompliziert zu sein....

        Kommentar


        • #5
          Du machst einen (typischen) Anfänger-Fehler. Ich rate dir dazu das JSON-Format zum speichern zu verwenden.

          Speicher:
          PHP-Code:
          $data = array(1,2,3,4,5);
          file_put_contents('data.json'json_encode($data)); 
          Laden:
          PHP-Code:
          $data json_decode(file_get_contents('data.json'), true);
          echo 
          $data[0]; // echo'ed: 1 
          Wenn du eine Selektion makieren willst und einen Select-Block erzeugen willst kannst du das mit geringen aufwand, ohne großartig mit for, foreach oder while zu arbeiten. Das können die array-Werkzeuge von PHP mit bravour.

          PHP-Code:
          $currentHour 10;

          $selects array_map(function($hour) use ($currentHour) {
             
          $selected $hour === $currentHour
                
          ' selected="selected"'
                
          '';

             return 
          sprintf(
                
          '<option value="%u"%s>%u</option>',
                
          $hour,
                
          $selected,
                
          $hour
             
          );
          }, 
          range(023));

          echo 
          '<select name="foo">'.PHP_EOL.join(PHP_EOL$selects).PHP_EOL.'</select>'
          Es spricht nichts dagegen das du for-Schleifen verwendest, ich persönlich würde aber Array-mapping einer Werte-gesteuerten Traversion vorziehen, da hier gezeigte Array-mappings immer einen eigenen kontrollierbaren Scope benutzen. Schleifen tun das nicht.
          [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

          Kommentar


          • #6
            Super danke für die schnelle Antwort. ..muss ich mir mal genauer anschauen. ..

            Kommentar


            • #7
              Bis jeztz nur Bahnhof

              Kommentar


              • #8
                Innerhalb der einen Minute wirst du das logisch nicht verstanden haben... Nimm dir doch 10 Minuten, 30 Minuten, 2 Stunden Zeit und lerne das vernünftig.
                GitHub.com - ChrisAndChris - RowMapper und QueryBuilder für MySQL-Datenbanken

                Kommentar


                • #9
                  Hahaha....das habe ich vor....

                  Kommentar

                  Lädt...
                  X