php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.06.2005, 00:26  
Gast
 
Beiträge: n/a
Standard Blätterfunktion

<?php

# Connect zur Database
$dbname = 'xxx';
$dbhost = 'xxx';
$dbuser = 'xxx';
$dbpass = 'xxx';
mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname);

$page = ( isset($_REQUEST['page']) && (int)$_REQUEST['page'] >= 1 )
? (int)$_REQUEST['page']
: 1;

$query = "
SELECT
COUNT(*)
FROM
`members`
ORDER BY
`memberId` DESC
";
$result = mysql_query($query);
$count = mysql_result($result, 0);

$pages = ceil( $count / 10 );
if( $page > 1 ) {
echo '« ';
echo '» ';
}

for($i=1; $i<=$pages; $i++) {
if( $i != $page ) {
echo ''.$i.' ';
} else {
echo $i.' ';
}
}
$query = "
SELECT
`memberName`,
`url`,
`web`
FROM
`members`
WHERE
`kat1id` = '3'
ORDER BY
`ranking` DESC
LIMIT
".(($page-1)*10).", 10
";
$result = mysql_query($query);
while( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
echo '

Name: '.$row['memberName'].'Web: '.$row['web'].'</p>';
}

mysql_close();

?>
---------------------------------------------------------------------------------------------------------------------------------------------------------------
CREATE TABLE `members` (
`memberId` int(11) NOT NULL auto_increment,
`datum` date default NULL,
`url` varchar(255) default NULL,
`email` varchar(255) default NULL,
`web` varchar(255) default NULL,
`kat1id` int(11) default NULL,
`kat2id` int(11) default NULL,
`ranking` int(11) default NULL,
`memberName` varchar(255) default NULL,
PRIMARY KEY (`memberId`),
KEY `memberId` (`memberId`),
FULLTEXT KEY `email` (`email`)
) TYPE=MyISAM AUTO_INCREMENT=1917 ;

--------------------------------------------------------------------------------------------------------------------------------------------------------------
Also,
es sind 2000 Daten drinn,
von den 30 angezeigt werden müssen,
das macht er auch,
aber er zeigt bei der Blätterfunktion alle 200x10 mögliche Seiten an
(alle halt)
und das zerreißt das Layout,
obwohl er die 30 memberName'n ordungsgemäß nach ranking und kat1id sortiert anzeigt,
wobei ja 3 Seiten a 10 Einträge reichen sollten zeigt er 200 als Seitenanzahl an.


Kann mir hier einer weiterhelfen ? ,
auch gerne mit einer anderen Blätterfunktion !
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 12.06.2005, 00:55  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hälst du deine frage wirklich für fortgeschritten?

aber du hast glück, ich hab sowas rumliegen. ist wahrscheinlich nicht die schnellste methode, reicht mir aber meist aus.
example.php liegt bei.

http://www.axolander.de/crap/php_de/pagination.zip
axo ist offline  
Alt 12.06.2005, 01:31  
Gast
 
Beiträge: n/a
Standard Danke

Zitat:
Zitat von axo
hälst du deine frage wirklich für fortgeschritten?

aber du hast glück, ich hab sowas rumliegen. ist wahrscheinlich nicht die schnellste methode, reicht mir aber meist aus.
example.php liegt bei.

http://www.axolander.de/crap/php_de/pagination.zip
Vielen Dank,
aber ich komme mit classen nicht wirklich klar,
deshlab wollt ich solch ein einfachen nicht fortgeschrittenden Auswurf wie oben benutzen.


Wo füge ich den "Datenbankzugriffsdaten" Tabellen etc hin ?

Ich habe mir das grad einfach hochgeladen und sieht recht net aus.
Nun könntest du mir aber noch erklären wie man damit umgeht
plz

Gruß
 
Alt 12.06.2005, 01:55  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Danke

