mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Sa 27.04.2024 15:06 Benutzername: Passwort: Auto-Login

Thema: array reverse, bitte um hilfe! vom 08.06.2010


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> array reverse, bitte um hilfe!
Seite: 1, 2  Weiter
Autor Nachricht
kramsen
Threadersteller

Dabei seit: 06.12.2008
Ort: im Anschnitt
Alter: -
Geschlecht: Männlich
Verfasst Di 08.06.2010 23:59
Titel

array reverse, bitte um hilfe!

Antworten mit Zitat Zum Seitenanfang

Abend,

Ich habe ein Anliegen, unzwar habe ich ein Inputfeld welches den eingegebenen Text nach "submit" in eine .txt schreibt. Per Include wird diese .txt auf der selben Seite wieder ausgegeben, sprich vergleichbar mit einem kleinen Gästebuch.

Nun möchte ich die .txt in ein Array lesen und dieses per array_reverse einmal komplett "umdrehen", also das der Text in der .txt dann umgekehrt ausgegeben wird und in meinem "Gästebuch" der neuste Text oben statt wie zurzeit unten steht.

Hier die Beispieldatei

Und hier der Quellcode:

Code:
<fieldset>
<?php

if ($_POST) {
 $text = $_POST["name"] . "\n";

 $file = "chat.txt";
 $fp = fOpen($file,"a+");
 fPuts($fp, $text . "<br>");
 fClose ($fp);
 echo "<h4>Dein Text wurde gesendet!</h4>";
}

foreach (file("chat.txt") as $zeile) {
 if (strpos($zeile, " = ")) {
  list($variable, $value) = explode(" = ", $zeile);
  $$variable = chop($value);
 }
}


echo <<<EOT
<form action="$_SERVER[SCRIPT_NAME]" method="post">
 <p> Text: <input type="text" name="name" value="$name"> </p>
 <p> <input type="submit" value="Senden"> </p>
 <p> <input type="reset" value=" Löschen"> </p>
</form>
EOT;
?>

</fieldset>

</center>

<center>
Chat:
<br />
<br />
<?php include("chat.txt"); ?>


Ich wäre sehr dankbar wenn jemand erfahrenes mir dort unter die Arme reifen könnte!
Ich wünsche einen wunderschönen Abend!
  View user's profile Private Nachricht senden
zweitaccount

Dabei seit: 25.01.2008
Ort: -
Alter: -
Geschlecht: -
Verfasst Mi 09.06.2010 07:42
Titel

Antworten mit Zitat Zum Seitenanfang

Moin, so praktisch?
Code:
<fieldset>
<?php

if ($_POST) {
 $text = $_POST["name"] . "\n";

 $file = "chat.txt";
 $fp = fOpen($file,"a+");
 fPuts($fp, $text);
 fClose ($fp);
 echo "<h4>Dein Text wurde gesendet!</h4>";
}

?>
<form action="<?=$_SERVER['SCRIPT_NAME']?>" method="post">
 <p> Text: <input type="text" name="name" value="<?=$name?>"> </p>
 <p> <input type="submit" value="Senden"> </p>
 <p> <input type="reset" value=" Löschen"> </p>
</form>

</fieldset>

Chat:
<br />
<br />
<?
   $chat = array_reverse(file("chat.txt"));
   foreach($chat as $line) echo nl2br($line);
?>


$_POST["name"] müsstest Du aber schon validieren,
momentan steht da Tür und Tor offen für Scriptkiddies.

Grüße
zweitaccount
  View user's profile Private Nachricht senden
Anzeige
Anzeige
Pixelpole

Dabei seit: 25.10.2004
Ort: Trier
Alter: 37
Geschlecht: Männlich
Verfasst Mi 09.06.2010 08:29
Titel

Antworten mit Zitat Zum Seitenanfang

scheinbar scheint wirklich niemand file_put_contents zu kennen *zwinker*
  View user's profile Private Nachricht senden
kramsen
Threadersteller

Dabei seit: 06.12.2008
Ort: im Anschnitt
Alter: -
Geschlecht: Männlich
Verfasst Mi 09.06.2010 08:48
Titel

Antworten mit Zitat Zum Seitenanfang

Zweitaccount du bist ein Schatz!

Funzt super und einwandfrei! Es kann ja sein das es völlig simpel ist deshalb frag ich mal nach; Habe ich die Möglichkeit irgendmöglich eine Variable für eine Textzeile die da oben eingegeben wird und in die txt "gewritet"wird (damit ich die dann in ein div container packen kann und stylen könnte usw.) anzugeben?

Mit dem validieren wäre mein nächster Schritt, mal schauen was ich so hinkrieg!

Ein großes Dankeschön an dieser Stelle!
  View user's profile Private Nachricht senden
zweitaccount

Dabei seit: 25.01.2008
Ort: -
Alter: -
Geschlecht: -
Verfasst Mi 09.06.2010 12:46
Titel

Antworten mit Zitat Zum Seitenanfang

Hi, eine Variable quasi ins textfile mit rein. Öhm ja, dazu müsstes
du die Zeilen so zusammenstückeln, das sie wieder trennbar sind...

ganz rudimentär ungefähr so:
Code:
<?php

$chatfile  = file_get_contents("chat.txt"); // recht hat er, der Pixelpole ;)
$text       = '';
$minlength = 5; // minimale länge
$maxlength = 1000; // maximale länge
$variable  = date('d.m.Y H:i:s'); // deine variable
$delimiter = '#####'; // trennstring

if (isset($_POST['text']) && strlen($_POST['text']) >= $minlength) {
   // auf max zeichen beschränken und ein bisserl aufräumen
   $text = substr(stripcslashes(htmlentities($_POST["text"])),0,$maxlength) . "\n";
   // falls jemand ##### eingibt -> löschen
   $text = str_replace($delimiter,'',$text);
    // output zambasteln
   $output = $variable.$delimiter.$text.$chatfile;
   // ins file schreiben
   file_put_contents("chat.txt", $output);
    echo "<h4>Dein Text wurde gesendet!</h4>";
}

?>
<form action="<?=$_SERVER['SCRIPT_NAME']?>" method="post">
 <p>Text: <input type="text" name="text" value=""> </p>
 <p><input type="submit" value="Senden"> </p>
 <p><input type="reset" value="Löschen"> </p>
</form>
</fieldset>

Chat:
<br />
<br />
<?
   // neuen eintrag ausgeben
   if ($text) echo $text.' ('.$variable.')<hr />';
   // chat.txt ausgeben
   $chatlines = explode("\n",$chatfile);
   foreach($chatlines as $line) {
      // variable vom value trennen
      // $parts[0] == variable
      // $parts[1] == text
      $parts = explode($delimiter,$line);
      // unvollständige + leere überspringen
      if(count($parts) < 2 || strlen($parts[1]) == 0) continue;
      // text value ausgeben.
      echo $parts[1];
       // variable ausgeben.
      echo ' ('.$parts[0].') ';
      echo '<hr />';
   }
?>


...falls ich das jetzt überhaupt richtig verstanden hab Ooops
  View user's profile Private Nachricht senden
kramsen
Threadersteller

Dabei seit: 06.12.2008
Ort: im Anschnitt
Alter: -
Geschlecht: Männlich
Verfasst Mi 09.06.2010 13:52
Titel

Antworten mit Zitat Zum Seitenanfang

*Huch* Ja genau Zweitaccount das geht in die meine Richtung! Grins
Die Trennstriche sind schon gut, ich möchte aber das ein Beitrag immer andersfarbig hinterlegt ist, also hellgrau-grau-hellgrau-grau usw. (Werd ich mal versuchen das umzuschnipseln irgendwie. Nun möchte ich das Input noch validieren um HTML-Eingabe zu vermeiden. Gibt es zum Thema Validation nützliche Links? Ich mach mich jetzt selbst mal auf die Suche...

edit: tres bien, habe den Wert htmlspecialchars gefunden und erfolgreich angewendet. Grins


Zuletzt bearbeitet von kramsen am Mi 09.06.2010 13:59, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden
zweitaccount

Dabei seit: 25.01.2008
Ort: -
Alter: -
Geschlecht: -
Verfasst Mi 09.06.2010 14:47
Titel

Antworten mit Zitat Zum Seitenanfang

Es gibt übrigens auch strip_tags, das greift i.d.R. auch ganz gut.
Den Hintegrundfarbewechsel, könntest Du z.B. so lösen:

Code:
Chat:
<br />
<br />
<?
   // neuen eintrag ausgeben
   if ($text) {
      echo '<div style="background-color:yellow">';
      echo $text.' ('.$variable.')';
      echo '</div>';
   }
   // chat.txt ausgeben
   $chatlines = explode("\n",$chatfile);
   // Für Farbige Hinterlegung
   $evenodd = 0;
   foreach($chatlines as $line) {
      // variable vom value trennen
      // $parts[0] == variable
      // $parts[1] == text
      $parts = explode($delimiter,$line);
      // unvollständige + leere überspringen
      if(count($parts) < 2 || strlen($parts[1]) == 0) continue;
      // Hintergrundfarbe toggeln
      $evenodd++;
      $color = ($evenodd % 2) ? 'pink' : 'yellow';
      echo '<div style="background-color:'.$color.'">';
      // text value ausgeben.
      echo $parts[1];
       // variable ausgeben.
      echo ' ('.$parts[0].') ';
      echo '</div>';
   }
?>


Lächel
  View user's profile Private Nachricht senden
kramsen
Threadersteller

Dabei seit: 06.12.2008
Ort: im Anschnitt
Alter: -
Geschlecht: Männlich
Verfasst Mi 09.06.2010 15:22
Titel

Antworten mit Zitat Zum Seitenanfang

Okayy ich kann dir nur tausend mal danken, jetzt hab ichs soweit wieich s haben wollte..

Nur irgendwo haben sich zwei klammern drin verkrochen, kann vlt mal jemand nachsehen? * Keine Ahnung... *

http://rapvid.bplaced.net/Chat/Test.php
Code:


<body>
<fieldset>
<?php

$chatfile  = file_get_contents("chat.txt");
$text       = '';
$minlength = 5;
$maxlength = 70;
$delimiter = '#####';

if (isset($_POST['text']) && strlen($_POST['text']) >= $minlength) {
   $text = substr(stripcslashes(htmlentities($_POST["text"])),0,$maxlength) . "\n";
   $text = str_replace($delimiter,'',$text);
   $output = $delimiter.$text.$chatfile;
   file_put_contents("chat.txt", $output);
}

?>
<form action="<?=$_SERVER['SCRIPT_NAME']?>" method="post">
 <p><input type="text" name="text" class="text01" maxlength="50" value="<?=$name?>"> </p>
 <div id="navigation">
        <table>
           <tr>
            <td>
                  <p> <input type="submit" class="button" value="Senden"> </p>
            </td>
            <td>
                  <p> <input type="reset" class="button2" value="Löschen"> </p>
            </td>
          </tr>
       </table>
</div>
</form>
<div id="text02">
<?
   if ($text) {
      echo '<div style="background-color:#CCCCCC;">';
      echo $text;
      echo '</div>';
   }
   $chatlines = explode("\n",$chatfile);
   $evenodd = 0;
   foreach($chatlines as $line) {
      $parts = explode($delimiter,$line);
      if(count($parts) < 2 || strlen($parts[1]) == 0) continue;
      $evenodd++;
      $color = ($evenodd % 2) ? '#DEDEDE' : '#CCCCCC';
      echo '<div style="background-color:'.$color.'">';
      echo $parts[1];
      echo ' ('.$parts[0].') ';
      echo '</div>';
   }
?></div>
</fieldset>
</body>
</html>


Zuletzt bearbeitet von kramsen am Mi 09.06.2010 15:23, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden
 
Ähnliche Themen Fieses PHP/MySQL-Skript gibt nur "Array Array Array..." aus
Einstiegsproblem mit Nominatim-API f. Reverse Geocoding
if Problem mit array
Array verkürzen ?
[PHP] INSERT INTO ein Array
[PHP] Array-Problem...
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.