zeilen mit bestimmten inhalt überschreiben

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

  • zeilen mit bestimmten inhalt überschreiben

    hallo,

    ich habe ein anmeldeformular erstellt in welchem man seinen namen und bemerkungen(zum beispiel anreise etc.) eingeben kann


    diese daten werden dann in eine datei geschrieben
    wenn sich jetzt änderungen bei den bemerkungen ergeben, soll die zeile mit dem entsprechenden namen mit den neuen eingaben überschrieben werden

    also die zeilen sollen eingelesen werden und mit den aktuellen eingaben verglichen werden, wenn übereinstimmung eines names gefunden wird soll diese zeilen aktualisiert werden


    so sieht mein skript zur zeit aus

    PHP-Code:
    <?php

    $datei 
    fopen("treffen.htm","a+");

    // $name = Anmeldungsname
    // $bemerkungen = Infos zu Anreise oder Übernachtung
    fwrite($datei"$name - $bemerkungen<br>\n");

    fclose($datei);


    $datei fopen("treffen.htm","r");

    while (!
    feof($datei)) 
        {
                    
    $zeile fgets($datei,1000);    
            echo  
    $zeile;
        }
    fclose($datei);


    ?>

    vielen dank für die hilfe


    foxy

  • #2
    Anscheinend hast du das Prinzip von PHP noch nicht richtig verstanden. Anstatt die Datei zu bearbeiten, machst du in der Datei treffen.htm Platzhaltervariablen, wo der Name und die Bemerkungen ausgegeben werden:
    PHP-Code:
    <html>
    ...
    <b>Name</b>: <?php echo $name;  ?><br />
    <b>Bemerkungen:</b> <?php echo $bemerkungen?><br />
    </html>
    Jetzt musst du die Datei nur noch mit folgenden PHP Script aufrufen:
    PHP-Code:
    <?php
    $name 
    'Name des Nutzers';
    $bemerkungen 'bla blas';
    include(
    'treffen.htm');
    ?>
    Willst du jedoch wirklich statische Seiten erstellen, kannst du das nach dem gleichen Prinzip machen. Du hast dein Treffentemplate und speicherst es dann:
    PHP-Code:
     <?php
    $name 
    'Name des Nutzers';
    $bemerkungen 'bla blas';

    ob_start();
    include(
    './tpl/treffen.htm');
    $ausgabe ob_get_contents();
    ob_end_clean();

    $fp fopen('treffen.htm''w');
    fputs($fp$ausgabe);
    fclose($fp);
    ?>

    Kommentar


    • #3
      Re: zeilen mit bestimmten inhalt überschreiben

      Original geschrieben von foxy_hdk
      also die zeilen sollen eingelesen werden und mit den aktuellen eingaben verglichen werden, wenn übereinstimmung eines names gefunden wird soll diese zeilen aktualisiert werden
      Gut beschrieben und simpel lösbar
      mit file() in array lesen, zu änderndes array Element suchen und korrigieren und am Schluß array mit implode ("\n", $a) in einen String umwandeln und mit fopen-fwrite-fclose wieder schreiben.

      Kommentar


      • #4
        das sind meine ersten gehversuche mit php, und ich
        kann eure hilfe leider nicht nachvollziehen

        aber trotzdem vielen dank


        foxy

        Kommentar


        • #5
          Du willst doch Templates machen oder?
          [color=blue]MfG Payne_of_Death[/color]

          [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
          [color=red]Merke:[/color]
          [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

          Murphy`s Importanst LAWS
          Jede Lösung bringt nur neue Probleme
          Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
          In jedem kleinen Problem steckt ein großes, das gern raus moechte.

          Kommentar


          • #6
            ich habe ein formular

            mit eingabemöglichkeit des namens mittels eines textfeldes und
            eingabemöglichkeit von bemerkungen mittels eines textareas

            diese eingaben werden in einer datei gespeichert

            wenn sich jetzt bei der jeweiligen person bestimmte daten ändern bei den bemerkungen, also zum beispiel reist er jetzt mit dem zug an anstatt mit dem auto, dann soll der alte eintrag wieder überschrieben werden

            also muss der name in der datei gesucht werden, und die zeile entsprechend mit den aktuellen werten überschrieben werden


            um dann eine übersicht zu erhalten wer sich alles angemeldet hat wird die datei wieder ausgegeben




            aber es ist wohl komplizierter als ich gedacht habe


            foxy

            Kommentar


            • #7
              Wie ich bereits versucht habe deutlich zu machen, geht es bei der dynamsichen Programmierung von PHP nicht darum statische Seiten zu ändern, sondern eine Darstellungsvorlage mit Daten einer Datenbank / Textdatei / etc. zu verbinden.

              Wenn du jetzt eine Seite hast, die einem Benutzer ermöglicht anhand seines Namens einen Eintrag zu erstellen, so ist es nicht der Sinn der dynamsichen Programmierung für jeden Eintrag eines Nutzers eine eigene Datei zu erstellen. Vielmehr werden die Daten aus einer Datenquelle geholt und jeweils angezeigt.

              Du speicherst also nicht jedes Mal die komplette Seite, sondern nur die eingegebenen Daten und zeigst sie wie oben schon beschrieben an.

              Kommentar


              • #8
                @foxy_hdk:

                Was du willst, lässt sich über Dateien schwer realisieren, Datenbank ist einfacher, aber wir machen das jetzt mal per Datei (DB ist ein bisschen fortgeschrittener):


                Also, immer wenn du ein neuen Eintrag in die Datei schreibst, musst du das in einem bestimmten Muster tun, mit einem Trenner zwischen den einzelnden Spalten der Einträge und einem Trenner zwischen den Einträgen.

                Als Trenner zwischen den Spalten eines Eintrags kannst du einen beliebigen nehmen, welcher aber eigentlich nicht im Eintrag vorkommen dürfte (wenn du "-" als Trenner nimmst, dannn ist das Risiko da, dass im Eintrag auch ein "-" drin ist, also weißt du nicht mehr, was Eintrag ist und was nicht. Ich würde vorschlagen, dass du ein Fantasiezeichen (z.B. "{-.-}" ) nimmst, und wenn dieses Zeichen im Eintrag vorkommt (was unwahrscheinlich ist, nur könnte jemand versuchen dein Script zu zerstören), dann wandelst du die Zeichen um.

                Als Trenner zwischen den Einträgen würd ich auch ein bestimmtes Zeichen nehmen, am besten ist da ein \n, damit man auch mit einem normalen Texteditor in der Datei surfen kann. Du musst also alle \n wieder entfernen, oder \n in <br /> umwandeln.

                Nun, wenn du 2 Spalten für jeden Eintrag hast ("Titel" und "Text"), dann würde das ganze so aussehen:

                Titel {-.-} Text<br><br>\n
                Titel von Eintrag 2 {-.-} Text von Eintrag 2\n

                Nun, das Speichern solltest du alleine hinbekommen, fopen, fputs, fclose.

                Beim Auslesen musst du nun einfach die Dateien "auftrennen", und in einem Array speichern.

                Zuerst aber müssen wir den Inhalt lesen, am einfachsten ist es mit file_get_contents(), der Speichert den ganzen Inhalt in einer Variable.

                Nun, müssen wir erst einmal die einzelnden Einträge unterscheiden, das machen wir, indem wir die ganze Variable auftrennen, wobei wir immer nach einem bestimmten Zeichensatz suchen (bei uns \n). Das ganze geht mit explode("\n", $file_content); Nun machen wir eine Schleife mit foreach($array as $var). In dieser Schleife, ist nun in $var das folgende Definiert:

                In dem ersten Durchlauf: Titel {-.-} Text<br><br>
                Im 2.: Titel von Eintrag 2 {-.-} Text von Eintrag 2

                Nun, dass müssen wir auch wieder auftrennen mit explode() und wieder in eine Schleife lesen, oder auch per Hand machen, damit man das ganze besser darstellen kann ('Titel: '.$var2[0].'<br />Text: '.$var2[1]').

                Nun hast du alles schön ordentlich aufgelistet und formatiert, nun wolltest du ja nach einem bestimmten Eintrag suchen, einfach nach dem 2. explode prüfen, ob der Inhalt von $var2[0] (Titel des Eintrags) dem Suchwort entspricht. Und dann nach dem oben gennanten Prinzip austauschen..


                Floriam
                PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

                Kommentar

                Lädt...
                X