Seitenanzeige/ Blättern mit PHP (ohne mysql)

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

  • Seitenanzeige/ Blättern mit PHP (ohne mysql)

    Hallöchen!!

    Ich bin gerade dabei, mir ein PHP-Gästebuch (ohne mysql!!) online zu stellen.
    Es ist ein Skript, das frei verfügbar ist, das man ohne Copyright verwenden kann und auch frei verändern kann.

    Bisher hatte (habe ich noch) ein Gästebuch von einem Anbieter, man ist also gebunden und kann nicht so viel verändern.

    Ich bin ein PHP-NEULING!!! Habe eigentlich nicht wirklich viel Ahnung von dieser Sprache, aber ich kann zumindest den Quellcode lesen und einfache Sachen "abändern". Habe ich bisher auch recht gut hinbekommen, was bestimmte Anzeigen, Layout etc. betrifft.
    HTML kann ich sehr gut, aber das hilft mir ja nun hier nicht weiter.


    Mein Problem:
    Dieses Gästebuch-Skript ist so geschrieben, dass die Seitenanzeige vollständig angezeigt wird. Wenn man also z.B. 15 Seiten mit Einträgen hat, wobei auf jeder Seite z.B. 10 Gästebucheinträge angezeigt werden sollen, gliedert das Skript die Seitenanzeigen vollständig auf.
    Also: << 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 >>

    Wobei << für "eine Seite zurück" und >> für "eine Seite vor" stehen.

    Ich möchte nun, dass z.B. nur 5 Seiten dort stehen, damit die Liste nicht so lang wird, und möchte zudem, dass << für "erste Seite" und >> für "letzte Seite" steht. Eine einzelne spitze Klammer soll halt für zurück bzw. vor stehen.

    Also: << < 1 | 2 | 3 | 4 | 5 ... > >>

    Wobei natürlich immer hochgerechnet wird, wenn man sich auf einer bestimmten aktuellen Seite befindet.

    Also z.B. << < ... 4 | 5 | 6 | 7 | 8 ... > >>


    Tja, wie man das nun realisiert?? Leider kann ich kein PHP, bin aber willig, es demnächst zu lernen, doch von heute auf morgen geht es ja nun auch nicht.
    Würde nur gerne dieses Gästebuch bald online stellen, auch wenn es noch nicht so ist, wie ich es haben will.
    Das mit der Seitenanzeige wäre mir aber sehr wichtig, weil ich bereits ca. 300 Einträge habe und es sehr unübersichtlich aussieht.


    Gibt es ein Skript, dass man "übernehmen" könnte, natürlich muss man es anpassen (Variablen etc.), aber das traue ich mir zu!
    Nur überhaupt erstmal dieses Skript haben....



    Bei Interesse kann ich ja den Gästebuchlink posten bzw. den bisherigen Quellcode dazu.


    Ich würde mich IRRSINNIG freuen, wenn mir jemand helfen könnte! DANKE!!! (wie kann ich es gut machen?? )


    P.S. Natürlich habe ich schon gesucht, aber immer nur Codes gefunden mit mysql-Abfragen.

  • #2
    Re: Seitenanzeige/ Blättern mit PHP (ohne mysql)

    Original geschrieben von Tina2003
    P.S. Natürlich habe ich schon gesucht, aber immer nur Codes gefunden mit mysql-Abfragen.
    ach ja?

    http://www.php-resource.de/forum/sea...by=&sortorder=

    naja. beim blättern besteht zwischen mysql-db und text-db eigentlich nur der unterschied, wie die daten eingelesen werden.

    verwende file() und du hast ein array. damit kannst du auch wieder so arbeiten, als sei es eine echte db.

    und zum arbeiten mit arrays findest du in der o.g. suche auch was.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Abraxax, danke für die Antwort. Auch wenn sie nicht so ausfiel, wie ich hoffte.

      Gesucht habe ich in google mit zig Stichwörtern.
      Erwähnte ich schon, dass ich absoluter Anfänger bin? Ich weiss weder, wie man festlegt, dass mit < eine Seite zurück angezeigt wird, noch wie die letzte Seite angezeigt wird, noch überhaupt...

      Ich dachte halt, es hätte jemand schon ein derartiges Skript in PHP (für sein eigenes GB?) programmiert und könnte es mir zur Verfügung stellen. Eventuell mit einigen Erklärungen, wo ich z.B. was abändern muss (Variablen, Pfade etc.). Nur damit ich wenigstens ein vage Vorstellung habe.


      Ich weiss, es ist einfach, es nicht selber programmieren zu wollen, auf Hilfe anderer zu hoffen (das tue ich sonst nie).

      Hm.... vielleicht findet sich ja noch jemand.... denn ich würde dieses GB gerne nehmen, denn es ist frei veränderbar und auch klein "gehalten", so dass ich in den zig Dateien noch selber zurechtkomme (ausser eben bei der Seitenanzeige). Bei Bedarf poste ich den Quellcode. Vielleicht kann man dann mehr sagen?

      LG!

      Kommentar


      • #4
        dann verschiebe ich dich gerne zu den GESUCHEN, denn woanders gehörts einfach nicht hin...

        Kommentar


        • #5
          naja,

          Ich dachte halt, es hätte jemand schon ein derartiges Skript in PHP (für sein eigenes GB?) programmiert und könnte es mir zur Verfügung stellen. Eventuell mit einigen Erklärungen, wo ich z.B. was abändern muss (Variablen, Pfade etc.). Nur damit ich wenigstens ein vage Vorstellung habe.
          ich bin mir sicher, ich hätte gestern erst bei den code-schnipseln mindestens 3 oder 4 beiträge dazu gesehen ...

          ansonsten hätte ich hier noch ne klasse rumliegen, die das macht, was du willst, die du über 4-5 zeilen einbinden kannst ... das problem ist nur, daß ich zu faul bin, die verwendung ausführlich zu kommentieren ...

          außerdem werden dir die allein sicher nix nutzen, oder hast du die darstellung der jeweiligen seiten schon?
          Die Zeit hat ihre Kinder längst gefressen

          Kommentar


          • #6
            Original geschrieben von derHund
            außerdem werden dir die allein sicher nix nutzen, oder hast du die darstellung der jeweiligen seiten schon?
            wahrscheinlich abgesehen von der noch nciht vorhandenen praxis mit classen zu arbeiten.

            Original geschrieben von Tina2003
            Abraxax, danke für die Antwort. Auch wenn sie nicht so ausfiel, wie ich hoffte.
            tja. das ist wohl meistens so.... wie wollen ja nun auch nicht alles vorkauen...
            Original geschrieben von Tina2003
            Ich dachte halt, es hätte jemand schon ein derartiges Skript in PHP (für sein eigenes GB?) programmiert und könnte es mir zur Verfügung stellen. Eventuell mit einigen Erklärungen, wo ich z.B. was abändern muss (Variablen, Pfade etc.). Nur damit ich wenigstens ein vage Vorstellung habe.
            ich meine .... ich habe auch eine kleine blätter-geschichte in meinem test-GB drin. -> siehe sig
            nur nützt dir das wohl auch nichts. denn es ist mit mysql gemacht.
            Original geschrieben von Tina2003
            Ich weiss, es ist einfach, es nicht selber programmieren zu wollen, auf Hilfe anderer zu hoffen (das tue ich sonst nie).
            das kann ja jede(r) sagen ...
            das wollen wir die aber dennoch mal glauben.
            ausserdem konntest du bei deinen bisherigen 2 posts noch nicht viel betteln ...
            Original geschrieben von Tina2003
            Bei Bedarf poste ich den Quellcode. Vielleicht kann man dann mehr sagen?
            ich denke, dass das (erst einmal) nicht sinnvoll ist.

            du kannst dich ja auch mal auf die suche nach einem anderen kleinen GB machen, welches eine navigation deiner vorstellung enthält.

            alternativ kann man dich auch zur projekthilfe schieben. evtl findet sich ja einer, der lust dazu hat.

            oder aber du greifst auf das angebot von derHund zurück und arbeitet dich in das thema classen ein.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              also,

              ich habs mal drangehängt. die datei kommt irgendwo hin, wo du sie includen kannst.

              dann:

              einbinden, die pfad-angabe mußt du sicher anpassen:
              PHP-Code:
              require ("no_sz.php"); 
              instanzieren:
              PHP-Code:
              $sz = &new no_seiten_zahlen
              hier übergibts du den link, der aufgerufen wird:
              PHP-Code:
              $sz->set_url ("?seite=dszi"); 
              steht für: die selbe seite wieder aufrufen (wenn der teil vor dem ? weggelassen wird), ansonten kannst du auch ne komplette url angeben. die aufzurufenen urls unterscheiden sich ja nur in dem parameter der aktuellen seite, dafür steht das dszi ...
              wird bei dir seite x zb über
              Code:
              index.php?kategorie=17&user=864&kartoffel=yes&seite_gb=x
              aufgerufen, müßte der aufruf so lauten:
              PHP-Code:
              $sz->set_url ("index.php?kategorie=17&user=864&kartoffel=yes&seite_gb=dszi"); 
              was dümmeres ist mir damals nicht eingefallen ... da die seite ja sowieso immer die selbe ist, reicht es, mit den zu übergebenen variablen anzufangen

              dann mußt du noch die anzahl aller seiten bzw. die anzahl der anzuzeigenen seitenzahlen angeben:
              PHP-Code:
              $sz->set_params (155); 
              heißt: 15 seiten insgesamt, 5 jeweils zu auswählen.

              so, das war die vorarbeit.

              jetzt mußt du nur noch per
              PHP-Code:
              Seite: <?PHP echo sz->get($_GET["seite"]); ?>
              dien schnulli ausgeben lassen und dabei die aktuelle seite übergeben, die ja meistens schon im $_GET steht.

              so .... das klappt nie

              übernehme natürlich keine garantie, bei mir funzts immer.

              achso, das teil hat noch ein paar fietschers, zb. zum nicht linearen ansprechen von seitenindizies (!), formatierung, schau einfach mal.
              Angehängte Dateien
              Die Zeit hat ihre Kinder längst gefressen

              Kommentar


              • #8
                Vorab: ich stelle mal den Schnipsel rein. Es ist ja nicht viel. Der Blätterlink zeigt eben alle Seiten (und wenn es 50 sind) an und jeweil ein << für zurück und ein >> für vor.


                Das Skript arbeitet mit Templates für die HTML-Ausgabe. In der Template-Seite für die Einträge_anzeigen_Seite wird für den Blätterlink ein Ersetzvorgang mit %jump% eingefügt.

                Also %jump% ist folgendermassen codiert in der PHP-Seite, wo alle Deklarationen/Funktionen etc. für das GB programmiert sind (ist das richtig ausgedrückt? Verzeiht meine Babysprache ):


                ############################

                if($menue == "links")
                {
                if($action == "admin") ///// das ist für den Adminlink (uninteressant)
                {
                $adminlink = "&action=admin"; ///// das ist für den Adminlink (uninteressant)

                } ///// das ist für den Adminlink (uninteressant)

                $backlinkstart = $start-$eintraegeproseite;
                if($backlinkstart > 0)
                {
                $backlink = " <a href=\"guestbook.php?start=$backlinkstart$adminlink\">&lt;&lt;</a> |";
                }else{$backlink = " &lt;&lt; |";}

                $linkmenue = $linkmenue.$backlink;

                $vorlinkstart = $startcount+$eintraegeproseite;
                $vorlink = " <a href=\"guestbook.php?start=$vorlinkstart$adminlink\">&gt;&gt;</a>";

                while($seitencount <= $seiten)
                {
                if($start == $startcount)
                {
                $linkmenue = $linkmenue."<b> $seitencount </b>|";
                }
                else
                {
                $linkmenue = $linkmenue." <a href=\"guestbook.php?start=$startcount$adminlink\">$seitencount</a> |";
                }
                $seitencount++;
                $startcount = $startcount+$eintraegeproseite;
                }

                $vorlinkstart = $start+$eintraegeproseite;
                if($vorlinkstart <= $gesamteintraege)
                {
                $vorlink = " <a href=\"guestbook.php?start=$vorlinkstart$adminlink\">&gt;&gt;</a>";
                }else{$vorlink = " &gt;&gt;";}
                $linkmenue = $linkmenue.$vorlink;

                $haupttemplate = str_replace("%jump%",$backadminlink.$linkmenue,$haupttemplate);
                }


                ########################

                Ist ja nicht viel. Wenn ich da nur zwei, drei Zeilen oder was auch immer einfügen/ ändern könnte (wenn ich wüsste, wie das geht)....



                Abraxax, du bist aber auch ein harter Brocken. Und ja, du kannst mich beim Wort nehmen - ich nehme selten (äussert ungerne) Hilfe an, denn ich bringe mir schon recht gerne selber alles bei; ist mit HTML auch nicht anders gelaufen und da kann mir mittlerweile keiner mehr was vormachen
                Ich habe dein GB gesehen, wo die tolle Seitenanzeige ist *neid* - exakt so will ich es haben!!!


                der Hund, danke für deine Mühe. Ich lese es mir gleich in Ruhe durch und hoffe, ich blicke dadurch. Mir ist auf Anhieb die "Kartoffel" ins Auge gestochen *lol*


                LG!


                Vielleicht habe ich ja noch Glück...
                Es ist nur so, dass dieses GB eben frei ist ohne Copyright etc. Ich kann es nach Laune anpassen und die Dateien sind NICHT SO GROSS!!!! Da blicke ich wenigstens durch. Habe schon einiges angepasst!! Zudem wird eben mit einer *.dat-Datei für die Einträge gearbeitet (ich kann also bequem meine alten Beiträge archivieren!!!).

                Habe auch fette GB-Skripte, aber da sträuben sich meine Haare zu Berge; dann muss ich es exakt so übernehmen und kann nicht "herumfuschen" Ausserdem sind sie meistens mit mysql oder haben andere Sachen, die mir nicht passen.


                Was mir eben bei diesem GB eben noch fehlt, ist die korrekte Seitenanzeige UND eine "Dankesseite", wenn der Beitrag geschrieben wurde, mit dem Hinweis, dass der Beitrag in Kürze angezeigt wird (nach der Freischaltung). Hm... das wäre auch nicht schlecht. Da fehlt mir dann auch wieder das Wissen, wie ich eine HTML-Seite ausgebe, wenn der "Eintragen-Button" geklickt wurde.
                Eine Vorschau wäre auch nicht übel. Ich habe mir zum Ziel gesetzt, das irgendwie noch hinzukriegen (ich will mich ja damit befassen). Wenn nicht, dann muss ich wohl so ein fettes GB nehmen
                Zuletzt geändert von Tina2003; 08.12.2003, 11:44.

                Kommentar


                • #9
                  Blätterfunktion umbauen

                  Ich nutze schon länger folgende Blätterfunktion:
                  PHP-Code:
                  //---------------------------------------------------  

                  $pfad $_SERVER['PHP_SELF'];    // aktuellen Dateipfad ermitteln, wichtig fuer die Links der Seitennavigation

                  $query mysql_query("SELECT id FROM hoverbox_picture99"); // DB Abfragee

                  // ------------------------------------------------------------------------

                  $datensaetze_pro_seite "26";      // Anzahl der Datensaetze die Pro Seite angezeigt werden sollen
                  $p "5";                                // Anzahl der Links die in der Seitenavigation ausgegeben werden

                  $total mysql_num_rows($query);                      // liefert die Anzahl der Datensaetze der Abfrage
                  $seiten ceil($total $datensaetze_pro_seite);     // Berechnet die Seitenanzahl insgesamt

                  // ------------------------------------------------------------------------

                  if(empty($_GET['seite'])){ // korrigieren der aktuellen Seite

                      
                  $seite 1;             // Sofern $seite nicht uebergeben wurde

                  }elseif($_GET['seite'] <= || $_GET['seite'] > $seiten){

                      
                  $seite 1;         // Variable definieren

                  }else{ // Wenn Obiges nicht zutraf

                      
                  $seite mysql_real_escape_string($_GET['seite']);     // Variable definieren
                  }

                  $links = array(); // Linkkette bilden

                  // Seite die vor der aktuellen Seite kommt definieren
                  if(($seite $p) < 1){ $davor $seite 1;  }else { $davor $p; }            

                  // Seite die nach der aktuellen Seite kommt definieren
                  if(($seite $p) > $seiten){ $danach $seiten $seite; }else{ $danach $p; }   
                         
                  $off = ($seite $davor); // Variable definieren   
                                  
                  if ($seite$davor 1){ // Link definieren => Zur Erste Seite springen         
                      
                  $first 1;
                         
                  $links[] = "<a href=\"$pfad?seite=$first\" title=\"Zur ersten Seite springen\">&laquo; Erste ...</a>\n";      
                  }      

                  if(
                  $seite != 1){ // Link definieren => eine Seite zurueck blaettern          
                      
                  $prev $seite-1;
                      
                  $links[] = "<a href=\"$pfad?seite=$prev\" title=\"Eine Seite zurueck blaettern\"> &laquo;</a>\n";     
                  }   
                         
                         
                  for(
                  $i $off$i <= ($seite $danach); $i++){ // einzelne Seitenlinks erzeugen

                    
                  if ($i != $seite){  // Link definieren            
                    
                          
                  $links[] = "<a href=\"$pfad?seite=$i\">$i</a>\n";
                          
                    }elseif(
                  $i == $seiten) { // aktuelle Seite, ein Link ist nicht erforderlich             
                          
                          
                  $links[] = "<span class=\"current\">[ $i ]</span>\n";  
                          
                    }elseif(
                  $i == $seite){ // aktuelle Seite, ein Link ist nicht erforderlich             
                    
                          
                  $links[] = "<span class=\"current\">[ $i ]</span>\n";
                          
                    } 
                  // close if $i      
                  }                

                  if(
                  $seite != $seiten){ // Link definieren => eine Seite weiter blaettern       
                      
                  $next $seite+1;
                      
                  $links[] = "<a href=\"$pfad?seite=$next\" title=\"Eine Seite weiter blaettern\"> &raquo; </a>\n";
                  }      
                      
                  if(
                  $seiten $seite $p ){ // Link definieren => Zur letzen Seite springen   
                      
                  $last $seiten
                      
                  $links[] = "<a href=\"$pfad?seite=$last\" title=\"Zur letzten Seite springen\">... Letzte &raquo;</a>\n";
                  }      

                  $start = ($seite-1) * $datensaetze_pro_seite;             // Berechne den Startwert fuer die DB


                  $link_string implode(" "$links); // Zusammenfuegen der einzelnen Links zu einem String
                    // Select-Statement zum Auslesen der Daten
                  $sql "SELECT dateiname, kommentar, produkt, preis, lizenz, detail, id from hoverbox_picture99 LIMIT $start,$datensaetze_pro_seite";
                  $rs mysql_query($sql);
                  $row mysql_fetch_array($rs); 
                  ?> 
                  PHP-Code:
                  <?php 
                  // -------------------------------------- Seitennavigation ausgeben ----------------------------
                   
                  echo "<div id=\"navigation\">\n";

                   echo 
                  "<span class=\"pages\">Seite ".$seite." von ".$seiten."</span>\n";

                   echo 
                  $link_string// Ausgabe der Seitennavigation
                      
                   
                  echo "</div> \n";
                  // -------------------------------------- Seitennavigation ende --------------------------------
                  ?>
                  <?php

                  // Datensatz vorhanden ?
                  if (mysql_num_rows($rs) == 0) {
                      echo 
                  "es liegt kein Wert vor";
                  } else {
                      while (
                  $row mysql_fetch_array($rs)) {
                          if (empty(
                  $row[0])) {
                              echo 
                  'kein Bild';
                              continue;
                          }
                  Diese läuft für mysql zwecke super. Jetzt möchte ich die aber ohne mysql nutzen. Wie müsste ich diese verändern? Der Code zum auslesen der Dateien sieht so aus:
                  PHP-Code:
                  <?php
                  $verzeichnis 
                  "images/"// Pfad zum Verzeichnis (Hier ist es ein Unterverzeichnis)
                  $handle openDir($verzeichnis); // Verzeichnis öffnen
                  while ($datei readDir($handle)) { // Verzeichnis auslesen
                   
                  if ($datei != "." && $datei != ".." && !is_dir($datei)) { // Verzeichnisse filtern
                    
                  if (strstr($datei".gif") || strstr($datei".png") || strstr($datei".jpg")) { // Bilder filtern
                     
                  $verzeichnis_datei $verzeichnis $datei// Pfad zur aktuellen Datei
                     
                  $info getImageSize($verzeichnis_datei); // Bildinfos ermitteln (Breite, Höhe)
                      // Bild anzeigen
                     
                  echo "<li><a href=\"$verzeichnis_datei\"><img src=\"$verzeichnis_datei\" alt=description /><img src=\"$verzeichnis_datei\" alt=description class=preview width=\"$info[0]\" height=\"$info[1]\" /></a></li> ";
                    }
                   }
                  }
                  closeDir($handle); // Verzeichnis schließen
                  ?>

                  Kommentar


                  • #10
                    Beim Auslesen von Dateien aus einem Verzeichnis kannst du natürlich nicht so direkt mit Offset und Limit arbeiten, wie bei der MySQL-Abfrage.

                    Am besten liest du erst mal alle Dateien in ein Array (die Gesamt-Anzahl brauchst du ja eh, um die Anzahl der Seiten berechnen zu können), und schaust dann welche Elemente du davon ausgeben musst. Eine for-Schleife bietet sich an – die kann dann ganz gezielt nur von X bis X + Anzahl Elemente pro Seite laufen, und direkt auf die Array-Elemente unter diesem Index zugreifen.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Blätterfunktion umbauen

                      Zitat von wahsaga Beitrag anzeigen
                      Beim Auslesen von Dateien aus einem Verzeichnis kannst du natürlich nicht so direkt mit Offset und Limit arbeiten, wie bei der MySQL-Abfrage.

                      Am besten liest du erst mal alle Dateien in ein Array (die Gesamt-Anzahl brauchst du ja eh, um die Anzahl der Seiten berechnen zu können), und schaust dann welche Elemente du davon ausgeben musst. Eine for-Schleife bietet sich an – die kann dann ganz gezielt nur von X bis X + Anzahl Elemente pro Seite laufen, und direkt auf die Array-Elemente unter diesem Index zugreifen.
                      Also im prinzip sowas hier?
                      PHP-Code:
                      <?php
                      $seite 
                      $_GET["seite"];
                      if(!isset(
                      $seite)){
                           
                      $seite '1';
                        }

                      $files = array();
                      $v "images";
                      $dir openDir($v);
                      while (
                      $file readDir($dir)){
                            if (
                      $file != "." && $file != ".." && is_file($v."/".$file)) {
                                
                      $files[] = $file;
                            }
                        }
                      closeDir($dir);
                      $count count($files);
                      $max 5;
                      $start $seite $max $max;
                      $seiten $count $max;
                      for(
                      $a 0$a $seiten$a++){
                           
                      $b $a 1;
                           if(
                      $seite == $b){
                              echo 
                      '<div><b>'.$b.'</b></div>';
                           } else {
                              echo 
                      '<div><a href="test.php?seite='.$b.'">'.$b.'</a></div>';
                           }
                        }

                      $output array_slice($files$start$max);

                      echo 
                      "<table><tr>";
                        
                      $i 1;
                        foreach(
                      $output as $pics){
                            echo 
                      '<td>
                                    <a href="images/'
                      .$pics.'">
                                      <img src="images/'
                      .$pics.'" alt="Bild" width="130" height="105" />
                                    </a>
                                  </td>'
                      ;
                            echo (
                      $i == 0) ? '</tr><tr>' '';
                        
                      $i++;
                        }
                        echo 
                      "</tr></table>";  
                        
                      ?>

                      Kommentar

                      Lädt...
                      X