Ankündigung

Einklappen
Keine Ankündigung bisher.

Datei mit php auslesen und in HMTL darstellen

Einklappen

Neue Werbung 2019

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

  • Datei mit php auslesen und in HMTL darstellen

    Moin moin
    ich bin absoluter Neuling was PHP und HTML betrifft. Ich suche set einiger Zeit eine Lösung für folgende Frage.

    Ich möchte aus einer Datei nur die Zeilen auslesen in denen ein "=" Zeichen vorkommt. Diese Zeilen sehen wie folgt aus:

    VAR1=wert1
    VAR2=wert2
    VAR3=wert3

    usw.

    Nun möchte ich diese Zeilen, also den Variablennamen und dessen Wert getrennt voneinander anzeigen lassen. Der zweite Schritt soll sein, dass die Werte geändert werden dürfen und dann wieder in die Datei zurückgeschrieben werden.
    Kann mir jemand erklären wie ich so etwas anstellen kann? ... wie gesagt "Newbee" ...


    Hier schon mal das was ich gemacht habe:

    HTML-Code:
    <html lang="de">
      <head>
        <link rel="stylesheet" href="stylesheet.css" type="text/css">
        <meta charset="UTF-8">
        <title>Dateiaenderung</title>
      </head>
      <body>
        <div id="box0" class="box3">
          <fieldset class="aformular" action="" method="post">
            <legend id="ueberschrift">Variablen</legend>
    
    <?php
    
            $file = 'tre';
            $file_handle = fopen($file, 'r');
            $counter = 0;
    
            while (!feof($file_handle)) {
              $counter++;
              $line = fgets($file_handle);
              echo "<b>$counter</b> Kompletter String: <b>$line</b></br />";
              list($myvar, $mywert) = explode("=", $line);
    //          echo "<b>Erste Variable = Variablenname:</b></br />";
    //          echo "$myvar</br />";
    //          echo "<b>Zweite Variable = Variablenwert:</b></br />";
    //          echo "$mywert</br />";
    //          echo "<br />";
    // das war nur ein Test damit ich sehen kann was ausgegeben wird. Eigentlich alles und eine Variablenpaar was leer ist, obwohl keine Leerzeile am Ende der Datei ist...
            }
    
            fclose($file_handle);
    ?>
    
            <div class="inputbox">
              <input type="text" id="was"     placeholder="<?php echo $counter; ?>"  size="50" maxlength="50"><br><br>
              <input type="text" id="name"    placeholder="name"                     size="50" maxlength="50"><br><br>
              <input type="text" id="vorname" placeholder="vorname"                  size="50" maxlength="50"><br><br>
              <input type="text" id="datum"   placeholder="datum"                    size="50" maxlength="50"><br><br>
              <input type="text" id="zeit"    placeholder="zeit"                     size="50" maxlength="50"><br><br>
            </div>
    
            <input type="submit" value="Abschicken">
          </fieldset>
        </div>
      </body>
    </html>
    $counter wird brav ausgegeben schon mal was. Aber ich möchte ja alle Zeilen untereinander angezeigt bekommen....


    Kann mir jemand ein Rudel Tipps und ein paar Anstupshilfen geben?

    Thx
    ascotlx

  • #2
    Du solltest dir erst nochmal drüber nachdenken wie deine Schritte genau aussehen

    1. Datei zeilenweise einlesen
    2. Zeilen ohne = rausfiltern

    und danach kommt erst der ganze Anzeigekram

    https://php-de.github.io/jumpto/eva-prinzip/

    Für 1. würde ich mit file() und dem Flag FILE_IGNORE_NEW_LINES arbeiten. Danach kannst du mir array_filter() über dein Array iterieren und Zeilen ohne = rauswerfen.

    Pseudocode:

    PHP-Code:
    $lines file('foo.bar');
    $assignments array_filter($lines, function($line){ return strpos($line'=') !== false; }); // wenn = vorhanden

    ...

    <
    html>

    ...

    foreach(
    $assignments as $assignment){ explode ... } 
    und zwischendurch immer mit print_r() oder var_dump() arbeiten um dir die Ergebnisse anzuschaun.
    [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

    Kommentar


    • #3
      Du könntest zum Lesen auch http://php.net/manual/de/function.parse-ini-file.php verwenden.

      Und speichern dann mit foreach() und $key . '=' . $value . "\n"
      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


      • #4
        wow, was man nicht mit ein wenig Hilfe alles hinkriegt. ...

        PHP-Code:
        <?php

        $lines 
        file('tre',FILE_IGNORE_NEW_LINES FILE_SKIP_EMPTY_LINES);
        $searchstr '=';
        $assignments array_filter($lines, function($line){ return strpos($line'=') !== false; }); // wenn = vorhanden

        // Durchgehen des Arrays und Anzeigen des HTML-Quelltexts inkl. Zeilennummern
        foreach ($assignments as $line_num => $line) {
          list(
        $myvar$mywert) = explode("="$line);
          echo 
        "Line #<b>{$line_num}</b> : " htmlspecialchars($myvar) ." Trenner " htmlspecialchars($mywert) . "<br>\n";
        }

        ?>
        Ich weiss zwar nicht, ob das so gemeint war aber, ich bekomme jetzt "nur" noch die Zeilen angezeigt die ich suche ... (Hauptsache, dass es kein Zufallstreffer war )

        HTML-Code:
        Line #4 : VAR1 Trenner hallo
        Line #5 : VAR2 Trenner Du
        Line #6 : VAR3 Trenner da
        Line #7 : VAR4 Trenner "was denn"
        Jetzt muss ich wohl den nächsten Schritt wagen und dies in das HTML ... einsetzten..
        Ich melde mich wieder... wenn jemand aber schon vorab einen Tipp hat ... immer her damit *gg*

        Danke schon mal im voraus.

        Kommentar


        • #5
          Ja sieht doch gut aus. Wenn du das sauber ins HTML überführen willst kannst du dir mal eine Templateengine wie TWIG ansehen. Mit Dokumentationen kommst du ja scheinbar klar.
          [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

          Kommentar


          • #6
            Hallo chorn,

            vielen Dank für die Hilfestellung ... hat mir sehr geholfen. Mit TWIG bin ich aber nicht weitergekommen, da ich in der kürze nicht wusste was ich damit anfangen sollte.

            Aber nun ist's geschafft, ist aber nicht mein HTML Werk... vielleicht interessiert es ja jemanden.

            HTML-Code:
            <!DOCTYPE html>
            <html lang="de">
              <head>
                <link rel="stylesheet" href="stylesheet.css" type="text/css">
                <meta charset="UTF-8">
                <title>Dateiaenderung</title>
              </head>
              <body>
                <div id="box0" class="box3">
                  <fieldset class="aformular" action="" method="post">
                    <legend id="ueberschrift">Variablen anzeigen lassen</legend>
            
                    <div class="box1">
                      <h2 class="name1">Parametername</h2>
                      <h2 class="wert1">Konfigurationsparameter</h2>
                    </div>
            
                   <!-- Bearbeitung ueber PHP -->
                   <?php
            
                     $lines = file('tre',FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
                     $searchstr = '=';
                     $assignments = array_filter($lines, function($line){ return strpos($line, '=') !== false; }); // wenn = vorhanden
            
                     foreach ($assignments as $line_num => $line) {
                       list($myvar, $mywert) = explode("=", $line);
                       echo "<section class="section1">";
                       echo "<p>$myvar<input type="text" size="50" maxlength="50" class="inputbox" name="sicherung" placeholder="$mywert" <br><br><p>";
                       echo "</section>";
                     }
            
                   ?>
            
                    <input type="submit" value="Werte ändern">
                  </fieldset>
                </div>
              </body>
            </html>
            Nun bleibt die Frage: wenn ich nun einen Wert andere, wie kann ich diese geänderten Werte (einen oder alle) wieder zurückschreiben?
            Vielleicht eine kleine Hilfestellung ???

            Kommentar


            • #7
              erstmal musst du deinen Datensatz ja eindeutig identifizieren, ich nehme mal an das machst du über VARx=... Am einfachsten wäre, du änderst das Format, damit du die Schlüssel direkt ansprechen kannst. Guck dir mal json_encode() an, das ist sehr einfach nutzbar. Ggf. ist das hier für dich aber leichter:

              http://php.net/manual/de/function.parse-ini-file.php
              [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

              Kommentar

              Lädt...
              X