ilch Forum » Allgemein » HTML, PHP, SQL,... » Allgemeine PHP Frage.

Geschlossen
  1. #1
    User Pic
    weeh gelöschter User
    Hallo.
    Ich bin gerade dabei PHP zu lernen. Und da du ja ein PHP-Pro bist, wollte ich fragen:

    [code:1:b3a1fd03c8]
    if ($gesendet)
    {
    $fp = fopen("data.txt", "a");
    if ($fp)
    {
    flock($fp,2);
    fputs ($fp, "$name, $datum, $ort");
    echo ("Datei wurde beschrieben.");
    flock($fp, 3);
    fclose($fp);
    }
    exit();
    }
    [/code:1:b3a1fd03c8]

    Ich habe eine Textdatei erstellen lassen, die immer am Ende geöffnet wird und dann von einem Formular die Sachen einträgt. Doch wie kann ich es realisieren dass nach jeder Eintragung ein Zeilenumbruch in der txt Datei gemacht wird?
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    weeh gelöschter User
    Also ich hab das geschafft. mit n.

    Aber ich hab noch ein Problem und zwar hab ich vor ein Veranstaltungskalender zu scripten.
    Einer bei dem zwar alle Veranstaltungen gespeichert werden, auf einer Seite immer nur die neuesten 3 stk. und auf einer anderen alle ausgegeben werden.

    hier mein bisheriger code:

    [code:1:fa862cba7c]
    $fp = fopen("data.txt", "r"); //öffnet die datei
    if ($fp)
    {
    $zeile = fgets($fp, 100);
    echo &quot;$zeile&quot;, &quot;<br>&quot;; //gibt 1. Zeile aus
    $zeile2 = fgets&#40;$fp, 100&#41;;
    echo &quot;$zeile2&quot;; //gibt 2. aus
    [/code:1:fa862cba7c]

    (in der der data.txt steht immer:
    NAME, DATUM, ORT
    NAME2, DATUM2, ORT")

    Doch ich hab nun einige Probleme:
    Ich hab zwar 2 Zeilen in Variablen gespeichert, doch die data.txt wird ja immer länger und wie mache ich das immer die neusten Veranstaltungen, in dem Fall die letzen 3 Zeilen ausgegeben werden.
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    gelöschter User
    Ich würde das mit der funktion file() machen. Diese Funktion läd eine Datei komplett in ein Array (Feld) wobei in jedam Element eine Zeile steht.
    Das würde dann ungefähr so aussehen:

    [code:1:727e9136b7]
    $allezeilen = file&#40;'data.txt'&#41;; // liest alle Zeilen aus der Datei in das Array $allezeilen

    //die ersten 3 Zeilen ausgeben mit einer for-Schleife
    for&#40;$i = 0; $i < 3; $i++&#41;
    &#123;
    echo $allezeilen&#91;$i&#93;;
    &#125;

    //Um alle Zeilen auszugeben gibt es mehrere Möglichkeiten

    // 1. mit for-Schleife

    $anzahlzeilen = count&#40;$allezeilen&#41;; // zählen wie viele Zeilen in der Datei waren
    for&#40;$i = 0; $i < $anzahlzeilen; $i++&#41;
    &#123;
    echo $allezeilen&#91;$i&#93;;
    &#125;

    // 2. mit foreach-Schleife

    foreach&#40;$allezeilen as $zeile&#41;
    &#123;
    echo $zeile;
    &#125;
    [/code:1:727e9136b7]

    Das ganze geht aber auch mit fgets und einer while-Schleife:

    [code:1:727e9136b7]
    // Alle Zeilen ausgeben

    $fp = fopen&#40;&quot;data.txt&quot;, &quot;r&quot;&#41;; //öffnet die datei
    if &#40;$fp&#41;
    &#123;
    while &#40;!feof&#40;$fp&#41;&#41; &#123; //solange das Dateiende nicht erreicht ist
    $neuezeile = fgets&#40;$fp&#41;;
    echo $neuezeile;
    &#125;

    [/code:1:727e9136b7]
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    weeh gelöschter User
    Danke, damit hat es geklappt!!!
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    gelöschter User
    Gut - welche Version hast du genommen?
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    weeh gelöschter User
    Ich habs mit file() gemacht. Doch ich hab noch ein Problem:)
    Und zwar kann ich jetzt Sachen eintragen, doch ich bräuchte noch die Funktion zum bearbeiten und zum löschen.
    Zuerst hab ichs mir so gedacht:

    [code:1:a1ee240b0d]

    if &#40;$gesendet&#41;
    &#123;
    $datei = $file&#40;data.txt&#41;;
    $neu = &quot;$name, $ort &#40;$datum, $uhrzeit Uhr&#41; n&quot;
    array_pop&#40;$datei&#41;;
    $ausgabe = array_push&#40;$datei, &quot;$neu&quot;&#41;;
    $fp = fopen&#40;&quot;data.txt&quot;, &quot;a&quot;&#41;;
    fputs &#40;$fp, &quot;$ausgabe&quot;&#41;;
    fclose&#40;$fp&#41;;
    exit&#40;&#41;;
    &#125;

    ?>

    <html>
    <head>
    <title>
    Smad Media GmbH - Veranstaltungen
    </title>
    </head>
    <body>
    <font face=&quot;Verdana&quot; size=&quot;2&quot;>
    <form action=&quot;<? PHP_SELF ?>&quot; method=&quot;post&quot;>
    <table border=&quot;0&quot;>
    <tr>
    <td>
    Name der Veranstaltung&#58;
    </td>
    <td>
    <input size=&quot;20&quot; maxlength=&quot;30&quot; name=&quot;name&quot;><br>
    </td>
    </tr>
    <tr>
    <td>
    Datum der Veranstaltung&#58;
    </td>
    <td>
    <input size=&quot;20&quot; maxlength=&quot;10&quot; name=&quot;datum&quot;>
    </td>
    </tr>
    <tr>
    <td>
    Uhrzeit der Veranstaltung&#58;
    </td>
    <td>
    <input size=&quot;20&quot; maxlength=&quot;5&quot; name=&quot;uhrzeit&quot;>
    </td>
    </tr>
    <tr>
    <td>
    Ort der Veranstaltung&#58;
    </td>
    <td>
    <input size=&quot;20&quot; maxlength=&quot;30&quot; name=&quot;ort&quot;>
    </td>
    </tr>
    </table>
    <br>
    <input type=&quot;submit&quot; value=&quot;Senden&quot; name=&quot;gesendet&quot;>
    </form>
    </font>
    </body>
    </html>

    [/code:1:a1ee240b0d]
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    weeh gelöschter User
    [Anhang]
    ...doch es kommt immer ein Parse Error, jetzt weiß ich nicht kommt der weil ich irgendein Zeichen vergessen habe, oder weil es so, wie ich will, gar net gehen kann.
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    gelöschter User
    Der Parse Error kommt wahrscheinlich weil du in der Zeile

    $neu = "$name, $ort ($datum, $uhrzeit Uhr) n"[b:13b3febf16];[/b:13b3febf16]

    das Semikolon vergessen hast.
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    weeh gelöschter User
    Oh^^ stimmt. Doch jetzt kann ich zwar die Seite angucken und auch was eintragen doch beim versenden kommt folgender Error:

    Fatal error: Call to undefined function: () in /srv/www/htdocs/web244/html/bearbeiten.php on line 5

    Hast du vielleicht eine andere Idee, wie man das "Bearbeiten" lösen kann?
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    gelöschter User
    Zu dem Fehler das könnte kommen wenn du ein $ vor den Funktionsnamen schreibst. PHP versucht dann die Funktion mit dem Namen des Wertes der Variablen aufzurufen.

    Das Bearbeiten würde ich so machen, dass du erstmal eine Liste aller Zeilen ausliest und jede Zeile mit einem "editieren" Link versiehst. Der Link sollte die Zeilennummer enthalten also etwa so: bearbeiten.php?zeile=123
    In der bearbeiten.php liest du mit der file() Funktion wieder alle Zeilen in einen Array und zeigst anschliessend die Zeile in einem Textfeld bzw. Textarea an ( echo $allezeilen[123] ). Zum speichern wird die geänderte Zeile im Array überschriebn und das ganze Array wieder in die Datei zurückgeschrieben.
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten