php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.11.2008, 10:53  
Neuer Benutzer
 
Registriert seit: 12.09.2008
Beiträge: 11
red1854 befindet sich auf einem aufstrebenden Ast
Standard Brauche Hilfe bei "Seiten-Blätter-Funktion"

Hallo,

ich habe mich an einer Seiten-Blätter-Funktion versucht und das ist rausgekommen...
Vielleicht könntet ihr mal drüber schauen und mir Verbesserungsvorschläge posten?
Bis jetzt habe ich alles nur local getestet und so wie es aussieht, dauert die Ausgabe schon länger. Liegts am Code?

Ich hoffe ihr versteht den Code?

PHP-Code:
<?php 
$db 
mysql_connect("localhost","root","hallo");
$mysql_select_db = @mysql_select_db("test");

$ds_sum mysql_query("SELECT * FROM test");
$eintraege_insg mysql_num_rows($ds_sum);

echo 
"<p><b>" $eintraege_insg "</b> Einträge in oder Datenbank.<br>";

$eintraege 3// Einträge pro Seite.

$seitenanzahl ceil($eintraege_insg/$eintraege);

echo 
"Ausgabe auf <b>" $seitenanzahl "</b> Seiten.</p>";

echo 
"<p>Ausgabe:</p>";

if (isset(
$_GET['seite'])) {

    
$start = ($_GET['seite'] * $eintraege) - $eintraege;

    
$ds mysql_query("SELECT * FROM test LIMIT $start,$eintraege");
    while (
$row mysql_fetch_assoc($ds)) {
        echo 
"<p><b>" $row['name'] . " - " $row['titel'] . "</b></p>";
    }
    
    echo 
"Seite: ";
    for(
$i 1$i < ($seitenanzahl +1); $i++) {
        echo 
"<a href='seiten.php?seite=" $i "'>" $i "</a> ";
    }

} else {
    
    
$ds mysql_query("SELECT * FROM test LIMIT 0,$eintraege");
    while (
$row mysql_fetch_assoc($ds)) {
        echo 
"<p><b>" $row['name'] . " - " $row['titel'] . "</b></p>";
    }

    echo 
"Seite: ";
    for(
$i 1$i < ($seitenanzahl +1); $i++) {
        echo 
"<a href='seiten.php?seite=" $i "'>" $i "</a> ";
    }
}
?>
red1854 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 22.11.2008, 11:14  
Erfahrener Benutzer
 
Benutzerbild von tomtaz
 
Registriert seit: 17.06.2008
Beiträge: 1.762
PHP-Kenntnisse:
Fortgeschritten
tomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig nett
tomtaz eine Nachricht über ICQ schicken tomtaz eine Nachricht über Skype™ schicken
Standard

Also als erstes würde ich hier Mysql Zugangsdaten entfernen...

Dann würde ich deine Abfragen etwas modifizieren, sodass du nur felder selektierst die du auch wirklich brauchst:
PHP-Code:
<?php 
$db 
mysql_connect("localhost","****","****");
$mysql_select_db = @mysql_select_db("test");

$ds_sum mysql_query("SELECT COUNT(*) FROM test") or die ( mysql_error( ) );
list( 
$eintraege_insg ) = mysql_fetch_assoc($ds_sum);

echo 
"<p><b>" $eintraege_insg "</b> Einträge in oder Datenbank.<br>";

$eintraege 3// Einträge pro Seite.

$seitenanzahl ceil($eintraege_insg/$eintraege);

echo 
"Ausgabe auf <b>" $seitenanzahl "</b> Seiten.</p>";

echo 
"<p>Ausgabe:</p>";

if (isset(
$_GET['seite'])) {

    
$start = ($_GET['seite'] * $eintraege) - $eintraege;

    
$ds mysql_query("SELECT name, titel FROM test LIMIT $start,$eintraege") or die ( mysql_error( ) );
    while (
$row mysql_fetch_assoc($ds)) {
        echo 
"<p><b>" $row['name'] . " - " $row['titel'] . "</b></p>";
    }
    
    echo 
"Seite: ";
    for(
$i 1$i < ($seitenanzahl +1); $i++) {
        echo 
"<a href='seiten.php?seite=" $i "'>" $i "</a> ";
    }

} else {
    
    
$ds mysql_query("SELECT name, titel FROM test LIMIT 0,$eintraege");
    while (
$row mysql_fetch_assoc($ds)) {
        echo 
"<p><b>" $row['name'] . " - " $row['titel'] . "</b></p>";
    }

    echo 
"Seite: ";
    for(
$i 1$i < ($seitenanzahl +1); $i++) {
        echo 
"<a href='seiten.php?seite=" $i "'>" $i "</a> ";
    }
}
?>
So dürfte das schon etwas performanter sein....
__________________
Mfg Tomtaz
"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..."
tomtaz ist offline  
Alt 22.11.2008, 14:39  
Neuer Benutzer
 
Registriert seit: 12.09.2008
Beiträge: 11
red1854 befindet sich auf einem aufstrebenden Ast
Standard

Das ist soweit klar, danke!
Mir gehts in erster Linie um die Verzweigung und die Ausgabe. Ob sich da etwas optimieren lässt?
red1854 ist offline  
Alt 22.11.2008, 15:10  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

1/ Wie taz geschrieben hat - statt mysql_num_rows Sql's COUNT verwenden
2/ gibts keinen wirklichen Unterschied der beiden if Blöcke. Das geht genausogut in einem, wenn Du im Limit im $start verwendest und die Variable entsprechend berechnest.
3/ solltest Du immer max (0, $start) verwenden. Genauso $seite = min ($seite , $seitenanzahl)
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 22.11.2008, 16:25  
Neuer Benutzer
 
Registriert seit: 12.09.2008
Beiträge: 11
red1854 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
2/ gibts keinen wirklichen Unterschied der beiden if Blöcke. Das geht genausogut in einem, wenn Du im Limit im $start verwendest und die Variable entsprechend berechnest.
3/ solltest Du immer max (0, $start) verwenden. Genauso $seite = min ($seite , $seitenanzahl)
Wäre echt nett, wenn du mir die zwei Punkte näher erklären könntest!
red1854 ist offline  
Alt 22.11.2008, 16:57  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zu 3/
Wenn ich jetzt Seite 3000 oder Seite -5 per URL übergebe, sollte sinnvollerweise der Wert korrigiert werden auf den größt- bzw. kleinstmöglichen Wert für $_GET['seite']. SOnst wird $start falsch berechnet und falsche oder gar keine Datensätze ausgegeben.

zu 2/
Die einzigen Unterschiede liegen hier:
$start = ($_GET['seite'] * $eintraege) - $eintraege;
und
LIMIT $start,$eintraege bzw. LIMIT 0,$eintraege

LIMIT 0 ist aber genaugenommen nur der Sonderfall von LIMIT $start,$eintraege, wenn $start == 0 ist.
Sonst sind beide Blöcke identisch. Wenn Du Deine $start-Berechnung aslo so anpasst, dass sie im Fall NOT isset($_GET['seite']) eine 0 liefert, kannst Du Dir die If-Struktur sparen und damit die Code-Doppelung.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 23.11.2008, 16:38  
Neuer Benutzer
 
Registriert seit: 12.09.2008
Beiträge: 11
red1854 befindet sich auf einem aufstrebenden Ast
Standard

Hab' da doch noch eine Frage zu mysql_num_rows.
Sollte man COUNT auch verwenden, wenn die Abfrage später noch anderweitig verwendet wird, so wie z.B. hier:

PHP-Code:
$select query("SELECT ...");
$sum mysql_num_rows($select);
while (
$ds mysql_fetch_assoc($select)) { ... 
So könnte man sich doch eine SELECT Abfrage sparen, oder?
red1854 ist offline  
Alt 23.11.2008, 16:47  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ja. Kann man. Allerdings wird man selten alle Datensätze gleichzeitig herunterladen. Wenn DU LIMIT benutzt wird aber der Count der angeforderten Datensätze geliefert.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch 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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Brauche hilfe mik08 PHP Tipps 2008 10 27.07.2008 16:17
Datenbanktabelle erstellen - brauche Hilfe Raccoon PHP Tipps 2008 1 14.06.2008 11:03
Ich brauche eure Hilfe beim rechnen... GELight PHP Tipps 2006 6 07.04.2006 14:20
Ich brauche eure Hilfe PHP Tipps 2006 22 19.02.2006 19:57
PHP <--> MySQL | Brauche Hilfe ahnungsloser Datenbanken 18 16.02.2006 21:49
brauche eben hilfe PHP Tipps 2007 2 26.11.2005 08:36
brauche sehr schnell und dringend hilfe Beitragsarchiv 13 24.10.2005 13:11
HILFE ! Brauche ganz dringend hilfe! PHP Tipps 2005-2 2 10.10.2005 23:08
brauche hilfe!!! marcelglaeser HTML, Usability und Barrierefreiheit 0 03.10.2005 20:01
Hilfe, Ich brauche hilfe! Kevin PHP Tipps 2005-2 2 27.09.2005 19:31
BRAUCHE DRINGENDE HILFE !!! PHP Tipps 2005-2 2 06.08.2005 19:45
Brauche Hilfe bei preg_match() PHP Tipps 2005-2 2 23.07.2005 22:44
Brauche dringend Hilfe, Aufgabe fürs Studium (Upload-Script trivial Beitragsarchiv 23 23.06.2005 16:25
[Erledigt] Brauche dringend Hilfe PHP Tipps 2005 19 01.02.2005 20:21
Brauche Hilfe PHP Tipps 2005 5 11.01.2005 15:30

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php seiten blättern, seiten blättern php, html seiten blättern, php seitenweise blättern, http://www.php.de/php-tipps-2008/49239-brauche-hilfe-bei-seiten-blaetter-funktion.html, seitenweise blättern php, html buch blättern, php seite blättern, seite blättern php, seiten blättern html, php seitenblätter funktion, seitenblätter funktion, buch blättern html, php seitenblätter, seiten blätter, blätterfunktion php, seitenblätter, seiten umblättern php, html seite blättern, blättern mit limit php mysql

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:25 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