PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks. |
 |

05-12-2003, 16:31
|
Tina2003
Newbie
|
|
Registriert seit: Dec 2003
Beiträge: 3
|
|
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.
|

05-12-2003, 17:20
|
Abraxax
  THE REAL HAXE (Administrator)
|
|
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
|
|
Re: Seitenanzeige/ Blättern mit PHP (ohne mysql)
Zitat:
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.
|

05-12-2003, 20:25
|
Tina2003
Newbie
|
|
Registriert seit: Dec 2003
Beiträge: 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!
|

05-12-2003, 20:40
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
|
|
dann verschiebe ich dich gerne zu den GESUCHEN, denn woanders gehörts einfach nicht hin...
|

05-12-2003, 20:55
|
derHund
PHP Master
|
|
Registriert seit: Aug 2003
Ort: Hundehütte
Beiträge: 5.293
|
|
naja,
Zitat:
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
|

05-12-2003, 22:06
|
Abraxax
  THE REAL HAXE (Administrator)
|
|
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
|
|
Zitat:
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.
Zitat:
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...
Zitat:
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.
Zitat:
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 ...
Zitat:
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.
|

05-12-2003, 22:42
|
derHund
PHP Master
|
|
Registriert seit: Aug 2003
Ort: Hundehütte
Beiträge: 5.293
|
|
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 (15, 5);
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.
__________________
Die Zeit hat ihre Kinder längst gefressen
|

06-12-2003, 13:01
|
Tina2003
Newbie
|
|
Registriert seit: Dec 2003
Beiträge: 3
|
|
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\"><<</a> |";
}else{$backlink = " << |";}
$linkmenue = $linkmenue.$backlink;
$vorlinkstart = $startcount+$eintraegeproseite;
$vorlink = " <a href=\"guestbook.php?start=$vorlinkstart$adminlink\">>></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\">>></a>";
}else{$vorlink = " >>";}
$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
Geändert von Tina2003 (08-12-2003 um 13:44 Uhr)
|

02-09-2016, 16:02
|
phppower
Registrierter Benutzer
|
|
Registriert seit: Jul 2009
Beiträge: 55
|
|
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'] <= 0 || $_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\">« 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\"> «</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\"> » </a>\n"; } if($seiten - $seite - $p > 0 ){ // Link definieren => Zur letzen Seite springen $last = $seiten; $links[] = "<a href=\"$pfad?seite=$last\" title=\"Zur letzten Seite springen\">... Letzte »</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 ?>
|

02-09-2016, 16:23
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 25.236
|
|
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.
|

02-09-2016, 16:38
|
phppower
Registrierter Benutzer
|
|
Registriert seit: Jul 2009
Beiträge: 55
|
|
Blätterfunktion umbauen
Zitat:
Zitat von wahsaga
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 % 5 == 0) ? '</tr><tr>' : ''; $i++; } echo "</tr></table>"; ?>
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Thema bewerten |
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|