dateien auslesen und splitten :(

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

  • dateien auslesen und splitten :(

    so nun hab ich das mit meinem gästebuch doch noch einmal komplett umgeschrieben und speicher nun jeden eintrag in einer eigenen datei (is mir wurscht ob das sinnvoll ist)

    aber da kann ich dann später einzelne files löschen und bearbeiten ohne das fehler auftreten weil eben ein neuer eintrag geschriben wurde - logisch oder ?

    naja nun hab ich aber einen denkfehler bei dem teil hier - ich öffne den ordner mit den dateien - die for schleife muß so sein wegen sortieren und seitenanzeige - dann kommt

    $file = ordner/dateinummer.endung;

    dann will ich eben diese datei öffnen - explodieren lassen und anzeigen ...

    PHP-Code:

    for ($i $num-($z*$buch_seiten-$buch_seiten) -1$i >= $num-$z*$buch_seiten$i--) {
    $file "save/$i.$ext";

      if (
    $i 0){  // datei vorhanen (also größer 0) ? na dann anzeigen
      
    $my_file fopen($file"r");
      
    $lg explode ("||°||"$my_file[$i]);  // array trennen und auslesen

          // diese Eingaben aus dem Array übernehmen
          
    $name    $lg[0]; 


    um das zu prüfen habe ich in der schleife als ausgabe dann
    echo: $lg[0] und echo $file eingetragen.

    er findet für jede zeile $file und und zeigt die auch korrekt an nur mit $lg[0] kann er nix anfangen ANZEIGE:

    Resource id #2 - save/6.dat

    Resource id #3 - save/5.dat

    Resource id #4 - save/4.dat

    Resource id #5 - save/3.dat

    Resource id #6 - save/2.dat


    ... und was mach ich da nun falsch ???
    Zuletzt geändert von cb master; 05.07.2002, 10:43.
    besucht mich mal ...

  • #2
    ...witzig. mit fopen bekommst du nur nen filepointer, und der kann nich explodieren.

    probier mal
    $my_file=file($file); ...die variablennamen hast du dir ausgesucht

    ...dann is $my_file nen array mit den einzelnen zeilen als elemente.
    eval(str_pad(aa|db,4,slarti^~äü_i_)." \"áú¾ïùû䶳Ðäýï©üèíþç£þé\"^~\"no bugs, only features\";");

    Kommentar


    • #3
      hi - was man so für nen blödsinn macht - aber sieht doch gut aus - nur noch files

      noch was - ich lese die dateien aus einem ordner aus
      ../save/1.dat (z.b.)

      und ich glaub das das so nun auch noch nicht ok ist

      PHP-Code:

      for ($i $num-($z*$buch_seiten-$buch_seiten) -1$i >= $num-$z*$buch_seiten$i--) {  // schleife aufbinden
      $dat "save/$i.$ext";   // ?? ob das stimmt ?

        
      if ($i 0){  // datei vorhanen (also größer 0) ? na dann anzeigen

        
      $lines file("$dat");                // array einlesen - schöner so ?
        
      $lg    explode ("||°||"$lines);   // array splitten und auslesen

            // diese Eingaben aus dem Array übernehmen
            
      $name    $lg[0];

      echo 
      "$name";

      // if zubinden
      // for zubinden 



      achja - am anfang lese ich die dateien aus dem ordner so aus und erstell da auch gleich einen counter mit:




      PHP-Code:
      $dir_handle opendir('save');
      $counter 1;

      while (
      $file_handle readdir($dir_handle)) {
            if (
      $file_handle != '.' && $file_handle != '..') {
            
      $pieces explode('.'$file_handle);
            
      $ext $pieces[count($pieces) - 1];
                 if (
      $ext == 'dat') {
                 
      $array[$counter] = $file_handle;
                 
      $counter++;
                 }
            }
      }

      // anzahl der dateien
      $num  $counter


      nu sach mir ma einer wie ich das noch richtiger machen kann.
      besucht mich mal ...

      Kommentar


      • #4
        und wenn ihr mir schon mal hier reinschaut

        ich versuch noch eine lösung zu finden um gelöschte dateien gar nicht erst aufzurufen ...

        also wenn ich speicher:

        1.dat
        2.dat
        3.dat
        5.dat


        (weil die 4.dat gelöscht wurde)

        dann soll die schleife (wenn es eine wird) einfach bei 5.dat weitermachen. verstanden ? zudem muß dann wohl auch der counter angepasst werden ...


        naja mal sehen wie sich das entwickelt.
        besucht mich mal ...

        Kommentar


        • #5
          Original geschrieben von cb master
          ... also wenn ich speicher:

          1.dat, 2.dat, 3.dat, 5.dat
          (weil die 4.dat gelöscht wurde)

          dann soll die schleife (wenn es eine wird) einfach bei 5.dat weitermachen.
          dann musst du dir die höchste Nummer $maxid speichern, meinetwegen in 0.dat

          und zählst einfach durch:
          for ($i=1; $i<=$maxid; $i++) if (file_exists("$i.dat")) ...
          mein Sport: mein Frühstück: meine Arbeit:

          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

          Kommentar


          • #6
            ok - erstmal dolle sache

            ich hab also nun einen counter in count.dat am laufen. der bei jedem eintrag der gespeichert wird um 1 erhöht.

            so ... und nun hab ich hier meine php die die anzeige der dateien realisieren sollte - tut sie aber (! noch) nicht.

            hast du ne idee wie ich das hier besser machen kann, bzw. das es überhaupt funzt ? tx schon mal vorab



            PHP-Code:

            <?
            include "admin/config.php";
            include "$header";

            // counter öffnen und lesen
            if (!file_exists("$url_verz/count.dat"))  fclose(fopen("$url_verz/count.dat","w+"));

            $file  = "$url_verz/count.dat";
            $ftp   = @fopen($file,"r");
            $count = (int)fgets($ftp,10);
            fclose($ftp);
            // end counter

            $num  = $count;  // anzahl der einträge laut counter

            /////////////////////
            // seiten erstellen
            $seiten = ceil($num / $buch_seiten);
            if (!$z) {
            $z = 1;                             // z = normal seite 1
            $y = $z * $buch_seiten;             // y = maximal einträge pro seite (5)
            $x = $y - $buch_seiten;             // x = y - maximal pro seite
            }

            if ($y < $num) {
            $y = $num;
            }
            /*_______________________________END VARIABLE_______________________________*/ ?>



            <?
            // Seitenanzeige (und Zähler) bei mehr als einer Seite - oben.
            if ($info_oben =="an") {
            if ($num > $buch_seiten) {
              echo "<tr><td><font size=1>[ ";
              echo "$seiten Seiten mit $num Einträgen.";
              echo " ]</td>";
              echo "<td align=right><font size=1>[ ";
              $vor=$z - 1;
              $next=$z + 1;
              if ($vor != 0)
              echo "<a href='$datei_namex1?z=$vor'>";
              echo "<font size=1>zurück";
              if ($vor != 0) echo "</a>";
              echo " | <b>Seite $z</b> | ";
              if ($next <= $seiten)
              echo "<a href='$datei_namex1?z=$next'>";
              echo "<font size=1>weiter";
              if ($next <= $seiten) echo "</a>";
              echo "<font size=1> ]</td></tr>";
            } else {
              echo "<tr><td colspan=2><font size=1>[ ";
              echo "$seiten Seiten mit $num Einträgen.";
              echo " ]</td></tr>";

            }
            } // info an/aus

            echo "<tr><td colspan=2>";
            if ($num > 0) {  // kein eintrag dann runter zu else

                  for ($i = ($num+1)-($z*$buch_seiten-$buch_seiten)-1; $i >= ($num+1)-$z*$buch_seiten; $i--) {
                  $datei = "$url_verz/$i.dat";      // datei erstellen

            //////////
            /* ICH GLAUB JA DAS HIER EIN FEHLER LIEGT !!! WEIL DER DOCH VERSUCHT DIE $DATEI INCL: ORDNER INS ARRAY ZU LESEN - GEHT DAS DENN NICHT AUCH ANDERS ? */
            //////////

                      if ((file_exists("$datei")) && ($i > 0)) {

                         $lines = file("$datei");             // array einlesen
                         $lg    = explode("||°||", $lines);   // array splitten und auslesen

                         // diese Eingaben aus dem Array übernehmen
                         $name    = $lg[0];
                         $geheim  = $lg[3];
                         $comment = $lg[5];
                         $datum   = $lg[6];

                         // email prüfen ob an/aus und richtig
                         if ($geheim == "on") {
                            $email = $lg[2];

                            if (strlen($email) < 8) {
                            $email = "";
                            } else {
                            $name  = "<a href='mailto:$email'><font color=$color_font1 size=1>$name</a>";
                            }
                         } // end mail if

                         // ort prüfen
                         $ort     = $lg[1];
                         if ($ort != "") {
                         $ort=" aus $ort";
                         }

                         // homepage prüfen
                         $hp = $lg[4];
                         if ($hp != "") {
                         $hp="| <a href='$hp' target=_blank><font color=$color_font1 size=1>Homepage</a>";
                         }


            echo "<table width=100%><tr><td>";
            echo "Die Datei \$datei = $datei | $datum |";
            echo "</td></tr></table><br />";

            flush();


                      } elseif ((file_exists("$datei") == 0) && ($i > 0)) {

                      echo "<table width=100%><tr><td>";
                      echo "Beitrag gelöscht";
                      echo "</td></tr></table><br />";
                      } else {
                      echo "";
                      } // end if and else "file_exists" und dem chk ob überhaupt die seite voll wird

                  } // end for "schleife"  * zubinden *

            } else {  // wenn keine eintrag
            echo "<br /><font color=$color_font1 size=1>Keine Einträge vorhanden<br />";
            } // end if and else


            /*_______________________________END TABELLEN_______________________________*/ ?>

            <?
            echo "<br /></td></tr>";
            // Seitenanzeige (und Zähler) bei mehr als einer Seite - oben.
            if ($info_unten == "an") {
            if ($num > $buch_seiten) {
              echo "<tr><td><font size=1>[ ";
              echo "$seiten Seiten mit $num Einträgen.";
              echo " ]</td>";
              echo "<td align=right><font size=1>[ ";
              $vor=$z - 1;
              $next=$z + 1;
              if ($vor != 0)
              echo "<a href='$datei_namex1?z=$vor'>";
              echo "<font size=1>zurück";
              if ($vor != 0) echo "</a>";
              echo " | <b>Seite $z</b> | ";
              if ($next <= $seiten)
              echo "<a href='$datei_namex1?z=$next'>";
              echo "<font size=1>weiter";
              if ($next <= $seiten) echo "</a>";
              echo "<font size=1> ]</td></tr>";
            } else {
              echo "<tr><td colspan=2><font size=1>[ ";
              echo "$seiten Seiten mit $num Einträgen.";
              echo " ]</td></tr>";

            }
            } // info an/aus
            ?>

            <? include "$footer_show;" ?>



            und echo zeigt die richtige seitenanzahl, beitragsanzahl und auch wie gewünscht definierte beiträge pro seite ...

            das echo pro eintrag sieht so aus:

            Die Datei $datei = save/6.dat | |
            Die Datei $datei = save/5.dat | |
            Die Datei $datei = save/4.dat | |
            ...

            $datum findet er nicht - was so glaube ich daran liegt, das er als datei nicht 5.dat oder 6.dat einlesen will sondern das mit dem pfad macht - save/5.dat bzw save/6.dat

            oder ???
            Zuletzt geändert von cb master; 05.07.2002, 10:31.
            besucht mich mal ...

            Kommentar


            • #7
              erstmal ein bischen verkürzen, dann kümmer ich mich um den Fehler:

              // counter öffnen und lesen
              if (!file_exists("$url_verz/count.dat")) fclose(fopen("$url_verz/count.dat","w+"));
              $file = "$url_verz/count.dat";
              $ftp = @fopen($file,"r");
              $count = (int)fgets($ftp,10);
              fclose($ftp);
              // end counter


              Die Zeilen würd ich ändern in
              $file = "$url_verz/count.dat";
              if (!file_exists("$url_verz/count.dat")) { touch($file); $count = 0; }
              else list($count) = file($file);


              das:
              if ((file_exists("$datei")) && ($i > 0)) {
              geht so kürzer (und schneller):
              if ($i && !file_exists($datei)) {

              $datum findet er nicht - was so glaube ich daran liegt,
              das er als datei nicht 5.dat oder 6.dat einlesen will
              sondern das mit dem pfad macht - save/5.dat bzw save/6.dat
              das heißt, er versucht Dateien zu lesen, die im Unterverzeichnis "save" liegen.
              Die sind auch da, sonst würde das Skript meckern.

              Das Problem liegt hier:
              $lines = file("$datei"); // array einlesen
              $lg = explode("||°||", $lines); // array splitten und auslesen
              $lines ist ein Array; der String, der explodieren soll, ist $lines[0]

              Lösung:
              PHP-Code:
              list($line) = file($datei); // liest die erste Zeile aus $datei nach $line
              $lg explode ('||°||'$line); 
              mein Sport: mein Frühstück: meine Arbeit:

              Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

              Kommentar


              • #8
                danke erstmal - ich versuch das dann mal so ...

                wenn ich mehr hilfe brauch schreib ich ich dir wieder

                und sag mal: ist doch deine seite hier - oder ? wollen wir linktausch machen ?
                besucht mich mal ...

                Kommentar


                • #9
                  ahhhhh

                  ja begriffen - nun findet er auch mein datum

                  aber die geschichte mit der verkürzten if anweisung haut so nicht hin (nicht schlimm - nehm ich halt die alte) ...
                  besucht mich mal ...

                  Kommentar


                  • #10
                    Original geschrieben von cb master
                    die geschichte mit der verkürzten if anweisung haut so nicht hin (nicht schlimm - nehm ich halt die alte) ...
                    Hups - stimmt, da hab ich ein Ausrufungszeichen! zuviel eingebaut. Nimm das weg, dann tut´s.
                    mein Sport: mein Frühstück: meine Arbeit:

                    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                    Kommentar

                    Lädt...
                    X