php problem ^^

  • :D hallo mal wieder!

    ich hab ein kleines phpproblem: also, ich will eine art newsticker machen, bei dem man auf einer externen seite den text eingeben können soll... sieht so aus:

    index.php:

    HTML
    <html>
    <body>
    <?PHP
      include("text.txt");
    ?>
    </body>
    </html>

    admin.php:

    text.txt:

    Code


    (leer)

    ^^ helft mir bitte ^^ ich will aus diesem beispiel lernen, also nicht auf die gestaltung achten

    wehr schraipfehlehr finded, Dahf si Behalden!

  • Moin Symon!

    Wenn du innerhalb eines PHP-Sciptes ein Formular verwendest und mit Action die selbe PHP-Datei wieder aufrufst, dann muß das PHP-Script vor dem HTML-Script stehen, damit die Daten ausgelesen werden können.

    Ich habe dein Scirpt einmal umgebaut und gleich ein paar nette "Spielerein" hinzugefügt, schau es dir einmal an:

    Ein paar kleine Hinweise:
    mit

    Code
    fopen("text.txt","w");


    öffnest du die Textdatei zum Neubeschreiben und löscht gleichzeitig alle Inhalte. Das 'rewind'-Kommando ist damit hinfällig.
    Du kannst die Datei natürlich auch mit

    Code
    fopen("text.txt","w+");

    öffnen, das entspricht einer Kombination aus 'fopen' und "rewind', eben nur in einem Befehl anstatt zwei.

    Mit "fwrite" werden nur Binärdaten in eine Datei geschrieben. Das funktioniert auch nur, wenn die Datei auch binär geöffnet wurde:

    Code
    $neu = fopen("text.txt","wb");


    Im normalen Schreibmodus werden die Daten mit 'fputs' übergeben.

    Das Javascript löscht übrigens den Eintrag tatsächlich und macht nicht nur die aktuellen und noch nicht gespeicherten Änderungen rückgängig.

    Gruß aus der Marsch!

    Ronald

  • :wink: Danke, könntest du mir bitte noch, wenns nicht so viel ausmacht noch die einzelnen funktionen/befehle erklären? wär wirklich nett ^^

    wehr schraipfehlehr finded, Dahf si Behalden!

  • Ohje...

    zunächst einmal ist da noch eine kleine Unschönheit im Script: Die Textdatei wird immer 2x gespeichert, daß muß nicht sein.
    Hier die Änderung:

    Nun mal zur Erklärung, ich versuche es mal, aber nur die wichtigsten Punkte:

    Code
    $ET = ""


    Es wird ein Variable mit dem Namen "ET" erstellt und dieser der Wert 'Leerzeichen' zugewiesen. Dabei dient das Leerzeichen hier nur der Optik.

    Code
    while (list($name, $value) = each($HTTP_POST_VARS))


    Alle Eingabefelder des Formulars werden nacheinander ausgelesen, dabei der Name des Eingabefeldes und der eingegebene Wert in 2 Hilfsstrings eingelesen

    Code
    $$name = $value;


    Es wird eine Variable mit dem übergebenen Namen erzeugt und der übergeben Wert (Text) zugewiesen.

    Code
    if ($name != "NTtext") continue;


    Wenn der Name der zuletzt erstellten Variable nicht "NTtext" ist, wird die Schleife von vorne ausgeführt (die nächste Variable erstellt)

    Code
    $neu = fopen("text.txt","w");
          fputs($neu, $NTtext);
          fclose($neu);


    der eingegeben Text wird in die Datei "text.txt" geschrieben. Wurde nichts eingegeben, dann wird das der Inhlat der "text.txt" gelöscht

    Code
    $NTtext != "" ? $ET = "Text &quot;".stripcslashes(htmlspecialchars($NTtext))."&quot; wurde gespeichert!":$ET = "Text wurde gelöscht!";


    Wenn in der Variablen "NTText" etwas steht, dann wird der Variablen "ET" der erste Text zugewiesen, sonst der zweite. Gleichzeitig werden Schutzzeichen (Backslash) und verschieden Steuerzeichen entfern, bzw . in HTML-Code umgewandelt.

    Code
    echo $ET;


    Der Bestätigungstext wird geschrieben.

    So, der Rest erklärt sich hoffentlich von allein.

    Gruß aus der Marsch"

    Ronald