Archivlink: javarea.de Forum > PHP, MySQL & CGI > Blätterfunktion - while ???
Vollständigen Link anzeigen: javarea.de Forum > PHP, MySQL & CGI > Blätterfunktion - while ???
Pages: [1]
2
... nächste »
... Letzte »
| geschrieben von Gast am 02.10.2002 - 13:03 |
hi ich hab hier nen code für das blättern von seiten in nem GB.
problem ist, ich wollt das gern automatisieren. hab aber bisher keine
ahung, wie man mit while schleifen usw umgeht.
also wenn ihr mir helfen wollt?????
| PHP-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
|
Seite <?
if ($anzahl >= 0) {
echo "<a href='index.php?sec=gb&entries=0&entriesPerPage=10'>1</a>";
}
if ($anzahl > 10) {
echo ", <a href='index.php?sec=gb&entries=10&entriesPerPage=20'>2</a>";
}
if ($anzahl > 30) {
echo ", <a href='index.php?sec=gb&entries=30&entriesPerPage=40'>4</a>";
}
if ($anzahl > 40) {
echo ", <a href='index.php?sec=gb&entries=40&entriesPerPage=50'>5</a>";
}
if ($anzahl > 50) {
echo ", <a href='index.php?sec=gb&entries=50&entriesPerPage=60'>6</a>";
}
if ($anzahl > 60) {
echo ", <a href='index.php?sec=gb&entries=60&entriesPerPage=70'>7</a>";
}
if ($anzahl > 70) {
echo ", <a href='index.php?sec=gb&entries=70&entriesPerPage=80'>8</a>";
}
if ($anzahl > 80) {
echo ", <a href='index.php?sec=gb&entries=80&entriesPerPage=90'>9</a>";
}
if ($anzahl > 90) {
echo ", <a href='index.php?sec=gb&entries=90&entriesPerPage=100'>10</a>";
}
if ($anzahl > 100) {
echo ", <a href='index.php?sec=gb&entries=100&entriesPerPage=110'>11</a>";
}
if ($anzahl > 110) {
echo ", <a href='index.php?sec=gb&entries=110&entriesPerPage=120'>12</a>";
}
if ($anzahl > 120) {
echo ", <a href='index.php?sec=gb&entries=120&entriesPerPage=130'>13</a>";
}
if ($anzahl > 130) {
echo ", <a href='index.php?sec=gb&entries=130&entriesPerPage=140'>14</a>";
}
if ($anzahl > 140) {
echo ", <a href='index.php?sec=gb&entries=140&entriesPerPage=150'>15</a>";
}
if ($anzahl > 150) {
echo ", <a href='index.php?sec=gb&entries=150&entriesPerPage=160'>11</a>";
}
?>
|
|
| geschrieben von Daniel am 02.10.2002 - 13:17 |
Denkansatzt, nicht getestet:
| PHP-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
|
<?php
$result = MYSQL_QUERY("SELECT * FROM deinetabelle");
$anzahl = MYSQL_NUM_ROWS($result);
while( $entries < $anzahl ) {
$entriesPerPage = $entries + 10;
$seite++;
echo "<a href='index.php?sec=gb&entries=".$anzahl."&entriesPerPage=".$entriesPerPage."'>".$seite."</a> ";
$entries = $entriesPerPage;
}
?>
|
|
| geschrieben von Klaush am 02.10.2002 - 13:34 |
@daniel, nicht das du denkst ich will dich kritisieren.... nein um himmels willen.
Der Denkansatz wäre nicht schlecht, nur geht es mit der Addition nicht.
Gehen wir mal logisch an die Sache:
1. es sollen 10 Einträge pro Seite angezeigt werden
2. wir haben die Anzahl der Beiträge vorliegen... sagen wir mal 53
nun müssen wir doch dividieren um die Anzahl der Seiten zu erhalten......
Wir dividieren 53:10 und erhalten als Ergebnis 5,3 Seiten.... hmm schon nicht schlecht, aber 0,3 Seiten gibt es nicht. Da die normale Division nicht reicht müssen wir die Modulo Division (Restedivision) ins spiel bringen, da wir die Reste zu einer Vollen Zahl aufwerten müssen.
Der Operator hierfür ist % das Prozentzeichen..... |
| geschrieben von Daniel am 02.10.2002 - 13:36 |
Oh mann, ich nehem echt 2 wochen urlaub.....
Ach was wäre ich ohe meinen Klausi |
| geschrieben von Klaush am 02.10.2002 - 13:52 |
jeder hat mal nen schlechten Tag.......
Ich geh mal davon aus das der vip das eh nicht hinbekommt...*g* poste ich mal ein kleines Beispiel:
<?
$entry_per_page = 3; // Anzahl Einträge pro Seite
$anzahl = 11; // Gesamteinträge bislang
$pages = ($anzahl/$entry_per_page);
if (($anzahl % $entry_per_page)>0) ++$pages;
for ($i=1; $i<=$pages; ++$i){
$list .= ($page==$i) ? " $i " : " <A HREF=\"$PHP_SELF?page=$i\">$i</u></A>";
}
echo "$list";
?>
müssten ja laut Rechnung 4 Seiten entstehen..... wenn ich richtig gecodet habe und meine Logik stimmt. |
| geschrieben von Gast am 03.10.2002 - 13:02 |
danke klaus, das bsp. von daniel war nicht wirklich dass was ich brauchte.
auf der startsite war alles ok. aber ab dem ersten blättervorgang - nö. *g* |
| geschrieben von Daniel am 03.10.2002 - 17:27 |
| Naja, ich hab auch geagt Denksansatz keine Komplettlösung. |
| geschrieben von Gast am 04.10.2002 - 13:10 |
hier der komplette code:
| PHP-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
|
<?
$entry_per_page=10;
$pages=($anzahl/$entry_per_page);
if(($anzahl%$entry_per_page)>0) ++$pages;
for($i=1; $i<=$pages; ++$i){
$lol= $i-1;
$entries=$lol*10;
$entriesPerPage=$entries+10
$list.=($page==$i)?"$i":"<A HREF=\"index.php?page=$i&entries=$entries&entriesPerPage=$entriesPerPage\">$i</A>";
}
echo"Seite $list";
|
das ist weil ich mit LIMIT im QUERY arbeite. - das bsp. ist für 10 Einträge per Seite. |
| geschrieben von Klaush am 05.10.2002 - 12:53 |
für den @vip, damit er aus dem grübeln nicht mehr rauskommt.
Du musst dch einloggen damit du die Blätterfunktion sehen kannst. Hab da mal 2 verschiedene eingebaut... eine klassische (oben( und eine normale (unten).....*g*.
http://www.javarea.de/?opencat=Home....amp;page=7 |
| geschrieben von Daniel am 05.10.2002 - 14:07 |
Ach der 3. Urlaubstag ist schön.
Kannste mir den Code der oberen Blätterfkt, ma zukommenlassen?
Hab sone Ähnloche, finde die aber schönder! |
| geschrieben von Klaush am 07.10.2002 - 04:53 |
@Daniel, da wir gerade bei der Navi sind..... hatte wieder Langeweile .....;)
http://www.javarea.de/service/proje....index.php3
habe die gesamte Navi umgebaut und eine Typenauswahl eingebaut.... *g*
@Daniel, wie geben... hast doch Urlaub....setz dich hin du fauler Sa** ...   |
| geschrieben von Olli am 20.10.2002 - 13:00 |
Da man eine solche funktionalität immer wieder braucht, habe ich eine einfach zu handhabende Klasse gebaut die alle nötigen Berechnungen ducrhführt. | HTML-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
| <?
// Author: Exceeder (Oliver Gueffroy)
// Webpage: http://freakstuff.de
// eMail: dev@freakstuff.de
// Date: 28.09.2002
// Version: 1.0
// Purpose: A class which is able to display a page navigator pane
class pageNavigator
{
var $baseuri;
var $currentpage;
var $perpage;
var $totalcount;
function pageNavigator($baseuri, $currentpage, $perpage, $totalcount)
{
$this->baseuri = $baseuri;
$this->currentpage = $currentpage;
$this->perpage = $perpage;
$this->totalcount = $totalcount;
}
function setBaseUri($baseuri)
{
$this->baseuri = $baseuri;
}
function setCurrentPage($pagenumber)
{
$this->currentpage = $pagenumber;
}
function setPerPage($perpage)
{
$this->perpage = $perpage;
}
function setTotalCount($totalcount)
{
$this->totalcount = $totalcount;
}
function isValidPage($pagenumber)
{
return checkRange($pagenumber, 1, $this->getLastPage());
}
function getLastPage()
{
if($this->perpage > 0 && $this->totalcount > 0)
{
for($entry=0; $entry<$this->totalcount; $entry+=$this->perpage);
$lastpage = $entry/$this->perpage;
}
else
$lastpage = 1;
return $lastpage;
}
function getPaneOutput($range = 2, $backbtn = true, $nextbtn = true)
{
$outputpages = array();
if($backbtn && $this->isValidPage($this->currentpage-1))
$outputpages[] = "<a href=\"".$this->baseuri.($this->currentpage-1)."\">[<b>«</b>]</a>";
$start = checkRange($this->currentpage-$range, 1, $this->currentpage, true);
$end = checkRange($this->currentpage+$range, 1, $this->getLastPage(), true);
for($page=$start; $page<=$end; $page++)
if($page!=$this->currentpage)
$outputpages[] = "<a href=\"".$this->baseuri.$page."\">[<b>".$page."</b>]</a>";
else
$outputpages[] = "<b>[".$page."]</b>";
if($nextbtn && $this->isValidPage($this->currentpage+1))
$outputpages[] = "<a href=\"".$this->baseuri.($this->currentpage+1)."\">[<b>»</b>]</a>";
return "<span id=\"middle\">".implode(" ", $outputpages)."<br></span>";
}
}
?> |
Der Aufruf der Klasse erfolgt folgender maßen: | HTML-Quelltext | 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
| <?
$baseuri = getenv("SCRIPT_NAME")."?page=";
$page = (isset($HTTP_GET_VARS['page'])) ? $HTTP_GET_VARS['page'] : 1;
$perpage = 7; //jeder beliebige Wert
$totalcount = 120; //oder jede andere Wert.
$pn = new pageNavigator($baseuri, $page, $perpage, $totalcount);
// hier dann irgendwelcher Code
// und an der Stelle, wo die Seiten Navigation erscheinen soll dann:
echo $pn->getPaneOutput(2);
//der erste Paramter gibt an, wie viele Seiten
//maximal angezeigt werden, wenn man z.B. auf Seite
//1 ist, werden jetzt noch die Seiten 2 und 3
//angezeigt, die 4te jeodch (noch) nicht.
?> |
MfG
Olli
PS: Ich bitte darum, den Kommentar am Anfang der Datei zu übernehmen, danke ;)
@Klaus: Was hast du denn mit dem PHP Code gemacht? Der wird ja vollkommen zerstört, immer ne doofe Leerzeile zwischen jeder Orginalen Zeile... |
| geschrieben von Klaush am 20.10.2002 - 14:03 |
@Olli, weiß auch nicht was das Board hat....... ich denke ich muss die Templates in der DB neu anlegen und das Forum selbst neu auflegen.
Die Threads und Postings sollen ja bleiben. Anscheind hat das ständige wechseln der Hoster Spuren im Forum hinterlassen. |
| geschrieben von wwwChaOs am 23.07.2007 - 19:49 |
ich suche wie verrückt nach blätterfunktionen... jede die ich bisher hatte, hatte nen fehler, den ich net verstanden hab, oder wollte MySQL... dabei wollt ich nur nen ordnerinhalt auslesen lassen via readdir()
bsp:
<?php
$xFile = $_GET['xFile'];
if ($xFile == ".."){exit;}
$dir = opendir (".");
while (false !== ($file = readdir($dir))) {
if (strpos($file, $xFile,0)&&strpos($file, '.',0) ) {
$files[]= $file;count($files);
echo "
$file <br> [<a href=\"$xFolder/$file\">View</a>]";
}
}
closedir($dir);
?>
und auch diese blätter funtion hat da:
Fatal error: Call to undefined function checkrange() in D:\HDD\blatt1.php on line 46
46: return checkRange($pagenumber, 1, $this->getLastPage());
|
|