beim auslesen überspringen

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

  • beim auslesen überspringen

    ich hab mal wieder ein kleines problem. text basiertes gb. ich lese alle daten aus dem ordner aus (in jeder datei steckt ein beitrag) gespeichert wird so: 1.dat für beitrag nummer 1 - 2.dat für beitrag nummer 2 ...

    sollte ich nun 8 beiträge haben und die nummer 2 und 3 löschen würden nur noch die beiträge 1,4,5,6,7,8 vorhanden sein. mi der folgenden schleife lese ich die aus und bau das alles noch in eine seitenanzeige ein.

    PHP-Code:
    $datnum letzte beitragsnummer !
    $z anzahl der seiten
    $buch_seiten  
    anzahl der einträge pro seite
    >>> die dateien sind im ordner ./save
    --------------------------------------------------------------

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

              
    if (file_exists("$datei")) {

    hier auslesen und anzeigen und dann:

    } else {
    // beitrag komplett ! gelöscht ? dann in der for schleife die seitenberechung um 1 reduzieren.
    $datnum = ($datnum-1);

    // end if "file_exists"
    // end for schleife 
    nun haut das soweit eigentlich hin. nur wenn ich 2 und mehr hintereinanderliegende beiträge lösche - spinnt der ! beispiel:

    http://www.loveground.com/buch_test/book_show.php

    könnt ihr mir helfen ?
    besucht mich mal ...

  • #2
    Hi,

    ich würde das Problem grundlegend anders angehen. Wenn alle Einträge in dem Verzeichnis ./save liegen, würde ich das Verzeichnis einlesen. So hast du eine Liste mit allen Dokumenten, die in der Liste enthalten sind.

    Verstanden worauf ich hinaus möchte?

    Schau dir mal die "dir" Befehle von PHP an. Damit solltest du eine Lösung finden.
    Ans Ziel kommt nur der, der auch eins hat. www.e-cross.info

    Kommentar


    • #3
      tx ich schau ! hin und wieder ist man einfach nur blind

      DIR danke ich besonders ... und wenn ich nicht weiterkomme - dann bin ich wieder hier ! bei DIR
      besucht mich mal ...

      Kommentar


      • #4
        ist alles nicht so einfach - leider oder zum glück ? pass auf ...
        ................................................................................................
        ich speicher im ordner save ja alle beiträge mit der beitragsnummer: 1.dat für den ersten, 12.dat für den 12. eintrag ... In der Datei
        .dat finden sie dann alle daten zum beitrag bzw user. (aber die zieh ich mir dann schon)

        nun gehen wir einmal davon aus das ein paar beiträge gelöscht sind. im ordner save gibt es noch folgende beiträge: 1.dat | 4.dat | 5.dat | 6.dat | 8.dat | 12.dat | 13.dat

        der counter für den letzten beitrag steht bei 13
        beim auslesen des ordners findet das script 7 beiträge (korrekt!). zudem will ich 3 beiträge pro seite angezeigt bekommen. also fangen wir so an:

        PHP-Code:
        $datcount 13// letzter beitrag
        $buch_seiten 3// und $z = aktuelle seitenanzeige
        $num 7// anzahl der dateien im ordner

        $verzeichnis dir("save/");
          while(
        $datei $verzeichnis->read()) {
            
        $id    explode("."$datei);
            
        $datei "$id[0]";
          } 
        // check der beiträge (while) // kann man auch später zubinden - jaja
        $verzeichnis->close(); 
        auslesen der beiträge erfolgt dann so in der art:

        PHP-Code:
        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 = ("save/$i.dat");                        

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

                     list(
        $line) = file($datei);      
                     
        $lg         explode ('||°||'$line); 

        so und nun komm ich ein wenig durcheinander. jetzt würde ich eigentlich die beitragsnummer $id[0] eine neue id verpassen wollen - z.b. 7 (anzahl der beiträge) und da für jeden weiteren beitrag "-1" - hat einen eine idee wie ich da weiterkomme ? auch weil die ja in sortierten form ausgegeben werden sollen, also nicht das erst beitrag 13 auftauch und im anschluss beitrag 1 ! das mit dem seitenumbruch können wir ja dann in teil 2 besprechen. also wie mach ich los ?
        besucht mich mal ...

        Kommentar


        • #5
          ich hab einen ansatz - glaub ich -

          PHP-Code:
                for ($i = ($datnum)-($z*$buch_seiten-$buch_seiten); $i >= ($num)-$z*$buch_seiten$i--) { 
          .

          mit der schleife zähle ich - 2. abschnitt ! $i entspricht $num - also der anzahl der beiträge. und ist so lange wahr wie die beitragsnummer größer ist als die anzahl der seiten. das kann ja nicht funzen. ich müßte da einen 2. counter schalten der $i vergleicht,

          und wenn ich 3 beiträge auf einer seite haben will muß der counter alle angezeigten !!! beiträge zählen ... und nach 3 abbrechen !
          wer hat ne ahnung wie ?
          besucht mich mal ...

          Kommentar


          • #6
            was passiert eigentlich, wenn du du folgende dateien hast:
            1.dat, 2.dat und 4.dat
            wenn ich jetzt nen beitrag schreibe, kommt der dann in 5.dat oder 3.dat?

            ich würd prinzipiell (außer du löschst jeden 2. beitrag ) die dateien umbennen, so dass ich statt 1.dat, 2.dat und 4.dat halt 1.dat, 2.dat und 3.dat hab

            dann kannst du auch einfach in ner schleife die beiträge durchgehen und musst dich nich um die reihenfolge kümmern.
            PHP-Code:
            $num=anzahl der dateien
            for ($i=1$i<=$num$i++)
            {
              
            readfile($i".dat"); //oder wie auch immer du das machst

            so müsstest du eigentlich alle beiträge aufsteigend sortiert angeziegt bekommen

            das mit seitenwechsel muss ich mir noch überlegen
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              übergeb bei deinen links zum blättern zwei variablen (ab welchem eintrag und wieviel pro seite)

              und les in der schleife dann nur von maximum(0,$ab_beitrag_nr) bis minimum($beitraege_pro_seite,$anzahl_beitraege_gesamt)
              und mach die links zum blättern dann dementsprechend
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                ES WIRD !!! WIE ÜBERGEBE ICH HIER NUN NOCH DIE NUMMER DES ZULETZT EINGELESENEN BEITRAGES ? abbruch der schleife erfolgt wenn $index (übergabe bei neuer seite) + beiträge pro seite erreicht ist.



                $nr = "$datcount";

                for ($i = $index; $i < $last; $i++) {
                $datei = ("save/" . "$nr" . ".dat");

                if (!file_exists("$datei")) {
                // datei nicht vorhanden dann neu versuchen mit der nächsten ?
                $nr = bcadd($nr, -1);
                $i--;
                } else {

                list($line) = file($datei); // liest die erste Zeile aus der jeweiligen $datei
                $lg = explode ('||°||', $line); // array splitten
                $nr = bcadd($nr, -1);

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


                Zuletzt geändert von cb master; 08.11.2002, 21:49.
                besucht mich mal ...

                Kommentar

                Lädt...
                X