Zitat:
Zitat von Grübelmonster
Wo füge ich den "Datenbankzugriffsdaten" Tabellen etc hin ?
darum musst du dich selbst kümmern. keine fremdes skript kann erraten, was du genau willst.
du musst der klassenstruktur im prinzip nur drei parameter mitgeben:
1. anzahl der einträge insgesamt
2. anzahl der einträge pro seite
3. die aktuelle seite.
... und das ding spuckt dir eine navigation aus.

per default wird die variable 'page' als seiten-variable angenommen, du kannst aber bei generatePagination alles nach belieben konfigurieren.

Zitat:
Nun könntest du mir aber noch erklären wie man damit umgeht
example.php anschauen. bist ja schließlich ein fortgeschrittener.
axo ist offline  
Alt 12.06.2005, 13:14  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

also nochmal für alle:

das ganze geht von folgender voraussetzung aus:
1. es gibt eine tabelle oder was auch immer, die mehrere einträge beinhaltet.
2. man weiß vor dem aufruf der blätterfunktion, wie viele 'einträge' man insgesamt hat.
3. die klassen machen NICHTS an der datenbank. sie bekommen nur ein paar startparameter, um eine navigation zu generieren. um das auslesen der einträge aus der datenbank muss man sich immer noch selbst kümmern.

also noch ein beispiel:

angenommen, man hat ein gästebuch mit 3 posts:

PHP-Code:
fritz hallo welt
franz du da 
dong hier 
dann kann man das skript folgendermaßen initialisieren:

PHP-Code:
<?php
$sql 
'SELECT COUNT(*) as num FROM gaestebuch';
$qry mysql_query($sql);
list(
$numRows) = mysql_fetch_row($qry); // hier haben wir also die anzahl der einträge insgesamt, in unserem Fall also 3

/* $numRows = 3 */

// dann initialisieren wir $perPage: die anzahl der einträge, die pro seite angezeigt werden soll:
$perPage 2;

// dann gucken, ob über GET ein seitenaufruf gekommen ist.
// jetzt mal ohne ternären operator, damit's einfacher zu verstehen ist.
// beim ersten aufruf ist $_GET['seite'] natürlich leer, also ist
if(isset($_GET['seite'])) { 
  
$meineSeite = (int)$_GET['seite']; // das hier wahr
} else {
 
$meineSeite 0;
}
// und $meineSeite = 0;


$urlPerPage = & new UrlPerPage();

$pag = & $urlPerPage -> generatePagination($numRows$perPage$actualPage$meineSeite'seite');

// $pag ist jetzt ein objekt von UrlPagination und hat diverse felder, die wichtigsten sind aber



echo $pag -> navigation// hier wird die navigation angezeigt
// anzeige: Seite(n) (2): [1] 2 <- als link, die 2 hat dann auch gleich 
// &seite=1 , so dass beim  nächsten seitenaufruf die seite 
// aufgerufen wird.
// und hier fragen wir die einträge ab, die auf der seite kommen sollen:

$sql 'SELECT foo,bar FROM gaestebuch LIMIT  ' $pag -> start ', ' $perPage;
// erster seitenaufruf:
// SELECT foo,bar FROM gaestebuch LIMIT 0,2
// zweiter seitenaufruf:
// SELECT foo,bar FROM gaestebuch LIMIT 2,2

// und dann mit 
while($data mysql_fetch_assoc()) 
// die daten ausgeben.






?>
axo ist offline  
Alt 12.06.2005, 13:42  
Gast
 
Beiträge: n/a
Standard

http://www.tutorials.de/forum271
ich schaue mir grad die video's an und hoffe danach etwas schlauer zu sein.

bis später dann .....

Gruß und Dank
 
Alt 12.06.2005, 21:11  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Der Beitrag wurde verschoben, wegen...
... Postings im falschen Forum. Bitte beim nächsten Mal darauf achten..
... der Tatsache, dass die Suchfunktion (und google) auch was feines ist.

Bemerkung:
Die gestellte Frage entspricht nicht dem Wissensstand eines/einer Fortgeschrittenen.

moved to PHP - Anfänger


Und zur Frage:
Blätterfunktion mit MySQL
imported_Ben ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
blätterfunktion suchfunktion, (http://www.tutorials.de/forum271

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:23 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.