php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.12.2010, 18:45  
Gesperrt
 
Registriert seit: 03.12.2010
Beiträge: 860
PHP-Kenntnisse:
Anfänger
coola wird schon bald berühmt werden
Standard bestimmte Seite anzeigen

Hallo, Leute!

Ich würde gerne ein PHP-Programm auf 1 SELECT minimieren.
Es geht um folgendes:

In einer DB-Tabelle gibt es mehrere Einträge. Es sollen aber nicht alle Einträge auf einmal, sondern immer nur z. B. 10 Stück angezeigt werden. Man soll dann die Möglichkeit haben zu blättern.

Es soll aber auch folgendes möglich sein:
Über die URL wird z. B. übergeben:
index.php?id=13

Diese ID ist eine DB-ID.
Es sollen dann die Datensätze jener Seite angezeigt werden, auf denen sich auch der Datensatz mit dieser ID befindet.

Würde man also pro Seite maximal 10 Datensätze anzeigen, würde man die ID 13 auf der 2ten Seite (bei 1 beginnend) finden.

Aktuell schaut es so aus (Pseudocode):
Code:
$id=$_GET['id'];
$ok=false;

SELECT COUNT(id) AS anz
   FROM tabelle
   WHERE id<= $id

if($anz>0)
{
   // $id befindet sich auf Seite (beginnend bei 0):
   $seite = ceil($anz/$maxAnzProSeite)-1;

   SELECT id
      FROM tabelle
      LIMIT $seite*$maxAnzProSeite , $maxAnzProSeite

   $ok=true;
}
else
{
   SELECT id
      FROM tabelle
      LIMIT 0, $maxAnzProSeite
}
Kann man das vielleicht auch in einem einzigen SELECT machen?

EDIT:

Ich befürchte, das ist nur möglich, wenn man LIMIT etwas anderes als eine Konstante übergibt, was aber wohl nicht möglich ist.

http://dev.mysql.com/doc/refman/5.0/en/select.html:

Zitat:
The LIMIT clause can be used to constrain the number of rows returned by the SELECT statement. LIMIT takes one or two numeric arguments, which must both be nonnegative integer constants (except when using prepared statements).

Geändert von coola (06.12.2010 um 19:09 Uhr).
coola ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 07.12.2010, 12:21  
Erfahrener Benutzer
 
Registriert seit: 13.05.2009
Beiträge: 1.164
PHP-Kenntnisse:
Fortgeschritten
dennis81 befindet sich auf einem aufstrebenden Ast
Standard

Wenn du die Seiten mit 0 zu zählen beginnst, sollte das alles überhaupt kein Problem sein.
PHP-Code:
<?php
$entriesOnPage 
10//oder via define

$page = isset($_GET['page']) ? $_GET['page'] : 0;

$limitStart $page $entriesOnPage;

$query "SELECT
            id
          FROM
            tabelle
          LIMIT
            {$limitStart}, {$entriesOnPage}
"
;

//Query ausführen.
(Ansonsten musst du $limitStart einfach so berechnen: $limitStart = ($page-1) * $entriesOnPage; )
__________________
Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)
Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)
dennis81 ist offline   Mit Zitat antworten
Alt 07.12.2010, 12:46  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Hier
http://www.php.de/scriptboerse/74048...gorithmus.html (Paginator Algorithmus)
kannst du dir anschauen, wie man das machen kann, bzw. dir die Lösung gleich runterladen.
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Alt 07.12.2010, 13:47  
Gesperrt
 
Registriert seit: 03.12.2010
Beiträge: 860
PHP-Kenntnisse:
Anfänger
coola wird schon bald berühmt werden
Standard

Habe mein Anliegen wahrscheinlich nicht gut formuliert. Ich versuche es anders.

In meinem zu Beginn reingeposteten Code gibt es 3 SELECTs. Mich würde interessieren, ob man diese SELECTs zu einem einzigen SELECT zusammenfassen kann.
coola ist offline   Mit Zitat antworten
Alt 07.12.2010, 15:05  
Erfahrener Benutzer
 
Registriert seit: 13.05.2009
Beiträge: 1.164
PHP-Kenntnisse:
Fortgeschritten
dennis81 befindet sich auf einem aufstrebenden Ast
Standard

Die letzten beiden kannst du auf jedem Fall zu einem zusammenfassen (siehe #2). Der erste lässt sich nicht unbedingt vermeiden. Allerdings ist ein einfacher count() auch nicht wirklich teuer.
__________________
Es ist schon alles gesagt! Nur noch nicht von allen! (Karl Valentin)
Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)
dennis81 ist offline   Mit Zitat antworten
Alt 08.12.2010, 13:07  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Ich verstehe das noch nicht wirklich so ganz was du willst. Darum frage ich nun mal. Du willst also alle Datensätze auslesen die kleiner gleich einer gewissen ID sind. So und wenn da z.B. 46 Datensätze raus kommen sollen die Datensätze auf 5 Seitenaufgeteilt werden. Richtig?

Dann kannst du dir die ganze IF Abfrage auch sparen und das ganz Limit Zeugs und die Where Clausel in eine Select Abfrage stecken.

Mein Tipp aber schreibe dir eine Funktion zum blättern, oder besser eine Klasse, da bist du noch flexibler und sparst noch mehr Codeoverhead.

Gruß Litter
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline   Mit Zitat antworten
Antwort


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
Deutsche Umlaute korrekt auf Seite anzeigen Klabund PHP Tipps 2010 4 19.09.2010 12:33
[Erledigt] Seite erst nach Aufbau anzeigen marcial PHP Tipps 2010 15 09.09.2010 00:58
[Erledigt] Nur bestimmte Ordner anzeigen 9999 PHP Tipps 2010 5 10.04.2010 15:58
query_string in extra seite anzeigen DKuhn PHP Tipps 2009 12 27.10.2009 16:04
Login Seite anzeigen bzw. Inhalt ausblenden und Tabelle des Users zeigen Phamo PHP Tipps 2009 14 06.02.2009 15:06
[Erledigt] php mysql detail Seite anzeigen über link Rilana PHP Tipps 2008 6 30.11.2008 17:34
Krieg kein Objekt zurück auf includeter Seite NONNNNN PHP Tipps 2008 5 28.03.2008 19:25
seite anzeigen anno PHP Tipps 2008 4 11.10.2007 15:16
Variable oberhalb des Skripts anzeigen, wenn Seite an sich.. NetLook PHP Tipps 2006 6 08.05.2006 11:04
Inhalt aus der DB auf einer externen Seite anzeigen. Bonaparte PHP Tipps 2006 11 09.02.2006 22:56
Datensätze anzeigen, die eine bestimmte Initiale haben KingDario Datenbanken 4 26.01.2006 08:45
Bilder nur von einer Seite aus anzeigen Beitragsarchiv 0 13.11.2004 18:41
[Erledigt] Cookie - Seite anzeigen / nicht anzeigen PHP Tipps 2004-2 2 11.11.2004 15:59
Ip's datum und uhrzeit auf der seite anzeigen PHP Tipps 2004 2 18.10.2004 10:41
Bestimmte aktion bei schliessen der Seite bei Login Corvin PHP Tipps 2004 5 20.07.2004 11:24

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
falls bestimmte seite zeigen php, php bestimmte seite aufrufen, php auf bestimmte seite, php für eine bestimmte seite, vbulletin bestimmte foren auf extra page anzeigen, php inhalte nur auf bestimmten seiten anzeigen, php nur auf bestimmter seite anzeigen, php bei bestimmter seite inhalt anzeigen, php seiten mit id aufrufen, php \funktion zum blättern\, php wenn eine bestimmte seite, eine bestimmte klasse einblenden in abhängigkeit von seite php, php bestimmte id anzeigen

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