For schleife Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • For schleife Problem

    Hallo..
    Also, ich habe das mal mit ner for-schleife ausprobiert. Aber irgendwas mache ich falsch, leider aber weiss ich nicht was.

    Hier mal der Code zum Lesen:


    PHP-Code:
    <?
    //Lesen
        // Festlegen der Dateien
        $file = "guestbook/entries.txt";
        $aktuelltemplate = "guestbook/config/template.dat";

        // Auslesen der dat file um herauszufinden, welche Vorlage momentan verwendet wird.
        $templatevorlage = fread(fopen($aktuelltemplate,"r"),filesize($aktuelltemplate));

        $template = fread(fopen("guestbook/config/".$templatevorlage,"r"),filesize("guestbook/config/".$templatevorlage));
        fclose(fopen("guestbook/config/".$templatevorlage,"r"));
        $datensatz = file($file);


        // Daten für die Seitenanzahl und wieviel Datensätze ausgegeben werden sollen
        $linkanzahl = count($datensatz)/$max;
        $startwert = ($page*$max-$max);
        $endwert = ($page*$max);

        $datensatz = array_reverse($datensatz);


    $datei="guestbook/entries.txt";
    $entriesnr = count(file($datei));


        for($i=$startwert;$i<$endwert;$i++)
        {

        for($nr = 1; $nr <= $entriesnr; $nr = $nr + 1):
            if($datensatz[$i] != "")
            {
            // Aufteilen/Splitten an dem Zeichen |
            list($datum1,$teilnehmername,$email,$homepage,$ip,$host,$text) = explode("|",$datensatz[$i]);

            // Ersetzen von verschiedenen Zeichen
            $text = str_replace("<10>",chr(10),$text);
            $text = str_replace("\n"," ",$text);


            $view = str_replace("%DATUM%",$datum1,$template);
            $view = str_replace("%NAME%",$teilnehmername,$view);
    if ($email == "")
    {
            $view = str_replace("%EMAILADRESSE%","<font color=\"#E78A8C\">$teilnehmername</font>",$view);
    }
    else
    {
            $view = str_replace("%EMAILADRESSE%","<A HREF=\"MAILTO:$email\" class=link>$teilnehmername</a>",$view);
    }

    if ($homepage =="")
    {
            $view = str_replace("%HOMEPAGE%","<font color=\"#E78A8C\">keine</font>",$view);
    }
    else
    {
            $view = str_replace("%HOMEPAGE%","<A HREF=\"$homepage\" class=link target=\"&quot;_blank&quot;\">Zur Homepage",$view);
    }
            $view = str_replace("%MESSAGE%",$text,$view);
            $view = str_replace("%MESSAGEFARBE%",$messagefarbe,$view);
            $view = str_replace("%RAHMENFARBE%",$rahmenfarbe,$view);
            $view = str_replace("%RAHMENFARBE2%",$rahmenfarbe2,$view);
            $view = str_replace("%NR%",$nr,$view);


            echo $view;
            }
        endfor;
        }

            echo "<div align=\"left\">";
            echo "<a href=\"guestbook/admin.php\">Admin</a>";
    ?>

            <p>&nbsp;</td>
        </tr>
        <tr>
          <td width="779" colspan="2">
            <p align="center"><font color="#FFFFFF">
    <?php
            
    echo "<div align=\"center\">";
            echo 
    "Seite:";

        
    $seite 1;
        for(
    $x=0;$x<$linkanzahl;$x++)
        {
            echo 
    "";
            echo 
    " <a href=\"start.php?site=guestbook&page=$seite\" class=\"link\">$seite</a> |\n";
            
    $seite $seite 1;
        }
            echo 
    "</div>";
    ?>


    Bei diesem Code zählt es richtig durch, nur zeigt es die Einträge soviel mal an wie es hat. Also wenn z.B. 5 Einträge in der txt Datei sind, dann Zeigt es jeden Eintrag 5 mal an, aber es Zählt immer richtig durch, bis zu der anzahl an Einträge und dann fängt es wieder bei 1 an.
    Wieso!?

    Gruss adihas

  • #2
    vielleicht ja,weil du auch zwei schleifen hast?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Und wie könnte man das denn anders machen?

      Kommentar


      • #4
        1. noch eine perl-funktion drumrumbasteln die überprüft, ob der eintrag schon ausgegeben wurde
        2. nur eine schleife verwenden
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          hmm...wie soll ich das mit meinem nicht so grossen Wissen schaffen!?

          Kommentar


          • #6
            die innere schleife rausnehmen?
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Habe ich gemacht, aber was soll das denn bringen?
              Dann bin ich ja wieder soweit, dass es keine Nummer ausgibt!?

              Kommentar


              • #8
                das was in der schleife steht solltest du drinstehen lassen

                nur diese beidenzeilenrausnehmen:
                for($nr = 1; $nr <= $entriesnr; $nr = $nr + 1):
                und
                endfor;
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  Das habe ich gemacht, aber wie schon gesagt gibt es dann ja garkeine Nummer mehr aus!?

                  Kommentar


                  • #10
                    mach aus dem hier
                    PHP-Code:
                    for($i=$startwert;$i<$endwert;$i++)

                    mal
                    PHP-Code:
                    for($i=$startwert;$i<$endwert;$i++)
                    {
                      echo 
                    $datensatz[$i]; 
                    nur so zum testen
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      Also so gibt es jeden Eintrag 2 mal aus. Das erste mal nicht formatiert, das zweite mal formatiert.?

                      Kommentar


                      • #12
                        ist das zweite malso formatiert wie du's haben willst?

                        wenn ja,dann nimm die echo $datensatz[$i]; zeile wieder raus
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar

                        Lädt...
                        X