Ergebnis 1 bis 5 von 5

Thema: php problem ^^

  1. #1
    Teeny
    Registriert seit
    09.06.2004
    Ort
    na hier ^^
    Beiträge
    26
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard php problem ^^

    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:
    Code:
    <html>
    <body>
    <?PHP
      include&#40;"text.txt"&#41;;
    ?>
    </body>
    </html>
    admin.php:
    Code:
    <?
      if&#40;$NTtext == ""&#41;
        &#123;
        ?><html><body>
    <FORM method="post" action="admin.php" name="NTposter">
    <P align="center">Text&#58;
    
    
    <INPUT type="text" name="NTtext" maxlength="200" size="33">
    
    <INPUT type="submit" name="weiter" value="Weiter"><INPUT type="reset" name="reset" value="Löschen"></P>
    </FORM></body></html>
    
    <?
      &#125;
      else&#123;
      $datei = fopen&#40;"text.txt","w+"&#41;;
      rewind&#40;$datei&#41;;
      fwrite&#40;$datei, $NTtext&#41;;
      fclose&#40;$datei&#41;;
      ?>
      Text wurde eingetragen!<?
      &#125;
    ?>
    text.txt:
    (leer)

    ^^ helft mir bitte ^^ ich will aus diesem beispiel lernen, also nicht auf die gestaltung achten
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    wehr schraipfehlehr finded, Dahf si Behalden!

  2. #2
    Forum Guru
    Registriert seit
    14.06.2004
    Ort
    Schleswig-Holstein
    Beiträge
    5.439
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    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:
    Code:
    <?
    $ET = "";
    while &#40;list&#40;$name, $value&#41; = each&#40;$HTTP_POST_VARS&#41;&#41;            // hier wird das Formular ausgelesen
          &#123;
          $$name = $value;
          $neu = fopen&#40;"text.txt","w"&#41;;
          fputs&#40;$neu, $NTtext&#41;;
          fclose&#40;$neu&#41;;
          $NTtext != "" ? $ET = "Text &quot;".stripcslashes&#40;htmlspecialchars&#40;$NTtext&#41;&#41;."&quot; wurde gespeichert!"&#58;$ET = "Text wurde gelöscht!";
          &#125;
          echo $ET;
          $datei = file&#40;"text.txt"&#41;;
          ?>
    
    <html>
    <script type="text/javascript" language="JavaScript">
    <!--
      function loeschen&#40;&#41;
        &#123;
        document.NTposter.NTtext.value = "";
        NTposter.submit&#40;&#41;;
        &#125;
    //-->
    </script>
    <body onLoad="document.NTposter.NTtext.focus&#40;&#41;">
    <FORM method="post" action="admin.php" name="NTposter">
    <P align="center">Text&#58;
    <INPUT type="text" name="NTtext" maxlength="200" size="33" value="<?echo stripcslashes&#40;htmlspecialchars&#40;$datei&#91;0&#93;&#41;&#41;;?>" onFocus="select&#40;&#41;">
    
    <INPUT type="submit" name="speichern" value="Speichern"><INPUT type="reset" name="reset" value="Löschen" onClick="loeschen&#40;&#41;">
    </FORM>
    </body>
    </html>
    Ein paar kleine Hinweise:
    mit
    Code:
    fopen&#40;"text.txt","w"&#41;;
    ö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&#40;"text.txt","w+"&#41;;
    ö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&#40;"text.txt","wb"&#41;;
    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

  3. #3
    Teeny
    Themenstarter

    Registriert seit
    09.06.2004
    Ort
    na hier ^^
    Beiträge
    26
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    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!

  4. #4
    Forum Guru
    Registriert seit
    14.06.2004
    Ort
    Schleswig-Holstein
    Beiträge
    5.439
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    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:
    Code:
    <?
    $ET = "";
    while &#40;list&#40;$name, $value&#41; = each&#40;$HTTP_POST_VARS&#41;&#41;            // hier wird das Formular ausgelesen
          &#123;
          $$name = $value;
          if &#40;$name != "NTtext"&#41; continue;
          $neu = fopen&#40;"text.txt","w"&#41;;
          fputs&#40;$neu, $NTtext&#41;;
          fclose&#40;$neu&#41;;
          $NTtext != "" ? $ET = "Text &quot;".stripcslashes&#40;htmlspecialchars&#40;$NTtext&#41;&#41;."&quot; wurde gespeichert!"&#58;$ET = "Text wurde gelöscht!";
          &#125;
          echo $ET;
          $datei = file&#40;"text.txt"&#41;;
          ?>
    
    <html>
    <script type="text/javascript" language="JavaScript">
    <!--
      function loeschen&#40;&#41;
        &#123;
        document.NTposter.NTtext.value = "";
        NTposter.submit&#40;&#41;;
        &#125;
    //-->
    </script>
    <body onLoad="document.NTposter.NTtext.focus&#40;&#41;">
    <FORM method="post" action="admin.php" name="NTposter">
    <P align="center">Text&#58;
    <INPUT type="text" name="NTtext" maxlength="200" size="33" value="<?echo stripcslashes&#40;htmlspecialchars&#40;$datei&#91;0&#93;&#41;&#41;;?>" onFocus="select&#40;&#41;">
    
    <INPUT type="submit" name="speichern" value="Speichern"><INPUT type="reset" name="reset" value="Löschen" onClick="loeschen&#40;&#41;">
    </FORM>
    </body>
    </html>
    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 &#40;list&#40;$name, $value&#41; = each&#40;$HTTP_POST_VARS&#41;&#41;
    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 &#40;$name != "NTtext"&#41; 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&#40;"text.txt","w"&#41;;
          fputs&#40;$neu, $NTtext&#41;;
          fclose&#40;$neu&#41;;
    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&#40;htmlspecialchars&#40;$NTtext&#41;&#41;."&quot; wurde gespeichert!"&#58;$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

  5. #5
    Teeny
    Themenstarter

    Registriert seit
    09.06.2004
    Ort
    na hier ^^
    Beiträge
    26
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    vielen dank ^^ hat mir sehr geholfen
    wehr schraipfehlehr finded, Dahf si Behalden!

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •