Klausi: array_reverse funzt nicht

Hi Leute,

habe mal wieder ein Prob.
Warum funzt mein array_reverse nicht?

Ich weiss einfach nicht warum.
Hier mal der Code.
Danke im Vorraus:

<?php
include 'inc\config.inc';
if ($action == "senden")
{
$datei = fopen ($file, "a+");
$eintrag = $name."|".$email."|".$kommentar."|";
$eintrag = str_replace (array ("\r\n", "\r", "\n"), array ("<br>", "<br>", "<br>"), $eintrag);
list ($name, $email, $kommentar) = array($eintrag);
fwrite ($datei, $eintrag."\r\n");
fclose ($datei);
echo $danke;
}
else
{
include 'formular.php';
foreach (file($file) as $array)
 {
$inhalt = explode('|', $array);

//hier ist die Stelle

array_reverse($inhalt);
include 'gaestebuch.php';
 }
}
$zeilen = count(file($file));
?>

  1. Hallo Klausi,

    $eintrag = $name."|".$email."|".$kommentar."|";

    du weißt, dass das bei register_globals=off nicht funktioniert? Dann musst du $_POST['name'] usw. verwenden.

    list ($name, $email, $kommentar) = array($eintrag);

    für was ist die Zeile gut?

    foreach (file($file) as $array)
    {  
    $inhalt = explode('|', $array);

    so dürftest du nur den jeweils letzen Eintrag der in deiner Datei steht bekommen (du hast in $inhalt immer ein Array mit 4 Elementen: name,email,kommentar und einem Zeilenumbruch)

    array_reverse($inhalt);

    array_reverse ändert nicht das übergebene Array, sondern liefert das geänderte Array zurück (siehe http://de3.php.net/array-reverse)

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    1. Hey Tobias,

      erst mal Danke für deine Hilfe. Doch ich bin Anfänger in php,
      und kämpfe mich Funktion für Funktion durch mein Script.
      Es wäre ein leichtest ein Gästebuch in php zu downloaden, doch ich will selber eins schreiben.

      So nun das was ich sagen wolllte...
      Kannst du mir das eventuel genauer erklären. Was mache ich bei mir falsch.
      Ich sehe das Formular. Ich kann mich einschreiben. Er speichert die Daten. Er gibt die Daten aus. Er dreht Sie aber nicht.
      Toll.

      Ok bis dann...hoffe ich Klausi»»

      1. hi,

        Kannst du mir das eventuel genauer erklären. Was mache ich bei mir falsch.
        Ich sehe das Formular. Ich kann mich einschreiben. Er speichert die Daten. Er gibt die Daten aus. Er dreht Sie aber nicht.

        was genau verstehst du denn an

        array_reverse ändert nicht das übergebene Array, sondern liefert das geänderte Array zurück

        nicht?

        gruss,
        wahsaga

        1. Hi wahsaga,

          also ich versteh das schon, doch bei mir dreht der nicht die Einträge
          sondern immer nur die vom Benutzer eingegeben Daten.

          Hier noch mal der Code:

          -----index.php

          <?php
          include 'inc\config.inc';
          if ($action == "senden")
          {
          $datei = fopen ($file, "a+");
          $eintrag = $name."|".$email."|".$kommentar."|";
          $eintrag = str_replace (array ("\r\n", "\r", "\n"), array ("<br>", "<br>", "<br>"), $eintrag);
          fwrite ($datei, $eintrag."\r\n");
          fclose ($datei);
          echo $danke;
          }
          else
          {
          include 'formular.php';
          foreach (file($file) as $array)
           {
          $inhalt = explode('|', $array);
          $drehen = array_reverse ($inhalt);
          include 'gaestebuch.php';
           }
          }
          $zeilen = count(file($file));
          ?>

          ---------------config.inc

          <?php
          $file = "eintraege.dat";
          $maxeintraege = 10 ;
          $danke = "Vielen Dank für Ihren Eintrag.<br>
              <a href="index.php">Hier</a> können Sie Ihren Eintrag im Gästebuch lesen.";
          ?>

          ---------formular.php

          <?php
          echo "<html><head><form action="index.php" method="get">
          <table width="520" cellspacing="2" cellpadding="2">
            <tr>
              <td valign="top"> </td>
              <td>Alle Felder die mit einem kleinen * gekennzeichnet sind<br>
                bitte auszufüllen.<br>
              </td>
            </tr>
            <tr>
              <td width="120" valign="top">Name: *</td>
              <td width="395"><input name="name" type="text" id="name" size="35" maxlength="15"></td>
            </tr>
            <tr>
              <td valign="top">E-Mail: *</td>
              <td><input name="email" type="text" id="email" size="35" maxlength="40"></td>
            </tr>
            <tr>
              <td height="24" valign="top">Titel: *</td>
              <td><input name="titel" type="text" id="titel" size="35" maxlength="35"></td>
            </tr>
            <tr>
              <td valign="top">Homepage:</td>
              <td><input name="www" type="text" id="www" size="35"></td>
            </tr>
            <tr>
              <td valign="top">Dein Eintrag: *<br>
                ".$html." </td>
              <td><textarea name="kommentar" cols="60" rows="10" id="kommentar"></textarea></td>
            </tr>
            <tr>
              <td> </td>
              <td><br> <input type="hidden" name="action" value="senden">
              <input type="submit" name="Submit" value="eintragen"></td>
            </tr>
          </table>
          </form></body></html>";
          ?>

          ---------gaestebuch.php

          <?php
          echo "<html>
          <body>";
          echo "
          <table width="300" cellspacing="0" cellpadding="0" border=\1" bordercolor="#000000">
            <tr>
              <td>name:</td>
              <td>".$drehen[2]."</td>
            </tr>
            <tr>
              <td>email:</td>
              <td>".$drehen[1]."</td>
            </tr>
            <tr>
              <td>kommentar:</td>
              <td>".$drehen[0]."</td>
            </tr>
          </table></br>";
          echo "</body>
          </html>";
          ?>

          1. Hallo Klausi,

            also ich versteh das schon, doch bei mir dreht der nicht die Einträge
            sondern immer nur die vom Benutzer eingegeben Daten.

            logisch - mehr steh ja in dem Array $inhalt auch nicht drin...

            include 'formular.php';
            foreach (file($file) as $array)
             {
            $inhalt = explode('|', $array);

            so überschreibst du bei jedem Durchlauf von foreach den Inhalt von $inhalt (was ich dir ja schon geschreiben habe) - wenn du ein zweidimensionales Array haben möchtest (ich nehme doch mal an, du möchtest alle Daten haben, oder?), dann schreib
            $inhalt[] = explode...
            dann bekommst du ein Array, das etwa so aussieht:
            Array(
                [0] => Array(
                        [0] => name1
                        [1] => email1
                        [2] => kommentar1
                        [3] => <zeilenumbruch>
                    )
                [1] => Array(
                        [0] => name2
                        [1] => email2
                        [2] => kommentar2
                        [3] => <zeilenumbruch>
                    )
            [usw]
            )
            (wobei <zeilenumbruch> für den Zeilenumbruch den du mit in die Datei geschreiben hast, steht.) Dieses Array musst du dann umdrehen und ausgeben.

            echo "<html><head><form action="index.php" method="get">
            [...]
            </form></body></html>";

            für was soll den der Unsinn gut sein? Warum machst du extra einen php-Bereich auf, nur um ganz einfaches html auszugeben?

            echo "

            <table width="300" cellspacing="0" cellpadding="0" border=\1" bordercolor="#000000">
              <tr>
                <td>name:</td>
                <td>".$drehen[2]."</td>

            wenn du natürlich alle Daten haben willst, brauchst du natürlich eine Schleife, die dir den Array $inhalt (bzw den gedrehten $drehen) ausgibt (z.B. foreach ->http://de2.php.net/control-structures.foreach)

            Grüße aus Nürnberg
            Tobias

            --
            Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|