| (Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI... |
pager script gesucht!
Diskussion: pager script gesucht! im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige
Hallo Leute,
ich habe eine Seite ilpendritsch die ich nun mit einer datenbank erweitern will.
ich brauche dazu noch ...
 | |
24.07.06, 14:52
|
#1 (permalink)
|
Registriert seit: 21.07.06 Likes: 0 | pager script gesucht! Anzeige Hallo Leute,
ich habe eine Seite ilpendritsch die ich nun mit einer datenbank erweitern will.
ich brauche dazu noch ein script, dass mir erlaubt nach x datensätzen iene neue seite zu machen.
als beispiel.
ganz unten steht die seitenauswahl mit 1-20, 21-40 usw.
kann mir jemand helfen?
danke schonmal im vorraus! MfG Fabian |
| |
24.07.06, 15:22
|
#2 (permalink)
|
Registriert seit: 23.05.05 Likes: 0 | Naja schreib dir halt ein Script das die Variable "VON" und "BIS" auswertet und gib dann
anhand dieser 2 Variablen die passenden Datensätze aus.
Und unter an die Seite setzt du dann noch einen Link ala PHP-Code: echo('<a href="x.php?von='.$bis.'&bis='.$bis+10.'">');
Xalon
P.S:voraus mit einem r |
| | | |
| | HaBOT
| - Anzeige - |
| |
24.07.06, 16:29
|
#3 (permalink)
| | Guest | Du benötigtst eine sogenannte Blätterfunktion Link | |
| |
26.07.06, 19:49
|
#4 (permalink)
| Themenstarter
Registriert seit: 21.07.06 Likes: 0 | Des meint ich, nur wie kann ich statt Seite 1,2,3,4,5,... Seite 1-20, 21-40, 41-60,... schreiben??? ?( |
| |
26.07.06, 21:24
|
#5 (permalink)
| | Guest | Das ist jetzt ein bischen umständlich aber sollte funktionieren PHP-Code: <?php $seite = 2;//Seite auf der du bist $eintraege_pro_seite = 15;//Einträge pro Seite
$seite2 = $seite * $eintraege_pro_seite; //Maximale Seite
$seite3 = $seite2 - $eintraege_pro_seite + 1; //Minimale Seite
echo "".$seite3." - ".$seite2.""; ?> das muss du dann nur noch an deinen Skript anpassen
mfg | |
| |
28.07.06, 15:15
|
#6 (permalink)
| Themenstarter
Registriert seit: 21.07.06 Likes: 0 | Hi,
ich weiß das ich ne null bin, aber ich hab noch zwei fragen.
1. Wie kann ich des in en template einbauen?
2. Wie kann ich nach x Seiten ne neue zeile machen? Seite:1-20 21-40 41-60 61-80
thx ich glaub dann wars alles  Fabi |
| |
29.07.06, 20:16
|
#7 (permalink)
| | Guest | Hi
Ich hab es nicht getestet sollte aber gehen PHP-Code: <?php
$seite = $_GET["seite"]; //Abfrage auf welcher Seite man ist
//Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1
if(!isset($seite))
{
$seite = 1;
}
//Verbindung zu Datenbank aufbauen
$link = mysql_connect("localhost","Username","Passwort") or die ("Keine Verbindung moeglich");
mysql_select_db("Datenbank") or die ("Die Datenbank existiert nicht");
//Einträge pro Seite: Hier 15 pro Seite
$eintraege_pro_seite = 15;
//Ausrechen welche Spalte man zuerst ausgeben muss:
$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;
//Tabelle Abfragen
//Tabelle heißt hier einfach: Tabelle
$abfrage = "SELECT * FROM Tabelle LIMIT $start, $eintraege_pro_seite";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo $row->id."<br>"; // Hier die Ausgabe der Einträge
}
//Jetzt kommt das "Inhaltsverzeichnis",
//sprich dort steht jetzt: Seite: 1 2 3 4 5
//Wieviele Einträge gibt es überhaupt
//Wichtig! Hier muss die gleiche Abfrage sein, wie bei der Ausgabe der Daten
//also der gleiche Text wie in der Variable $abfrage, bloß das hier das LIMIT fehlt
//Sonst funktioniert die Blätterfunktion nicht richtig,
//und hier kann nur 1 Feld abgefragt werden, also id
$result = mysql_query("SELECT id FROM Tabelle");
$menge = mysql_num_rows($result);
//Errechnen wieviele Seiten es geben wird
$wieviel_seiten = $menge / $eintraege_pro_seite;
//Ausgabe der Seitenlinks:
echo "<div align=\"center\">";
echo "<b>Seite:</b> ";
$seite2 = $seite * $eintraege_pro_seite; //Maximale Seite
$seite3 = $seite2 - $eintraege_pro_seite + 1; //Minimale Seite
//Ausgabe der Links zu den Seiten
for($a=0; $a < $wieviel_seiten; $a++)
{
$b = $a + 1;
//Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben
if($seite == $b)
{
echo " <b>$b</b> ";
}
//Aus dieser Seite ist der User nicht, also einen Link ausgeben
else
{
echo " <a href=\"?seite=".$b."\">".$seite3." - ".$seite2."</a> ";
}
}
echo "</div>";
?> Zitat: |
2. Wie kann ich nach x Seiten ne neue zeile machen?
| sry weiss nicht was du meinst
mfg ba2 | |
| |
29.07.06, 22:31
|
#8 (permalink)
| | Guest | @ c1b
Das Skript ist nicht von mir ich habe es nur für "Ilpendritsch" angepasst.
EDIT:
Ich denke nicht das es ein Fehler ist, kann mich aber auch irren.
mfg ba2 | |
| |
30.07.06, 11:03
|
#9 (permalink)
| Themenstarter
Registriert seit: 21.07.06 Likes: 0 | sry ich hab mich falsch ausgedrückt^^
ich meinte wie kann ich in der navigation nach x seiten einen zeilenumbruch erzwingen?
und wie kann ich dieses script in ein Template einbauen?
ich hab mit der if anweisung probleme ( wie ich sie einbauen kann) |
| |
30.07.06, 14:18
|
#10 (permalink)
|
Registriert seit: 27.07.06 Likes: 0 | in zeile 76 fuege das hinzu: Code: $site_check = $b / 10;
if (is_integer($site_check)) { echo('<br />'); } Die 10 durch die anzahl der seiten ersetzen nachdenen ein Zeilenumbruch kommen soll.
$b wird 10 geteilt, wenn eine Ganzzahl (1;2;3;4..) rauskommt, dann wird der Zeilenumbruch durchgefuehrt, wenn eine Fliesskommazahl (1,23; 4,34..) rauskommt nicht.
Sollte funktionieren..
Fuer den einbau in eine Template enginge, kannst du anstatt echo, alles in einer Variable speichern und diese dann zuweisen, z.B.: Code: while($row = mysql_fetch_object($ergebnis))
{
$template_variable .= $row->id."<br>"; // eintraege werden in der in der Variable gespeichert
} |
| |
31.07.06, 18:49
|
#11 (permalink)
| Themenstarter
Registriert seit: 21.07.06 Likes: 0 | Schon wieder falsch
ich meinte wie kann ich die navigation in das template system einbauen???
also:
Seite: 1-10,... |
| |
31.07.06, 19:47
|
#12 (permalink)
| | Guest | welches template system?
Das Beispiel Skript kannst du auf deiner Seite ganz normal mit den Befehl include einbinden | |
| |
03.08.06, 16:38
|
#13 (permalink)
| Themenstarter
Registriert seit: 21.07.06 Likes: 0 | also...
mein script sieht so aus PHP-Code: $seite = $_GET["seite"]; //Abfrage auf welcher Seite man ist
//Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1
if(!isset($seite))
{
$seite = 1;
}
//Verbindung zu Datenbank aufbauen
$link = mysql_connect("localhost","Username","Passwort") or die ("Keine Verbindung moeglich");
mysql_select_db("Datenbank") or die ("Die Datenbank existiert nicht");
//Einträge pro Seite: Hier 15 pro Seite
$eintraege_pro_seite = 10;
//Ausrechen welche Spalte man zuerst ausgeben muss:
$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;
//Tabelle Abfragen
//Tabelle heißt hier einfach: Tabelle
// Liste fuellen
$query = $mysql->query("SELECT * FROM tabelle Limit $start, $eintraege_pro_seite");
while($arr = $query->fetch_assoc())
{
$tabelle[] = $arr;
}
//Jetzt kommt das "Inhaltsverzeichnis",
//sprich dort steht jetzt: Seite: 1 2 3 4 5
//Wieviele Einträge gibt es überhaupt
//Wichtig! Hier muss die gleiche Abfrage sein, wie bei der Ausgabe der Daten
//also der gleiche Text wie in der Variable $abfrage, bloß das hier das LIMIT fehlt
//Sonst funktioniert die Blätterfunktion nicht richtig,
//und hier kann nur 1 Feld abgefragt werden, also id
$result = mysql_query("SELECT id FROM tabelle");
$menge = mysql_num_rows($result);
//Errechnen wieviele Seiten es geben wird
$wieviel_seiten = $menge / $eintraege_pro_seite;
//Ausgabe der Seitenlinks:
echo "<div align=\"center\" class=\"schrift_normal\"><table><tr>";
//echo "<b>Seite:</b> ";
//Ausgabe der Links zu den Seiten
for($a=0; $a < $wieviel_seiten; $a++)
{
$b = $a + 1;
$seite2 = $b * $eintraege_pro_seite; //Maximale Seite
$seite3 = $seite2 - $eintraege_pro_seite + 1; //Minimale Seite
$c = $b - 1;
$site_check = $c / 6;
//if (is_integer($site_check)) { echo('<br />'); }
if (is_integer($site_check)) {
echo('</tr><tr>');
}
//Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben
if($seite == $b)
{
echo "<td align=\"center\"><b>".$seite3."-".$seite2."</b></td>";
}
//Aus dieser Seite ist der User nicht, also einen Link ausgeben
else
{
echo "<td align=\"center\"><b><a href=\"index.php?TEMPLATE=cartoons&seite=$b\" class=\"b\">[".$seite3."-".$seite2."]</a></b></td>";
}
}
echo "</tr></table></div>";
und wie kann ich das in nen template system einbauen? PHP-Code: //Jetzt kommt das "Inhaltsverzeichnis",
//sprich dort steht jetzt: Seite: 1 2 3 4 5
//Wieviele Einträge gibt es überhaupt
//Wichtig! Hier muss die gleiche Abfrage sein, wie bei der Ausgabe der Daten
//also der gleiche Text wie in der Variable $abfrage, bloß das hier das LIMIT fehlt
//Sonst funktioniert die Blätterfunktion nicht richtig,
//und hier kann nur 1 Feld abgefragt werden, also id
$result = mysql_query("SELECT id FROM tabelle");
$menge = mysql_num_rows($result);
//Errechnen wieviele Seiten es geben wird
$wieviel_seiten = $menge / $eintraege_pro_seite;
//Ausgabe der Seitenlinks:
echo "<div align=\"center\" class=\"schrift_normal\"><table><tr>";
//echo "<b>Seite:</b> ";
//Ausgabe der Links zu den Seiten
for($a=0; $a < $wieviel_seiten; $a++)
{
$b = $a + 1;
$seite2 = $b * $eintraege_pro_seite; //Maximale Seite
$seite3 = $seite2 - $eintraege_pro_seite + 1; //Minimale Seite
$c = $b - 1;
$site_check = $c / 6;
//if (is_integer($site_check)) { echo('<br />'); }
if (is_integer($site_check)) {
echo('</tr><tr>');
}
//Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben
if($seite == $b)
{
echo "<td align=\"center\"><b>".$seite3."-".$seite2."</b></td>";
}
//Aus dieser Seite ist der User nicht, also einen Link ausgeben
else
{
echo "<td align=\"center\"><b><a href=\"index.php?TEMPLATE=cartoons&seite=$b\" class=\"b\">[".$seite3."-".$seite2."]</a></b></td>";
}
}
echo "</tr></table></div>";
|
| |
03.08.06, 17:30
|
#14 (permalink)
|
Registriert seit: 27.07.06 Likes: 0 | Die Frage waere wichtig!
Smarty? Fast Template? ETS?
Template System != Template System |
| |
04.08.06, 17:27
|
#15 (permalink)
| Themenstarter
Registriert seit: 21.07.06 Likes: 0 | also schon mal gesagt ich kenn mich mit templates nich so au, ich hab eins aus irgendeinem buch. es gibt zwei dateien einmal engine.inc.php und index.php
engine.inc.php PHP-Code: class SimpleTemplate
{
private $templateCode;
private $templateHtml;
const COMMENT = '/<!-- #(.+):(.+)\s+--(>)/iU';
public function __construct($html = '', $code = '')
{
$this->templateCode = $code;
$this->templateHtml = $html;
}
public function __set($prop, $value)
{
switch ($prop)
{
case 'Html':
$this->templateHtml = $value;
break;
case 'Code':
$this->templateCode = $value;
break;
}
}
public function __get($prop)
{
switch ($prop)
{
case 'Html':
return $this->templateHtml;
case 'Code':
return $this->templateCode;
}
}
public function RunTemplate()
{
if (strlen($this->templateHtml) > 0 && file_exists($this->templateHtml))
{
// Template Laden
$html = file_get_contents($this->templateHtml);
}
else
{
die ('Fehler: Vorlage konnte nicht gefunden werden. ');
}
// Wiederholungen aufdroeseln
$matches = array();
$blocksFound = preg_match_all(self::COMMENT, $html, $matches, PREG_OFFSET_CAPTURE);
if ($blocksFound)
{
$page = '';
// var_export($matches);
// 0: Array der Kommentaranfaenge
// 1: TAGs
// 2: Variablen
// 3: Ende-Offset
if (is_array($matches))
{
$startBlock = $lastStartBlock = 0;
for ($i = 0; $i < count($matches[1]); $i++)
{
$token = strtoupper($matches[1][$i][0]);
$offsetComment = (int)$matches[0][$i][1];
$offsetContent = ((int)$matches[3][$i][1]) + 1;
$variableName = $matches[2][$i][0];
switch ($token)
{
case 'REPEAT':
$startBlock = $offsetContent;
$startComment = $offsetComment;
break;
case 'ENDREPEAT':
$block = substr($html, $startBlock, $offsetComment - $startBlock);
$block = $this->repeatBlock($block, $variableName);
$len = $startComment - $lastStartBlock;
$page .= substr($html, $lastStartBlock, $len).$block;
$lastStartBlock = $offsetContent;
break;
case 'IF':
// Vor dem IF den Rest der Seite vom letzten Code ausgeben
$page .= substr($html, $lastStartBlock, $offsetComment - $lastStartBlock);
$startBlock = $offsetContent;
$startComment = $offsetComment;
break;
case 'ENDIF':
global $$variableName;
$len = $startComment - $lastStartBlock;
$lastStartBlock = $offsetContent;
if (isset($$variableName))
{
// substr($html, $lastStartBlock, $len).
$page .= substr($html, $startBlock, $offsetComment - $startBlock);
}
break;
}
}
// Rest der Seite
$page .= substr($html, $offsetContent);
}
}
else
{
// Wenn kein Code enthalten
$page = $html;
}
echo ($this->varReplace($page));
}
private function repeatBlock($block, $varName)
{
global $$varName;
$result = '';
if (is_array($$varName))
{
$this->index = 0;
if (count($$varName) > 0)
{
foreach ($$varName as $value)
{
$result .= $this->arrayReplace($block);
$this->index++;
}
}
}
return $result;
}
private $index = 0;
private function replaceArray($repl)
{
global $$repl[1];
$arr = $$repl[1];
return $arr[$this->index][$repl[2]];
}
private function replaceSkalar($repl)
{
global $$repl[1];
return $$repl[1];
}
private function arrayReplace($block)
{
$block = preg_replace_callback('/\{\$([^:}]*):(.+)\}/U', array($this, 'replaceArray'), $block);
return $block;
}
private function varReplace($block)
{
$block = preg_replace_callback('/\{\$(.+)\}/U', array($this, 'replaceSkalar'), $block);
return $block;
}
}
$__template = isset($_GET['TEMPLATE']) ? $_GET['TEMPLATE'] : '';
return new SimpleTemplate($__template);
und index.php PHP-Code: $engine = include_once('engine.inc.php');
if (!isset($_GET['TEMPLATE']))
{
$engine->Html = 'start.html';
$engine->Code = 'start.php';
}
else
{
$engine->Html = "{$_GET['TEMPLATE']}.html";
$engine->Code = "{$_GET['TEMPLATE']}.php";
}
if (strlen($engine->Code) > 0 && file_exists($engine->Code))
{
include_once($engine->Code);
}
$engine->RunTemplate();
|
| |  | | | |
| | | - Anzeige - |
| | [HaBo]
» Web, Network & Multimedia Palace
» (Web-) Design und webbasierte Sprachen
»
pager script gesucht!
| Themen-Optionen | | | | Ansicht | Linear-Darstellung |
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. | | |
|